{"id":"a05ca87e22e911079151f141240bcee2","_format":"hh-sol-build-info-1","solcVersion":"0.8.13","solcLongVersion":"0.8.13+commit.abaa5c0e","input":{"language":"Solidity","sources":{"contracts/TokenPaymaster.sol":{"content":"// SPDX-License-Identifier:MIT\npragma solidity ^0.8.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport \"@opengsn/contracts/src/forwarder/IForwarder.sol\";\nimport \"@opengsn/contracts/src/BasePaymaster.sol\";\nimport \"@opengsn/contracts/src/utils/GsnTypes.sol\";\n\nimport \"@openzeppelin/contracts/utils/math/Math.sol\";\n\nimport \"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol\"; \n\n\n/**\n * A Token-based paymaster.\n * - each request is paid for by the caller.\n * - acceptRelayedCall - verify the caller can pay for the request in tokens.\n * - preRelayedCall - pre-pay the maximum possible price for the tx\n * - postRelayedCall - refund the caller for the unused gas\n */\ncontract TokenPaymaster is BasePaymaster {\n\n    function versionPaymaster() external override virtual view returns (string memory){\n        return \"2.2.0+opengsn.token.ipaymaster\";\n    }\n\n    \n    // uint256 public gasCharge = 700000;\n    uint256 public gasUsedByPost = 80000; //gas used on _postRelayedcall\n    uint256 public minGas = 400000;\n    uint256 public minBalance = 0.8 ether;\n    uint256 private _fee;\n    address public target;\n    address private _paymentToken;\n\n    bool private _pause;\n\n    IUniswapV2Router02 private immutable _router;\n    mapping(address => bool) private _isTokenWhitelisted;\n\n    constructor(\n        address uniswapRouter, \n        address forwarder, \n        address paymentToken,\n        uint256 fee,\n        IRelayHub hub\n    ) {\n        _router = IUniswapV2Router02(uniswapRouter);\n        _paymentToken = paymentToken;\n        _fee = fee;\n        setTrustedForwarder(forwarder);\n        setRelayHub(hub);\n    }\n\n    function setMinBalance(uint256 _minBalance) external onlyOwner {\n        require(_minBalance > 0, \"Wrong min balance\");\n        minBalance = _minBalance;\n    }\n\n    function setPaymentToken(address paymentToken) external onlyOwner {\n        require(paymentToken != address(0), \"Wrong Payment Token\");\n        _paymentToken = paymentToken;\n    }\n\n    function setFee(uint256 fee) external onlyOwner {\n        _fee = fee;\n    }\n\n    function whitelistToken(address token, bool whitelist) external onlyOwner {\n        require(token != address(0), \"Token address is 0\");\n        _isTokenWhitelisted[token] = whitelist;\n    }\n\n    function isTokenWhitelisted(address token) external view returns(bool) {\n        return _isTokenWhitelisted[token];\n    }\n\n    function setGasUsedByPost(uint256 _gasUsedByPost) external onlyOwner {\n        gasUsedByPost = _gasUsedByPost;\n    }\n\n    function setMinGas(uint256 _minGas) external onlyOwner {\n        minGas = _minGas;\n    }\n\n    function setTarget(address _target) external onlyOwner {\n        target = _target;\n    }\n\n    function togglePause() external onlyOwner {\n        _pause = !_pause;\n    }\n\n    function getTokenToEthOutput(uint256 amountIn, address[] memory path) public view returns (uint256) {\n        uint256 amountOut = _router.getAmountsOut(amountIn, path)[1];\n        return amountOut;\n    }\n\n    function _getPath(address token1, address token2) private pure returns(address[] memory path) {\n        path = new address[](2);\n        path[0] = token1;\n        path[1] = token2;\n    }\n\n    function getPaymentData() external view returns(address, uint256) {\n        return (_paymentToken, _fee);\n    }\n\n     function preRelayedCall(\n        GsnTypes.RelayRequest calldata relayRequest,\n        bytes calldata /*signature*/,\n        bytes calldata /*approvalData*/,\n        uint256 maxPossibleGas\n    )\n    external\n    override\n    virtual\n    returns (bytes memory context, bool revertOnRecipientRevert) {\n        _verifyForwarder(relayRequest);\n        require(!_pause, \"Swap paused\");\n        IForwarder.ForwardRequest calldata request = relayRequest.request;\n        GsnTypes.RelayData memory relayData = relayRequest.relayData;\n\n        require(request.to == target, \"Unknown target\");\n\n        (address tokenAddress, uint256 amount) = abi.decode(request.data[4:], (address, uint256));\n        require(_isTokenWhitelisted[tokenAddress], \"Token not whitelisted\");\n\n        address payer = request.from;\n\n        IERC20 paymentToken = IERC20(_paymentToken);\n\n        if(_paymentToken == tokenAddress) {\n            require(paymentToken.allowance(payer, target) >= _fee + amount, \"Fee+amount: Not enough allowance\");\n            require(paymentToken.balanceOf(payer) >= _fee + amount, \"Fee+amount: Not enough balance\");\n        } else {\n            require(paymentToken.allowance(payer, target) >= _fee, \"Fee: Not enough allowance\");\n            require(paymentToken.balanceOf(payer) >= _fee, \"Fee: Not enough balance\");\n\n            IERC20 token = IERC20(tokenAddress);\n            require(token.allowance(payer, target) >= amount, \"Not enough allowance\");\n            require(paymentToken.balanceOf(payer) >= amount, \"Not enough balance\");\n        }\n\n        address[] memory path = _getPath(tokenAddress, _router.WETH());\n        uint256 amountOut = getTokenToEthOutput(amount, path);\n\n        uint256 ethPrecharge = relayHub.calculateCharge(maxPossibleGas, relayData);\n    \n        require(amountOut > ethPrecharge, \"Not enough to pay for tx\");\n\n        require(request.gas >= minGas, \"Not enough gas\");\n        return (abi.encode(request.from, ethPrecharge, amountOut), true);\n    }\n\n    function postRelayedCall(\n        bytes calldata context,\n        bool success,\n        uint256 gasUseWithoutPost,\n        GsnTypes.RelayData calldata relayData\n    )\n    external\n    override\n    virtual\n    relayHubOnly {\n        \n        require(success, \"No success\");\n        (address payer, uint256 ethPrecharge, uint256 amountOut) = abi.decode(context, (address, uint256, uint256));\n        IRelayHub _relayHub = relayHub;\n        uint256 ethActualCharge = _relayHub.calculateCharge(gasUseWithoutPost + gasUsedByPost, relayData);\n        uint256 hubBalance = relayHub.balanceOf(address(this));\n\n        uint256 totalCharge = ethActualCharge;\n        uint256 refund = amountOut - totalCharge;\n        if(hubBalance - refund < minBalance) {\n            totalCharge = ethPrecharge;\n            refund = amountOut - totalCharge;\n        }\n        _relayHub.withdraw(refund, payable(payer));\n    }\n\n}\n"},"@opengsn/contracts/src/BasePaymaster.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-only\npragma solidity >=0.7.6;\npragma abicoder v2;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"./utils/GsnTypes.sol\";\nimport \"./interfaces/IPaymaster.sol\";\nimport \"./interfaces/IRelayHub.sol\";\nimport \"./utils/GsnEip712Library.sol\";\nimport \"./forwarder/IForwarder.sol\";\n\n/**\n * Abstract base class to be inherited by a concrete Paymaster\n * A subclass must implement:\n *  - preRelayedCall\n *  - postRelayedCall\n */\nabstract contract BasePaymaster is IPaymaster, Ownable {\n\n    IRelayHub internal relayHub;\n    address private _trustedForwarder;\n\n    function getHubAddr() public override view returns (address) {\n        return address(relayHub);\n    }\n\n    //overhead of forwarder verify+signature, plus hub overhead.\n    uint256 constant public FORWARDER_HUB_OVERHEAD = 50000;\n\n    //These parameters are documented in IPaymaster.GasAndDataLimits\n    uint256 constant public PRE_RELAYED_CALL_GAS_LIMIT = 100000;\n    uint256 constant public POST_RELAYED_CALL_GAS_LIMIT = 110000;\n    uint256 constant public PAYMASTER_ACCEPTANCE_BUDGET = PRE_RELAYED_CALL_GAS_LIMIT + FORWARDER_HUB_OVERHEAD;\n    uint256 constant public CALLDATA_SIZE_LIMIT = 10500;\n\n    function getGasAndDataLimits()\n    public\n    override\n    virtual\n    view\n    returns (\n        IPaymaster.GasAndDataLimits memory limits\n    ) {\n        return IPaymaster.GasAndDataLimits(\n            PAYMASTER_ACCEPTANCE_BUDGET,\n            PRE_RELAYED_CALL_GAS_LIMIT,\n            POST_RELAYED_CALL_GAS_LIMIT,\n            CALLDATA_SIZE_LIMIT\n        );\n    }\n\n    // this method must be called from preRelayedCall to validate that the forwarder\n    // is approved by the paymaster as well as by the recipient contract.\n    function _verifyForwarder(GsnTypes.RelayRequest calldata relayRequest)\n    public\n    view\n    {\n        require(address(_trustedForwarder) == relayRequest.relayData.forwarder, \"Forwarder is not trusted\");\n        GsnEip712Library.verifyForwarderTrusted(relayRequest);\n    }\n\n    /*\n     * modifier to be used by recipients as access control protection for preRelayedCall & postRelayedCall\n     */\n    modifier relayHubOnly() {\n        require(msg.sender == getHubAddr(), \"can only be called by RelayHub\");\n        _;\n    }\n\n    function setRelayHub(IRelayHub hub) public onlyOwner {\n        relayHub = hub;\n    }\n\n    function setTrustedForwarder(address forwarder) public virtual onlyOwner {\n        _trustedForwarder = forwarder;\n    }\n\n    function trustedForwarder() public virtual view override returns (address){\n        return _trustedForwarder;\n    }\n\n\n    /// check current deposit on relay hub.\n    function getRelayHubDeposit()\n    public\n    override\n    view\n    returns (uint) {\n        return relayHub.balanceOf(address(this));\n    }\n\n    // any money moved into the paymaster is transferred as a deposit.\n    // This way, we don't need to understand the RelayHub API in order to replenish\n    // the paymaster.\n    receive() external virtual payable {\n        require(address(relayHub) != address(0), \"relay hub address not set\");\n        relayHub.depositFor{value:msg.value}(address(this));\n    }\n\n    /// withdraw deposit from relayHub\n    function withdrawRelayHubDepositTo(uint amount, address payable target) public onlyOwner {\n        relayHub.withdraw(amount, target);\n    }\n}\n"},"@opengsn/contracts/src/forwarder/IForwarder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-only\npragma solidity >=0.7.6;\npragma abicoder v2;\n\ninterface IForwarder {\n\n    struct ForwardRequest {\n        address from;\n        address to;\n        uint256 value;\n        uint256 gas;\n        uint256 nonce;\n        bytes data;\n        uint256 validUntil;\n    }\n\n    event DomainRegistered(bytes32 indexed domainSeparator, bytes domainValue);\n\n    event RequestTypeRegistered(bytes32 indexed typeHash, string typeStr);\n\n    function getNonce(address from)\n    external view\n    returns(uint256);\n\n    /**\n     * verify the transaction would execute.\n     * validate the signature and the nonce of the request.\n     * revert if either signature or nonce are incorrect.\n     * also revert if domainSeparator or requestTypeHash are not registered.\n     */\n    function verify(\n        ForwardRequest calldata forwardRequest,\n        bytes32 domainSeparator,\n        bytes32 requestTypeHash,\n        bytes calldata suffixData,\n        bytes calldata signature\n    ) external view;\n\n    /**\n     * execute a transaction\n     * @param forwardRequest - all transaction parameters\n     * @param domainSeparator - domain used when signing this request\n     * @param requestTypeHash - request type used when signing this request.\n     * @param suffixData - the extension data used when signing this request.\n     * @param signature - signature to validate.\n     *\n     * the transaction is verified, and then executed.\n     * the success and ret of \"call\" are returned.\n     * This method would revert only verification errors. target errors\n     * are reported using the returned \"success\" and ret string\n     */\n    function execute(\n        ForwardRequest calldata forwardRequest,\n        bytes32 domainSeparator,\n        bytes32 requestTypeHash,\n        bytes calldata suffixData,\n        bytes calldata signature\n    )\n    external payable\n    returns (bool success, bytes memory ret);\n\n    /**\n     * Register a new Request typehash.\n     * @param typeName - the name of the request type.\n     * @param typeSuffix - any extra data after the generic params.\n     *  (must add at least one param. The generic ForwardRequest type is always registered by the constructor)\n     */\n    function registerRequestType(string calldata typeName, string calldata typeSuffix) external;\n\n    /**\n     * Register a new domain separator.\n     * The domain separator must have the following fields: name,version,chainId, verifyingContract.\n     * the chainId is the current network's chainId, and the verifyingContract is this forwarder.\n     * This method is given the domain name and version to create and register the domain separator value.\n     * @param name the domain's display name\n     * @param version the domain/protocol version\n     */\n    function registerDomainSeparator(string calldata name, string calldata version) external;\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `from` to `to` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) external returns (bool);\n}\n"},"@opengsn/contracts/src/utils/GsnTypes.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../forwarder/IForwarder.sol\";\n\ninterface GsnTypes {\n    /// @notice gasPrice, pctRelayFee and baseRelayFee must be validated inside of the paymaster's preRelayedCall in order not to overpay\n    struct RelayData {\n        uint256 gasPrice;\n        uint256 pctRelayFee;\n        uint256 baseRelayFee;\n        address relayWorker;\n        address paymaster;\n        address forwarder;\n        bytes paymasterData;\n        uint256 clientId;\n    }\n\n    //note: must start with the ForwardRequest to be an extension of the generic forwarder\n    struct RelayRequest {\n        IForwarder.ForwardRequest request;\n        RelayData relayData;\n    }\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    enum Rounding {\n        Down, // Toward negative infinity\n        Up, // Toward infinity\n        Zero // Toward zero\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a >= b ? a : b;\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a < b ? a : b;\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds up instead\n     * of rounding down.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b - 1) / b can overflow on addition, so we distribute.\n        return a == 0 ? 0 : (a - 1) / b + 1;\n    }\n\n    /**\n     * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n     * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n     * with further edits by Uniswap Labs also under MIT license.\n     */\n    function mulDiv(\n        uint256 x,\n        uint256 y,\n        uint256 denominator\n    ) internal pure returns (uint256 result) {\n        unchecked {\n            // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n            // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n            // variables such that product = prod1 * 2^256 + prod0.\n            uint256 prod0; // Least significant 256 bits of the product\n            uint256 prod1; // Most significant 256 bits of the product\n            assembly {\n                let mm := mulmod(x, y, not(0))\n                prod0 := mul(x, y)\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n            }\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (prod1 == 0) {\n                return prod0 / denominator;\n            }\n\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\n            require(denominator > prod1);\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [prod1 prod0].\n            uint256 remainder;\n            assembly {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                prod1 := sub(prod1, gt(remainder, prod0))\n                prod0 := sub(prod0, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n            // See https://cs.stackexchange.com/q/138556/92363.\n\n            // Does not overflow because the denominator cannot be zero at this stage in the function.\n            uint256 twos = denominator & (~denominator + 1);\n            assembly {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [prod1 prod0] by twos.\n                prod0 := div(prod0, twos)\n\n                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from prod1 into prod0.\n            prod0 |= prod1 * twos;\n\n            // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n            // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv = 1 mod 2^4.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n            // in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2^8\n            inverse *= 2 - denominator * inverse; // inverse mod 2^16\n            inverse *= 2 - denominator * inverse; // inverse mod 2^32\n            inverse *= 2 - denominator * inverse; // inverse mod 2^64\n            inverse *= 2 - denominator * inverse; // inverse mod 2^128\n            inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n            // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n            // is no longer required.\n            result = prod0 * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(\n        uint256 x,\n        uint256 y,\n        uint256 denominator,\n        Rounding rounding\n    ) internal pure returns (uint256) {\n        uint256 result = mulDiv(x, y, denominator);\n        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n            result += 1;\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the square root of a number. It 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        // 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)`.\n        // We also know that `k`, the position of the most significant bit, is such that `msb(a) = 2**k`.\n        // This gives `2**k < a <= 2**(k+1)` → `2**(k/2) <= sqrt(a) < 2 ** (k/2+1)`.\n        // Using an algorithm similar to the msb conmputation, we are able to compute `result = 2**(k/2)` which is a\n        // good first aproximation of `sqrt(a)` with at least 1 correct bit.\n        uint256 result = 1;\n        uint256 x = a;\n        if (x >> 128 > 0) {\n            x >>= 128;\n            result <<= 64;\n        }\n        if (x >> 64 > 0) {\n            x >>= 64;\n            result <<= 32;\n        }\n        if (x >> 32 > 0) {\n            x >>= 32;\n            result <<= 16;\n        }\n        if (x >> 16 > 0) {\n            x >>= 16;\n            result <<= 8;\n        }\n        if (x >> 8 > 0) {\n            x >>= 8;\n            result <<= 4;\n        }\n        if (x >> 4 > 0) {\n            x >>= 4;\n            result <<= 2;\n        }\n        if (x >> 2 > 0) {\n            result <<= 1;\n        }\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        uint256 result = sqrt(a);\n        if (rounding == Rounding.Up && result * result < a) {\n            result += 1;\n        }\n        return result;\n    }\n}\n"},"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol":{"content":"pragma solidity >=0.6.2;\n\nimport './IUniswapV2Router01.sol';\n\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\n    function removeLiquidityETHSupportingFeeOnTransferTokens(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline\n    ) external returns (uint amountETH);\n    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline,\n        bool approveMax, uint8 v, bytes32 r, bytes32 s\n    ) external returns (uint amountETH);\n\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external;\n    function swapExactETHForTokensSupportingFeeOnTransferTokens(\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external payable;\n    function swapExactTokensForETHSupportingFeeOnTransferTokens(\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external;\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor() {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@opengsn/contracts/src/interfaces/IPaymaster.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-only\npragma solidity >=0.7.6;\npragma abicoder v2;\n\nimport \"../utils/GsnTypes.sol\";\n\ninterface IPaymaster {\n\n    /**\n     * @param acceptanceBudget -\n     *      Paymaster expected gas budget to accept (or reject) a request\n     *      This a gas required by any calculations that might need to reject the\n     *      transaction, by preRelayedCall, forwarder and recipient.\n     *      See value in BasePaymaster.PAYMASTER_ACCEPTANCE_BUDGET\n     *      Transaction that gets rejected above that gas usage is on the paymaster's expense.\n     *      As long this value is above preRelayedCallGasLimit (see defaults in BasePaymaster), the\n     *      Paymaster is guaranteed it will never pay for rejected transactions.\n     *      If this value is below preRelayedCallGasLimt, it might might make Paymaster open to a \"griefing\" attack.\n     *\n     *      Specifying value too high might make the call rejected by some relayers.\n     *\n     *      From a Relay's point of view, this is the highest gas value a paymaster might \"grief\" the relay,\n     *      since the paymaster will pay anything above that (regardless if the tx reverts)\n     *\n     * @param preRelayedCallGasLimit - the max gas usage of preRelayedCall. any revert (including OOG)\n     *      of preRelayedCall is a reject by the paymaster.\n     *      as long as acceptanceBudget is above preRelayedCallGasLimit, any such revert (including OOG)\n     *      is not payed by the paymaster.\n     * @param postRelayedCallGasLimit - the max gas usage of postRelayedCall.\n     *      note that an OOG will revert the transaction, but the paymaster already committed to pay,\n     *      so the relay will get compensated, at the expense of the paymaster\n     */\n    struct GasAndDataLimits {\n        uint256 acceptanceBudget;\n        uint256 preRelayedCallGasLimit;\n        uint256 postRelayedCallGasLimit;\n        uint256 calldataSizeLimit;\n    }\n\n    /**\n     * Return the Gas Limits and msg.data max size constants used by the Paymaster.\n     */\n    function getGasAndDataLimits()\n    external\n    view\n    returns (\n        GasAndDataLimits memory limits\n    );\n\n    function trustedForwarder() external view returns (address);\n\n/**\n * return the relayHub of this contract.\n */\n    function getHubAddr() external view returns (address);\n\n    /**\n     * Can be used to determine if the contract can pay for incoming calls before making any.\n     * @return the paymaster's deposit in the RelayHub.\n     */\n    function getRelayHubDeposit() external view returns (uint256);\n\n    /**\n     * Called by Relay (and RelayHub), to validate if the paymaster agrees to pay for this call.\n     *\n     * MUST be protected with relayHubOnly() in case it modifies state.\n     *\n     * The Paymaster rejects by the following \"revert\" operations\n     *  - preRelayedCall() method reverts\n     *  - the forwarder reverts because of nonce or signature error\n     *  - the paymaster returned \"rejectOnRecipientRevert\", and the recipient contract reverted.\n     * In any of the above cases, all paymaster calls (and recipient call) are reverted.\n     * In any other case, the paymaster agrees to pay for the gas cost of the transaction (note\n     *  that this includes also postRelayedCall revert)\n     *\n     * The rejectOnRecipientRevert flag means the Paymaster \"delegate\" the rejection to the recipient\n     *  code.  It also means the Paymaster trust the recipient to reject fast: both preRelayedCall,\n     *  forwarder check and receipient checks must fit into the GasLimits.acceptanceBudget,\n     *  otherwise the TX is paid by the Paymaster.\n     *\n     *  @param relayRequest - the full relay request structure\n     *  @param signature - user's EIP712-compatible signature of the {@link relayRequest}.\n     *              Note that in most cases the paymaster shouldn't try use it at all. It is always checked\n     *              by the forwarder immediately after preRelayedCall returns.\n     *  @param approvalData - extra dapp-specific data (e.g. signature from trusted party)\n     *  @param maxPossibleGas - based on values returned from {@link getGasAndDataLimits},\n     *         the RelayHub will calculate the maximum possible amount of gas the user may be charged for.\n     *         In order to convert this value to wei, the Paymaster has to call \"relayHub.calculateCharge()\"\n     *  return:\n     *      a context to be passed to postRelayedCall\n     *      rejectOnRecipientRevert - TRUE if paymaster want to reject the TX if the recipient reverts.\n     *          FALSE means that rejects by the recipient will be completed on chain, and paid by the paymaster.\n     *          (note that in the latter case, the preRelayedCall and postRelayedCall are not reverted).\n     */\n    function preRelayedCall(\n        GsnTypes.RelayRequest calldata relayRequest,\n        bytes calldata signature,\n        bytes calldata approvalData,\n        uint256 maxPossibleGas\n    )\n    external\n    returns (bytes memory context, bool rejectOnRecipientRevert);\n\n    /**\n     * This method is called after the actual relayed function call.\n     * It may be used to record the transaction (e.g. charge the caller by some contract logic) for this call.\n     *\n     * MUST be protected with relayHubOnly() in case it modifies state.\n     *\n     * @param context - the call context, as returned by the preRelayedCall\n     * @param success - true if the relayed call succeeded, false if it reverted\n     * @param gasUseWithoutPost - the actual amount of gas used by the entire transaction, EXCEPT\n     *        the gas used by the postRelayedCall itself.\n     * @param relayData - the relay params of the request. can be used by relayHub.calculateCharge()\n     *\n     * Revert in this functions causes a revert of the client's relayed call (and preRelayedCall(), but the Paymaster\n     * is still committed to pay the relay for the entire transaction.\n     */\n    function postRelayedCall(\n        bytes calldata context,\n        bool success,\n        uint256 gasUseWithoutPost,\n        GsnTypes.RelayData calldata relayData\n    ) external;\n\n    function versionPaymaster() external view returns (string memory);\n}\n"},"@opengsn/contracts/src/interfaces/IRelayHub.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-only\npragma solidity >=0.7.6;\npragma abicoder v2;\n\nimport \"../utils/GsnTypes.sol\";\nimport \"./IStakeManager.sol\";\n\ninterface IRelayHub {\n    struct RelayHubConfig {\n        // maximum number of worker accounts allowed per manager\n        uint256 maxWorkerCount;\n        // Gas set aside for all relayCall() instructions to prevent unexpected out-of-gas exceptions\n        uint256 gasReserve;\n        // Gas overhead to calculate gasUseWithoutPost\n        uint256 postOverhead;\n        // Gas cost of all relayCall() instructions after actual 'calculateCharge()'\n        // Assume that relay has non-zero balance (costs 15'000 more otherwise).\n        uint256 gasOverhead;\n        // Maximum funds that can be deposited at once. Prevents user error by disallowing large deposits.\n        uint256 maximumRecipientDeposit;\n        // Minimum unstake delay blocks of a relay manager's stake on the StakeManager\n        uint256 minimumUnstakeDelay;\n        // Minimum stake a relay can have. An attack on the network will never cost less than half this value.\n        uint256 minimumStake;\n        // relayCall()'s msg.data upper bound gas cost per byte\n        uint256 dataGasCostPerByte;\n        // relayCalls() minimal gas overhead when calculating cost of putting tx on chain.\n        uint256 externalCallDataCostOverhead;\n    }\n\n    event RelayHubConfigured(RelayHubConfig config);\n\n    /// Emitted when a relay server registers or updates its details\n    /// Looking at these events lets a client discover relay servers\n    event RelayServerRegistered(\n        address indexed relayManager,\n        uint256 baseRelayFee,\n        uint256 pctRelayFee,\n        string relayUrl\n    );\n\n    /// Emitted when relays are added by a relayManager\n    event RelayWorkersAdded(\n        address indexed relayManager,\n        address[] newRelayWorkers,\n        uint256 workersCount\n    );\n\n    /// Emitted when an account withdraws funds from RelayHub.\n    event Withdrawn(\n        address indexed account,\n        address indexed dest,\n        uint256 amount\n    );\n\n    /// Emitted when depositFor is called, including the amount and account that was funded.\n    event Deposited(\n        address indexed paymaster,\n        address indexed from,\n        uint256 amount\n    );\n\n    /// Emitted when an attempt to relay a call fails and Paymaster does not accept the transaction.\n    /// The actual relayed call was not executed, and the recipient not charged.\n    /// @param reason contains a revert reason returned from preRelayedCall or forwarder.\n    event TransactionRejectedByPaymaster(\n        address indexed relayManager,\n        address indexed paymaster,\n        address indexed from,\n        address to,\n        address relayWorker,\n        bytes4 selector,\n        uint256 innerGasUsed,\n        bytes reason\n    );\n\n    /// Emitted when a transaction is relayed. Note that the actual encoded function might be reverted: this will be\n    /// indicated in the status field.\n    /// Useful when monitoring a relay's operation and relayed calls to a contract.\n    /// Charge is the ether value deducted from the recipient's balance, paid to the relay's manager.\n    event TransactionRelayed(\n        address indexed relayManager,\n        address indexed relayWorker,\n        address indexed from,\n        address to,\n        address paymaster,\n        bytes4 selector,\n        RelayCallStatus status,\n        uint256 charge\n    );\n\n    event TransactionResult(\n        RelayCallStatus status,\n        bytes returnValue\n    );\n\n    event HubDeprecated(uint256 fromBlock);\n\n    /// Reason error codes for the TransactionRelayed event\n    /// @param OK - the transaction was successfully relayed and execution successful - never included in the event\n    /// @param RelayedCallFailed - the transaction was relayed, but the relayed call failed\n    /// @param RejectedByPreRelayed - the transaction was not relayed due to preRelatedCall reverting\n    /// @param RejectedByForwarder - the transaction was not relayed due to forwarder check (signature,nonce)\n    /// @param PostRelayedFailed - the transaction was relayed and reverted due to postRelatedCall reverting\n    /// @param PaymasterBalanceChanged - the transaction was relayed and reverted due to the paymaster balance change\n    enum RelayCallStatus {\n        OK,\n        RelayedCallFailed,\n        RejectedByPreRelayed,\n        RejectedByForwarder,\n        RejectedByRecipientRevert,\n        PostRelayedFailed,\n        PaymasterBalanceChanged\n    }\n\n    /// Add new worker addresses controlled by sender who must be a staked Relay Manager address.\n    /// Emits a RelayWorkersAdded event.\n    /// This function can be called multiple times, emitting new events\n    function addRelayWorkers(address[] calldata newRelayWorkers) external;\n\n    function registerRelayServer(uint256 baseRelayFee, uint256 pctRelayFee, string calldata url) external;\n\n    // Balance management\n\n    /// Deposits ether for a contract, so that it can receive (and pay for) relayed transactions. Unused balance can only\n    /// be withdrawn by the contract itself, by calling withdraw.\n    /// Emits a Deposited event.\n    function depositFor(address target) external payable;\n\n    /// Withdraws from an account's balance, sending it back to it. Relay managers call this to retrieve their revenue, and\n    /// contracts can also use it to reduce their funding.\n    /// Emits a Withdrawn event.\n    function withdraw(uint256 amount, address payable dest) external;\n\n    // Relaying\n\n\n    /// Relays a transaction. For this to succeed, multiple conditions must be met:\n    ///  - Paymaster's \"preRelayCall\" method must succeed and not revert\n    ///  - the sender must be a registered Relay Worker that the user signed\n    ///  - the transaction's gas price must be equal or larger than the one that was signed by the sender\n    ///  - the transaction must have enough gas to run all internal transactions if they use all gas available to them\n    ///  - the Paymaster must have enough balance to pay the Relay Worker for the scenario when all gas is spent\n    ///\n    /// If all conditions are met, the call will be relayed and the recipient charged.\n    ///\n    /// Arguments:\n    /// @param maxAcceptanceBudget - max valid value for paymaster.getGasLimits().acceptanceBudget\n    /// @param relayRequest - all details of the requested relayed call\n    /// @param signature - client's EIP-712 signature over the relayRequest struct\n    /// @param approvalData: dapp-specific data forwarded to preRelayedCall.\n    ///        This value is *not* verified by the Hub. For example, it can be used to pass a signature to the Paymaster\n    /// @param externalGasLimit - the value passed as gasLimit to the transaction.\n    ///\n    /// Emits a TransactionRelayed event.\n    function relayCall(\n        uint maxAcceptanceBudget,\n        GsnTypes.RelayRequest calldata relayRequest,\n        bytes calldata signature,\n        bytes calldata approvalData,\n        uint externalGasLimit\n    )\n    external\n    returns (bool paymasterAccepted, bytes memory returnValue);\n\n    function penalize(address relayWorker, address payable beneficiary) external;\n\n    function setConfiguration(RelayHubConfig memory _config) external;\n\n    // Deprecate hub (reverting relayCall()) from block number 'fromBlock'\n    // Can only be called by owner\n    function deprecateHub(uint256 fromBlock) external;\n\n    /// The fee is expressed as a base fee in wei plus percentage on actual charge.\n    /// E.g. a value of 40 stands for a 40% fee, so the recipient will be\n    /// charged for 1.4 times the spent amount.\n    function calculateCharge(uint256 gasUsed, GsnTypes.RelayData calldata relayData) external view returns (uint256);\n\n    /* getters */\n\n    /// Returns the whole hub configuration\n    function getConfiguration() external view returns (RelayHubConfig memory config);\n\n    function calldataGasCost(uint256 length) external view returns (uint256);\n\n    function workerToManager(address worker) external view returns(address);\n\n    function workerCount(address manager) external view returns(uint256);\n\n    /// Returns an account's deposits. It can be either a deposit of a paymaster, or a revenue of a relay manager.\n    function balanceOf(address target) external view returns (uint256);\n\n    function stakeManager() external view returns (IStakeManager);\n\n    function penalizer() external view returns (address);\n\n    /// Uses StakeManager info to decide if the Relay Manager can be considered staked\n    /// @return true if stake size and delay satisfy all requirements\n    function isRelayManagerStaked(address relayManager) external view returns(bool);\n\n    // Checks hubs' deprecation status\n    function isDeprecated() external view returns (bool);\n\n    // Returns the block number from which the hub no longer allows relaying calls.\n    function deprecationBlock() external view returns (uint256);\n\n    /// @return a SemVer-compliant version of the hub contract\n    function versionHub() external view returns (string memory);\n}\n\n"},"@opengsn/contracts/src/utils/GsnEip712Library.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-only\npragma solidity ^0.8.0;\npragma abicoder v2;\n\nimport \"../utils/GsnTypes.sol\";\nimport \"../interfaces/IRelayRecipient.sol\";\nimport \"../forwarder/IForwarder.sol\";\n\nimport \"./GsnUtils.sol\";\n\n/**\n * Bridge Library to map GSN RelayRequest into a call of a Forwarder\n */\nlibrary GsnEip712Library {\n    // maximum length of return value/revert reason for 'execute' method. Will truncate result if exceeded.\n    uint256 private constant MAX_RETURN_SIZE = 1024;\n\n    //copied from Forwarder (can't reference string constants even from another library)\n    string public constant GENERIC_PARAMS = \"address from,address to,uint256 value,uint256 gas,uint256 nonce,bytes data,uint256 validUntil\";\n\n    bytes public constant RELAYDATA_TYPE = \"RelayData(uint256 gasPrice,uint256 pctRelayFee,uint256 baseRelayFee,address relayWorker,address paymaster,address forwarder,bytes paymasterData,uint256 clientId)\";\n\n    string public constant RELAY_REQUEST_NAME = \"RelayRequest\";\n    string public constant RELAY_REQUEST_SUFFIX = string(abi.encodePacked(\"RelayData relayData)\", RELAYDATA_TYPE));\n\n    bytes public constant RELAY_REQUEST_TYPE = abi.encodePacked(\n        RELAY_REQUEST_NAME,\"(\",GENERIC_PARAMS,\",\", RELAY_REQUEST_SUFFIX);\n\n    bytes32 public constant RELAYDATA_TYPEHASH = keccak256(RELAYDATA_TYPE);\n    bytes32 public constant RELAY_REQUEST_TYPEHASH = keccak256(RELAY_REQUEST_TYPE);\n\n\n    struct EIP712Domain {\n        string name;\n        string version;\n        uint256 chainId;\n        address verifyingContract;\n    }\n\n    bytes32 public constant EIP712DOMAIN_TYPEHASH = keccak256(\n        \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n    );\n\n    function splitRequest(\n        GsnTypes.RelayRequest calldata req\n    )\n    internal\n    pure\n    returns (\n        bytes memory suffixData\n    ) {\n        suffixData = abi.encode(\n            hashRelayData(req.relayData));\n    }\n\n    //verify that the recipient trusts the given forwarder\n    // MUST be called by paymaster\n    function verifyForwarderTrusted(GsnTypes.RelayRequest calldata relayRequest) internal view {\n        (bool success, bytes memory ret) = relayRequest.request.to.staticcall(\n            abi.encodeWithSelector(\n                IRelayRecipient.isTrustedForwarder.selector, relayRequest.relayData.forwarder\n            )\n        );\n        require(success, \"isTrustedForwarder: reverted\");\n        require(ret.length == 32, \"isTrustedForwarder: bad response\");\n        require(abi.decode(ret, (bool)), \"invalid forwarder for recipient\");\n    }\n\n    function verifySignature(GsnTypes.RelayRequest calldata relayRequest, bytes calldata signature) internal view {\n        (bytes memory suffixData) = splitRequest(relayRequest);\n        bytes32 _domainSeparator = domainSeparator(relayRequest.relayData.forwarder);\n        IForwarder forwarder = IForwarder(payable(relayRequest.relayData.forwarder));\n        forwarder.verify(relayRequest.request, _domainSeparator, RELAY_REQUEST_TYPEHASH, suffixData, signature);\n    }\n\n    function verify(GsnTypes.RelayRequest calldata relayRequest, bytes calldata signature) internal view {\n        verifyForwarderTrusted(relayRequest);\n        verifySignature(relayRequest, signature);\n    }\n\n    function execute(GsnTypes.RelayRequest calldata relayRequest, bytes calldata signature) internal returns (bool forwarderSuccess, bool callSuccess, bytes memory ret) {\n        (bytes memory suffixData) = splitRequest(relayRequest);\n        bytes32 _domainSeparator = domainSeparator(relayRequest.relayData.forwarder);\n        /* solhint-disable-next-line avoid-low-level-calls */\n        (forwarderSuccess, ret) = relayRequest.relayData.forwarder.call(\n            abi.encodeWithSelector(IForwarder.execute.selector,\n            relayRequest.request, _domainSeparator, RELAY_REQUEST_TYPEHASH, suffixData, signature\n        ));\n        if ( forwarderSuccess ) {\n\n          //decode return value of execute:\n          (callSuccess, ret) = abi.decode(ret, (bool, bytes));\n        }\n        truncateInPlace(ret);\n    }\n\n    //truncate the given parameter (in-place) if its length is above the given maximum length\n    // do nothing otherwise.\n    //NOTE: solidity warns unless the method is marked \"pure\", but it DOES modify its parameter.\n    function truncateInPlace(bytes memory data) internal pure {\n        MinLibBytes.truncateInPlace(data, MAX_RETURN_SIZE);\n    }\n\n    function domainSeparator(address forwarder) internal view returns (bytes32) {\n        return hashDomain(EIP712Domain({\n            name : \"GSN Relayed Transaction\",\n            version : \"2\",\n            chainId : getChainID(),\n            verifyingContract : forwarder\n            }));\n    }\n\n    function getChainID() internal view returns (uint256 id) {\n        /* solhint-disable no-inline-assembly */\n        assembly {\n            id := chainid()\n        }\n    }\n\n    function hashDomain(EIP712Domain memory req) internal pure returns (bytes32) {\n        return keccak256(abi.encode(\n                EIP712DOMAIN_TYPEHASH,\n                keccak256(bytes(req.name)),\n                keccak256(bytes(req.version)),\n                req.chainId,\n                req.verifyingContract));\n    }\n\n    function hashRelayData(GsnTypes.RelayData calldata req) internal pure returns (bytes32) {\n        return keccak256(abi.encode(\n                RELAYDATA_TYPEHASH,\n                req.gasPrice,\n                req.pctRelayFee,\n                req.baseRelayFee,\n                req.relayWorker,\n                req.paymaster,\n                req.forwarder,\n                keccak256(req.paymasterData),\n                req.clientId\n            ));\n    }\n}\n"},"@openzeppelin/contracts/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"},"@opengsn/contracts/src/interfaces/IStakeManager.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-only\npragma solidity >=0.7.6;\npragma abicoder v2;\n\nimport \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\n\ninterface IStakeManager {\n\n    /// Emitted when a stake or unstakeDelay are initialized or increased\n    event StakeAdded(\n        address indexed relayManager,\n        address indexed owner,\n        uint256 stake,\n        uint256 unstakeDelay\n    );\n\n    /// Emitted once a stake is scheduled for withdrawal\n    event StakeUnlocked(\n        address indexed relayManager,\n        address indexed owner,\n        uint256 withdrawBlock\n    );\n\n    /// Emitted when owner withdraws relayManager funds\n    event StakeWithdrawn(\n        address indexed relayManager,\n        address indexed owner,\n        uint256 amount\n    );\n\n    /// Emitted when an authorized Relay Hub penalizes a relayManager\n    event StakePenalized(\n        address indexed relayManager,\n        address indexed beneficiary,\n        uint256 reward\n    );\n\n    event HubAuthorized(\n        address indexed relayManager,\n        address indexed relayHub\n    );\n\n    event HubUnauthorized(\n        address indexed relayManager,\n        address indexed relayHub,\n        uint256 removalBlock\n    );\n\n    event OwnerSet(\n        address indexed relayManager,\n        address indexed owner\n    );\n\n    /// @param stake - amount of ether staked for this relay\n    /// @param unstakeDelay - number of blocks to elapse before the owner can retrieve the stake after calling 'unlock'\n    /// @param withdrawBlock - first block number 'withdraw' will be callable, or zero if the unlock has not been called\n    /// @param owner - address that receives revenue and manages relayManager's stake\n    struct StakeInfo {\n        uint256 stake;\n        uint256 unstakeDelay;\n        uint256 withdrawBlock;\n        address payable owner;\n    }\n\n    struct RelayHubInfo {\n        uint256 removalBlock;\n    }\n\n    /// Set the owner of a Relay Manager. Called only by the RelayManager itself.\n    /// Note that owners cannot transfer ownership - if the entry already exists, reverts.\n    /// @param owner - owner of the relay (as configured off-chain)\n    function setRelayManagerOwner(address payable owner) external;\n\n    /// Only the owner can call this function. If the entry does not exist, reverts.\n    /// @param relayManager - address that represents a stake entry and controls relay registrations on relay hubs\n    /// @param unstakeDelay - number of blocks to elapse before the owner can retrieve the stake after calling 'unlock'\n    function stakeForRelayManager(address relayManager, uint256 unstakeDelay) external payable;\n\n    function unlockStake(address relayManager) external;\n\n    function withdrawStake(address relayManager) external;\n\n    function authorizeHubByOwner(address relayManager, address relayHub) external;\n\n    function authorizeHubByManager(address relayHub) external;\n\n    function unauthorizeHubByOwner(address relayManager, address relayHub) external;\n\n    function unauthorizeHubByManager(address relayHub) external;\n\n    function isRelayManagerStaked(address relayManager, address relayHub, uint256 minAmount, uint256 minUnstakeDelay)\n    external\n    view\n    returns (bool);\n\n    /// Slash the stake of the relay relayManager. In order to prevent stake kidnapping, burns half of stake on the way.\n    /// @param relayManager - entry to penalize\n    /// @param beneficiary - address that receives half of the penalty amount\n    /// @param amount - amount to withdraw from stake\n    function penalizeRelayManager(address relayManager, address payable beneficiary, uint256 amount) external;\n\n    function getStakeInfo(address relayManager) external view returns (StakeInfo memory stakeInfo);\n\n    function maxUnstakeDelay() external view returns (uint256);\n\n    function versionSM() external view returns (string memory);\n}\n"},"@openzeppelin/contracts/utils/math/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)\n\npragma solidity ^0.8.0;\n\n// CAUTION\n// This version of SafeMath should only be used with Solidity 0.8 or later,\n// because it relies on the compiler's built in overflow checks.\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\n * now has built in overflow checking.\n */\nlibrary SafeMath {\n    /**\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            uint256 c = a + b;\n            if (c < a) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b > a) return (false, 0);\n            return (true, a - b);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n            // benefit is lost if 'b' is also tested.\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n            if (a == 0) return (true, 0);\n            uint256 c = a * b;\n            if (c / a != b) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a / b);\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a % b);\n        }\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a + b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting on\n     * overflow (when the result is negative).\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a * b;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator.\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting when dividing by zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a % b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n     * overflow (when the result is negative).\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {trySub}.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(\n        uint256 a,\n        uint256 b,\n        string memory errorMessage\n    ) internal pure returns (uint256) {\n        unchecked {\n            require(b <= a, errorMessage);\n            return a - b;\n        }\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(\n        uint256 a,\n        uint256 b,\n        string memory errorMessage\n    ) internal pure returns (uint256) {\n        unchecked {\n            require(b > 0, errorMessage);\n            return a / b;\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting with custom message when dividing by zero.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryMod}.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(\n        uint256 a,\n        uint256 b,\n        string memory errorMessage\n    ) internal pure returns (uint256) {\n        unchecked {\n            require(b > 0, errorMessage);\n            return a % b;\n        }\n    }\n}\n"},"@opengsn/contracts/src/interfaces/IRelayRecipient.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity >=0.6.0;\n\n/**\n * a contract must implement this interface in order to support relayed transaction.\n * It is better to inherit the BaseRelayRecipient as its implementation.\n */\nabstract contract IRelayRecipient {\n\n    /**\n     * return if the forwarder is trusted to forward relayed transactions to us.\n     * the forwarder is required to verify the sender's signature, and verify\n     * the call is not a replay.\n     */\n    function isTrustedForwarder(address forwarder) public virtual view returns(bool);\n\n    /**\n     * return the sender of this call.\n     * if the call came through our trusted forwarder, then the real sender is appended as the last 20 bytes\n     * of the msg.data.\n     * otherwise, return `msg.sender`\n     * should be used in the contract anywhere instead of msg.sender\n     */\n    function _msgSender() internal virtual view returns (address);\n\n    /**\n     * return the msg.data of this call.\n     * if the call came through our trusted forwarder, then the real sender was appended as the last 20 bytes\n     * of the msg.data - so this method will strip those 20 bytes off.\n     * otherwise (if the call was made directly and not through the forwarder), return `msg.data`\n     * should be used in the contract instead of msg.data, where this difference matters.\n     */\n    function _msgData() internal virtual view returns (bytes calldata);\n\n    function versionRecipient() external virtual view returns (string memory);\n}\n"},"@opengsn/contracts/src/utils/GsnUtils.sol":{"content":"/* solhint-disable no-inline-assembly */\n// SPDX-License-Identifier: GPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../utils/MinLibBytes.sol\";\n\nlibrary GsnUtils {\n\n    /**\n     * extract method sig from encoded function call\n     */\n    function getMethodSig(bytes memory msgData) internal pure returns (bytes4) {\n        return MinLibBytes.readBytes4(msgData, 0);\n    }\n\n    /**\n     * extract parameter from encoded-function block.\n     * see: https://solidity.readthedocs.io/en/develop/abi-spec.html#formal-specification-of-the-encoding\n     * the return value should be casted to the right type (uintXXX/bytesXXX/address/bool/enum)\n     */\n    function getParam(bytes memory msgData, uint index) internal pure returns (uint) {\n        return MinLibBytes.readUint256(msgData, 4 + index * 32);\n    }\n\n    //re-throw revert with the same revert data.\n    function revertWithData(bytes memory data) internal pure {\n        assembly {\n            revert(add(data,32), mload(data))\n        }\n    }\n\n}\n"},"@opengsn/contracts/src/utils/MinLibBytes.sol":{"content":"// SPDX-License-Identifier: MIT\n// minimal bytes manipulation required by GSN\n// a minimal subset from 0x/LibBytes\n/* solhint-disable no-inline-assembly */\npragma solidity ^0.8.0;\n\nlibrary MinLibBytes {\n\n    //truncate the given parameter (in-place) if its length is above the given maximum length\n    // do nothing otherwise.\n    //NOTE: solidity warns unless the method is marked \"pure\", but it DOES modify its parameter.\n    function truncateInPlace(bytes memory data, uint256 maxlen) internal pure {\n        if (data.length > maxlen) {\n            assembly { mstore(data, maxlen) }\n        }\n    }\n\n    /// @dev Reads an address from a position in a byte array.\n    /// @param b Byte array containing an address.\n    /// @param index Index in byte array of address.\n    /// @return result address from byte array.\n    function readAddress(\n        bytes memory b,\n        uint256 index\n    )\n        internal\n        pure\n        returns (address result)\n    {\n        require (b.length >= index + 20, \"readAddress: data too short\");\n\n        // Add offset to index:\n        // 1. Arrays are prefixed by 32-byte length parameter (add 32 to index)\n        // 2. Account for size difference between address length and 32-byte storage word (subtract 12 from index)\n        index += 20;\n\n        // Read address from array memory\n        assembly {\n            // 1. Add index to address of bytes array\n            // 2. Load 32-byte word from memory\n            // 3. Apply 20-byte mask to obtain address\n            result := and(mload(add(b, index)), 0xffffffffffffffffffffffffffffffffffffffff)\n        }\n        return result;\n    }\n\n    function readBytes32(\n        bytes memory b,\n        uint256 index\n    )\n        internal\n        pure\n        returns (bytes32 result)\n    {\n        require(b.length >= index + 32, \"readBytes32: data too short\" );\n\n        // Read the bytes32 from array memory\n        assembly {\n            result := mload(add(b, add(index,32)))\n        }\n        return result;\n    }\n\n    /// @dev Reads a uint256 value from a position in a byte array.\n    /// @param b Byte array containing a uint256 value.\n    /// @param index Index in byte array of uint256 value.\n    /// @return result uint256 value from byte array.\n    function readUint256(\n        bytes memory b,\n        uint256 index\n    )\n        internal\n        pure\n        returns (uint256 result)\n    {\n        result = uint256(readBytes32(b, index));\n        return result;\n    }\n\n    function readBytes4(\n        bytes memory b,\n        uint256 index\n    )\n        internal\n        pure\n        returns (bytes4 result)\n    {\n        require(b.length >= index + 4, \"readBytes4: data too short\");\n\n        // Read the bytes4 from array memory\n        assembly {\n            result := mload(add(b, add(index,32)))\n            // Solidity does not require us to clean the trailing bytes.\n            // We do it anyway\n            result := and(result, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000)\n        }\n        return result;\n    }\n}\n"},"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol":{"content":"pragma solidity >=0.6.2;\n\ninterface IUniswapV2Router01 {\n    function factory() external pure returns (address);\n    function WETH() external pure returns (address);\n\n    function addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint amountADesired,\n        uint amountBDesired,\n        uint amountAMin,\n        uint amountBMin,\n        address to,\n        uint deadline\n    ) external returns (uint amountA, uint amountB, uint liquidity);\n    function addLiquidityETH(\n        address token,\n        uint amountTokenDesired,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline\n    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\n    function removeLiquidity(\n        address tokenA,\n        address tokenB,\n        uint liquidity,\n        uint amountAMin,\n        uint amountBMin,\n        address to,\n        uint deadline\n    ) external returns (uint amountA, uint amountB);\n    function removeLiquidityETH(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline\n    ) external returns (uint amountToken, uint amountETH);\n    function removeLiquidityWithPermit(\n        address tokenA,\n        address tokenB,\n        uint liquidity,\n        uint amountAMin,\n        uint amountBMin,\n        address to,\n        uint deadline,\n        bool approveMax, uint8 v, bytes32 r, bytes32 s\n    ) external returns (uint amountA, uint amountB);\n    function removeLiquidityETHWithPermit(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline,\n        bool approveMax, uint8 v, bytes32 r, bytes32 s\n    ) external returns (uint amountToken, uint amountETH);\n    function swapExactTokensForTokens(\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external returns (uint[] memory amounts);\n    function swapTokensForExactTokens(\n        uint amountOut,\n        uint amountInMax,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external returns (uint[] memory amounts);\n    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\n        external\n        payable\n        returns (uint[] memory amounts);\n    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\n        external\n        returns (uint[] memory amounts);\n    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\n        external\n        returns (uint[] memory amounts);\n    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\n        external\n        payable\n        returns (uint[] memory amounts);\n\n    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\n    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\n    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\n    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\n    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\n}\n"},"contracts/TokenSwap.sol":{"content":"/*\nCrafted with love by\nFueled on Bacon\nhttps://fueledonbacon.com\n*/\n//SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.13;\n\nimport \"@opengsn/contracts/src/BaseRelayRecipient.sol\";\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\nimport \"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol\"; \n\nimport \"./TokenPaymaster.sol\";\n\ncontract TokenSwap is BaseRelayRecipient {\n\n  event Received(uint256 value, address sender);\n\n  IUniswapV2Router02 internal immutable _router;\n  TokenPaymaster internal _paymaster;\n\n  address private _sender;\n\n  bool onSwap;\n\n  modifier updateSender {\n    require(!onSwap, \"On swap\");\n    onSwap = true;\n    // require(isTrustedForwarder(msg.sender), \"Not forwarder\");\n    _sender = BaseRelayRecipient._msgSender();\n    _;\n  }\n  \n  constructor(address _forwarder, address uniswapRouter, address payable tokenPaymaster) {\n    _setTrustedForwarder(_forwarder);\n    _router = IUniswapV2Router02(uniswapRouter);\n    _paymaster = TokenPaymaster(tokenPaymaster);\n  }\n\n  function _getPath(address token1, address token2) private pure returns(address[] memory path) {\n    path = new address[](2);\n    path[0] = token1;\n    path[1] = token2;\n  }\n\n  function swapTokensForEth(address token, uint256 amountIn) external updateSender { \n    IERC20 erc20 = IERC20(token);\n    erc20.transferFrom(_sender, address(this), amountIn);\n    erc20.approve(address(_router), amountIn);\n\n    _router.swapExactTokensForETHSupportingFeeOnTransferTokens(\n      amountIn,\n      0,\n      _getPath(token, _router.WETH()),\n      address(this),\n      block.timestamp\n    );\n\n    (address paymentToken, uint256 fee) = _paymaster.getPaymentData();\n    IERC20(paymentToken).transferFrom(_sender, address(0xdead), fee);\n    \n  }  \n\n  function versionRecipient() external override pure returns(string memory) {\n    return \"2.2.0+opengsn.swap.irelayrecipient\";\n  }\n\n  receive() external payable {\n    uint256 value = msg.value;\n    (bool sent, ) = address(_paymaster).call{value: value}(\"\");\n    require(sent, \"Failed to send Ether\");\n    emit Received(msg.value, _sender);\n    onSwap = false;\n  }\n\n}\n"},"@opengsn/contracts/src/BaseRelayRecipient.sol":{"content":"// SPDX-License-Identifier: MIT\n// solhint-disable no-inline-assembly\npragma solidity >=0.6.9;\n\nimport \"./interfaces/IRelayRecipient.sol\";\n\n/**\n * A base contract to be inherited by any contract that want to receive relayed transactions\n * A subclass must use \"_msgSender()\" instead of \"msg.sender\"\n */\nabstract contract BaseRelayRecipient is IRelayRecipient {\n\n    /*\n     * Forwarder singleton we accept calls from\n     */\n    address private _trustedForwarder;\n\n    function trustedForwarder() public virtual view returns (address){\n        return _trustedForwarder;\n    }\n\n    function _setTrustedForwarder(address _forwarder) internal {\n        _trustedForwarder = _forwarder;\n    }\n\n    function isTrustedForwarder(address forwarder) public virtual override view returns(bool) {\n        return forwarder == _trustedForwarder;\n    }\n\n    /**\n     * return the sender of this call.\n     * if the call came through our trusted forwarder, return the original sender.\n     * otherwise, return `msg.sender`.\n     * should be used in the contract anywhere instead of msg.sender\n     */\n    function _msgSender() internal override virtual view returns (address ret) {\n        if (msg.data.length >= 20 && isTrustedForwarder(msg.sender)) {\n            // At this point we know that the sender is a trusted forwarder,\n            // so we trust that the last bytes of msg.data are the verified sender address.\n            // extract sender address from the end of msg.data\n            assembly {\n                ret := shr(96,calldataload(sub(calldatasize(),20)))\n            }\n        } else {\n            ret = msg.sender;\n        }\n    }\n\n    /**\n     * return the msg.data of this call.\n     * if the call came through our trusted forwarder, then the real sender was appended as the last 20 bytes\n     * of the msg.data - so this method will strip those 20 bytes off.\n     * otherwise (if the call was made directly and not through the forwarder), return `msg.data`\n     * should be used in the contract instead of msg.data, where this difference matters.\n     */\n    function _msgData() internal override virtual view returns (bytes calldata ret) {\n        if (msg.data.length >= 20 && isTrustedForwarder(msg.sender)) {\n            return msg.data[0:msg.data.length-20];\n        } else {\n            return msg.data;\n        }\n    }\n}\n"},"@openzeppelin/contracts/access/AccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IAccessControl.sol\";\nimport \"../utils/Context.sol\";\nimport \"../utils/Strings.sol\";\nimport \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n *     require(hasRole(MY_ROLE, msg.sender));\n *     ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n    struct RoleData {\n        mapping(address => bool) members;\n        bytes32 adminRole;\n    }\n\n    mapping(bytes32 => RoleData) private _roles;\n\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n    /**\n     * @dev Modifier that checks that an account has a specific role. Reverts\n     * with a standardized message including the required role.\n     *\n     * The format of the revert reason is given by the following regular expression:\n     *\n     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n     *\n     * _Available since v4.1._\n     */\n    modifier onlyRole(bytes32 role) {\n        _checkRole(role);\n        _;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\n        return _roles[role].members[account];\n    }\n\n    /**\n     * @dev Revert with a standard message if `_msgSender()` is missing `role`.\n     * Overriding this function changes the behavior of the {onlyRole} modifier.\n     *\n     * Format of the revert message is described in {_checkRole}.\n     *\n     * _Available since v4.6._\n     */\n    function _checkRole(bytes32 role) internal view virtual {\n        _checkRole(role, _msgSender());\n    }\n\n    /**\n     * @dev Revert with a standard message if `account` is missing `role`.\n     *\n     * The format of the revert reason is given by the following regular expression:\n     *\n     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n     */\n    function _checkRole(bytes32 role, address account) internal view virtual {\n        if (!hasRole(role, account)) {\n            revert(\n                string(\n                    abi.encodePacked(\n                        \"AccessControl: account \",\n                        Strings.toHexString(uint160(account), 20),\n                        \" is missing role \",\n                        Strings.toHexString(uint256(role), 32)\n                    )\n                )\n            );\n        }\n    }\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 {_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\n        return _roles[role].adminRole;\n    }\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     * May emit a {RoleGranted} event.\n     */\n    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n        _grantRole(role, account);\n    }\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     * May emit a {RoleRevoked} event.\n     */\n    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n        _revokeRole(role, account);\n    }\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 revoked `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `account`.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function renounceRole(bytes32 role, address account) public virtual override {\n        require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n        _revokeRole(role, account);\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event. Note that unlike {grantRole}, this function doesn't perform any\n     * checks on the calling account.\n     *\n     * May emit a {RoleGranted} event.\n     *\n     * [WARNING]\n     * ====\n     * This function should only be called from the constructor when setting\n     * up the initial roles for the system.\n     *\n     * Using this function in any other way is effectively circumventing the admin\n     * system imposed by {AccessControl}.\n     * ====\n     *\n     * NOTE: This function is deprecated in favor of {_grantRole}.\n     */\n    function _setupRole(bytes32 role, address account) internal virtual {\n        _grantRole(role, account);\n    }\n\n    /**\n     * @dev Sets `adminRole` as ``role``'s admin role.\n     *\n     * Emits a {RoleAdminChanged} event.\n     */\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n        bytes32 previousAdminRole = getRoleAdmin(role);\n        _roles[role].adminRole = adminRole;\n        emit RoleAdminChanged(role, previousAdminRole, adminRole);\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function _grantRole(bytes32 role, address account) internal virtual {\n        if (!hasRole(role, account)) {\n            _roles[role].members[account] = true;\n            emit RoleGranted(role, account, _msgSender());\n        }\n    }\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function _revokeRole(bytes32 role, address account) internal virtual {\n        if (hasRole(role, account)) {\n            _roles[role].members[account] = false;\n            emit RoleRevoked(role, account, _msgSender());\n        }\n    }\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/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    bytes16 private constant _HEX_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        // Inspired by OraclizeAPI's implementation - MIT licence\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        while (value != 0) {\n            digits -= 1;\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n            value /= 10;\n        }\n        return string(buffer);\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        if (value == 0) {\n            return \"0x00\";\n        }\n        uint256 temp = value;\n        uint256 length = 0;\n        while (temp != 0) {\n            length++;\n            temp >>= 8;\n        }\n        return toHexString(value, length);\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] = _HEX_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"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"1878","formattedMessage":"Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol\n\n","message":"SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.","severity":"warning","sourceLocation":{"end":-1,"file":"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol","start":-1},"type":"Warning"},{"component":"general","errorCode":"1878","formattedMessage":"Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol\n\n","message":"SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.","severity":"warning","sourceLocation":{"end":-1,"file":"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol","start":-1},"type":"Warning"}],"sources":{"@opengsn/contracts/src/BasePaymaster.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/BasePaymaster.sol","exportedSymbols":{"BasePaymaster":[199],"Context":[2102],"GsnEip712Library":[1306],"GsnTypes":[1334],"GsnUtils":[1381],"IForwarder":[388],"IPaymaster":[461],"IRelayHub":[737],"IRelayRecipient":[766],"IStakeManager":[930],"MinLibBytes":[1496],"Ownable":[2002],"SafeMath":[3180]},"id":200,"license":"GPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.7",".6"],"nodeType":"PragmaDirective","src":"41:24:0"},{"id":2,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"66:19:0"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":200,"sourceUnit":2003,"src":"87:52:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/utils/GsnTypes.sol","file":"./utils/GsnTypes.sol","id":4,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":200,"sourceUnit":1335,"src":"141:30:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/interfaces/IPaymaster.sol","file":"./interfaces/IPaymaster.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":200,"sourceUnit":462,"src":"172:37:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/interfaces/IRelayHub.sol","file":"./interfaces/IRelayHub.sol","id":6,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":200,"sourceUnit":738,"src":"210:36:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/utils/GsnEip712Library.sol","file":"./utils/GsnEip712Library.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":200,"sourceUnit":1307,"src":"247:38:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/forwarder/IForwarder.sol","file":"./forwarder/IForwarder.sol","id":8,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":200,"sourceUnit":389,"src":"286:36:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10,"name":"IPaymaster","nodeType":"IdentifierPath","referencedDeclaration":461,"src":"503:10:0"},"id":11,"nodeType":"InheritanceSpecifier","src":"503:10:0"},{"baseName":{"id":12,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":2002,"src":"515:7:0"},"id":13,"nodeType":"InheritanceSpecifier","src":"515:7:0"}],"canonicalName":"BasePaymaster","contractDependencies":[],"contractKind":"contract","documentation":{"id":9,"nodeType":"StructuredDocumentation","src":"324:143:0","text":" Abstract base class to be inherited by a concrete Paymaster\n A subclass must implement:\n  - preRelayedCall\n  - postRelayedCall"},"fullyImplemented":false,"id":199,"linearizedBaseContracts":[199,2002,2102,461],"name":"BasePaymaster","nameLocation":"486:13:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":16,"mutability":"mutable","name":"relayHub","nameLocation":"549:8:0","nodeType":"VariableDeclaration","scope":199,"src":"530:27:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"},"typeName":{"id":15,"nodeType":"UserDefinedTypeName","pathNode":{"id":14,"name":"IRelayHub","nodeType":"IdentifierPath","referencedDeclaration":737,"src":"530:9:0"},"referencedDeclaration":737,"src":"530:9:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"visibility":"internal"},{"constant":false,"id":18,"mutability":"mutable","name":"_trustedForwarder","nameLocation":"579:17:0","nodeType":"VariableDeclaration","scope":199,"src":"563:33:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17,"name":"address","nodeType":"ElementaryTypeName","src":"563:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"baseFunctions":[419],"body":{"id":29,"nodeType":"Block","src":"664:41:0","statements":[{"expression":{"arguments":[{"id":26,"name":"relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"689:8:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}],"id":25,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"681:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":24,"name":"address","nodeType":"ElementaryTypeName","src":"681:7:0","typeDescriptions":{}}},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"681:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":23,"id":28,"nodeType":"Return","src":"674:24:0"}]},"functionSelector":"74e861d6","id":30,"implemented":true,"kind":"function","modifiers":[],"name":"getHubAddr","nameLocation":"612:10:0","nodeType":"FunctionDefinition","overrides":{"id":20,"nodeType":"OverrideSpecifier","overrides":[],"src":"632:8:0"},"parameters":{"id":19,"nodeType":"ParameterList","parameters":[],"src":"622:2:0"},"returnParameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":30,"src":"655:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21,"name":"address","nodeType":"ElementaryTypeName","src":"655:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"654:9:0"},"scope":199,"src":"603:102:0","stateMutability":"view","virtual":false,"visibility":"public"},{"constant":true,"functionSelector":"b90b41cf","id":33,"mutability":"constant","name":"FORWARDER_HUB_OVERHEAD","nameLocation":"800:22:0","nodeType":"VariableDeclaration","scope":199,"src":"776:54:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint256","nodeType":"ElementaryTypeName","src":"776:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3530303030","id":32,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"825:5:0","typeDescriptions":{"typeIdentifier":"t_rational_50000_by_1","typeString":"int_const 50000"},"value":"50000"},"visibility":"public"},{"constant":true,"functionSelector":"f9c002f7","id":36,"mutability":"constant","name":"PRE_RELAYED_CALL_GAS_LIMIT","nameLocation":"930:26:0","nodeType":"VariableDeclaration","scope":199,"src":"906:59:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313030303030","id":35,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"959:6:0","typeDescriptions":{"typeIdentifier":"t_rational_100000_by_1","typeString":"int_const 100000"},"value":"100000"},"visibility":"public"},{"constant":true,"functionSelector":"bbdaa3c9","id":39,"mutability":"constant","name":"POST_RELAYED_CALL_GAS_LIMIT","nameLocation":"995:27:0","nodeType":"VariableDeclaration","scope":199,"src":"971:60:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313130303030","id":38,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1025:6:0","typeDescriptions":{"typeIdentifier":"t_rational_110000_by_1","typeString":"int_const 110000"},"value":"110000"},"visibility":"public"},{"constant":true,"functionSelector":"df463a66","id":44,"mutability":"constant","name":"PAYMASTER_ACCEPTANCE_BUDGET","nameLocation":"1061:27:0","nodeType":"VariableDeclaration","scope":199,"src":"1037:105:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40,"name":"uint256","nodeType":"ElementaryTypeName","src":"1037:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":43,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":41,"name":"PRE_RELAYED_CALL_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"1091:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":42,"name":"FORWARDER_HUB_OVERHEAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"1120:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1091:51:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"5c5e3db1","id":47,"mutability":"constant","name":"CALLDATA_SIZE_LIMIT","nameLocation":"1172:19:0","nodeType":"VariableDeclaration","scope":199,"src":"1148:51:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45,"name":"uint256","nodeType":"ElementaryTypeName","src":"1148:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130353030","id":46,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1194:5:0","typeDescriptions":{"typeIdentifier":"t_rational_10500_by_1","typeString":"int_const 10500"},"value":"10500"},"visibility":"public"},{"baseFunctions":[408],"body":{"id":62,"nodeType":"Block","src":"1352:216:0","statements":[{"expression":{"arguments":[{"id":56,"name":"PAYMASTER_ACCEPTANCE_BUDGET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1410:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":57,"name":"PRE_RELAYED_CALL_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"1451:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":58,"name":"POST_RELAYED_CALL_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39,"src":"1491:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":59,"name":"CALLDATA_SIZE_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"1532:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54,"name":"IPaymaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"1369:10:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPaymaster_$461_$","typeString":"type(contract IPaymaster)"}},"id":55,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"GasAndDataLimits","nodeType":"MemberAccess","referencedDeclaration":401,"src":"1369:27:0","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_GasAndDataLimits_$401_storage_ptr_$","typeString":"type(struct IPaymaster.GasAndDataLimits storage pointer)"}},"id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1369:192:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GasAndDataLimits_$401_memory_ptr","typeString":"struct IPaymaster.GasAndDataLimits memory"}},"functionReturnParameters":53,"id":61,"nodeType":"Return","src":"1362:199:0"}]},"functionSelector":"b039a88f","id":63,"implemented":true,"kind":"function","modifiers":[],"name":"getGasAndDataLimits","nameLocation":"1215:19:0","nodeType":"FunctionDefinition","overrides":{"id":49,"nodeType":"OverrideSpecifier","overrides":[],"src":"1252:8:0"},"parameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"1234:2:0"},"returnParameters":{"id":53,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52,"mutability":"mutable","name":"limits","nameLocation":"1339:6:0","nodeType":"VariableDeclaration","scope":63,"src":"1304:41:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_GasAndDataLimits_$401_memory_ptr","typeString":"struct IPaymaster.GasAndDataLimits"},"typeName":{"id":51,"nodeType":"UserDefinedTypeName","pathNode":{"id":50,"name":"IPaymaster.GasAndDataLimits","nodeType":"IdentifierPath","referencedDeclaration":401,"src":"1304:27:0"},"referencedDeclaration":401,"src":"1304:27:0","typeDescriptions":{"typeIdentifier":"t_struct$_GasAndDataLimits_$401_storage_ptr","typeString":"struct IPaymaster.GasAndDataLimits"}},"visibility":"internal"}],"src":"1294:57:0"},"scope":199,"src":"1206:362:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":87,"nodeType":"Block","src":"1828:179:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":72,"name":"_trustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"1854:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":71,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1846:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"1846:7:0","typeDescriptions":{}}},"id":73,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1846:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":74,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"1876:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":75,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayData","nodeType":"MemberAccess","referencedDeclaration":1332,"src":"1876:22:0","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":76,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"forwarder","nodeType":"MemberAccess","referencedDeclaration":1321,"src":"1876:32:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1846:62:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"466f72776172646572206973206e6f742074727573746564","id":78,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1910:26:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429","typeString":"literal_string \"Forwarder is not trusted\""},"value":"Forwarder is not trusted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429","typeString":"literal_string \"Forwarder is not trusted\""}],"id":69,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1838:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":79,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1838:99:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80,"nodeType":"ExpressionStatement","src":"1838:99:0"},{"expression":{"arguments":[{"id":84,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"1987:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}],"expression":{"id":81,"name":"GsnEip712Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1306,"src":"1947:16:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GsnEip712Library_$1306_$","typeString":"type(library GsnEip712Library)"}},"id":83,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verifyForwarderTrusted","nodeType":"MemberAccess","referencedDeclaration":1063,"src":"1947:39:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_RelayRequest_$1333_calldata_ptr_$returns$__$","typeString":"function (struct GsnTypes.RelayRequest calldata) view"}},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1947:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86,"nodeType":"ExpressionStatement","src":"1947:53:0"}]},"functionSelector":"a5dcd07b","id":88,"implemented":true,"kind":"function","modifiers":[],"name":"_verifyForwarder","nameLocation":"1742:16:0","nodeType":"FunctionDefinition","parameters":{"id":67,"nodeType":"ParameterList","parameters":[{"constant":false,"id":66,"mutability":"mutable","name":"relayRequest","nameLocation":"1790:12:0","nodeType":"VariableDeclaration","scope":88,"src":"1759:43:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest"},"typeName":{"id":65,"nodeType":"UserDefinedTypeName","pathNode":{"id":64,"name":"GsnTypes.RelayRequest","nodeType":"IdentifierPath","referencedDeclaration":1333,"src":"1759:21:0"},"referencedDeclaration":1333,"src":"1759:21:0","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_storage_ptr","typeString":"struct GsnTypes.RelayRequest"}},"visibility":"internal"}],"src":"1758:45:0"},"returnParameters":{"id":68,"nodeType":"ParameterList","parameters":[],"src":"1828:0:0"},"scope":199,"src":"1733:274:0","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":100,"nodeType":"Block","src":"2159:97:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":95,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":91,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2177:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":92,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2177:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":93,"name":"getHubAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"2191:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":94,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2191:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2177:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"63616e206f6e6c792062652063616c6c65642062792052656c6179487562","id":96,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2205:32:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb","typeString":"literal_string \"can only be called by RelayHub\""},"value":"can only be called by RelayHub"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb","typeString":"literal_string \"can only be called by RelayHub\""}],"id":90,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2169:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":97,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2169:69:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":98,"nodeType":"ExpressionStatement","src":"2169:69:0"},{"id":99,"nodeType":"PlaceholderStatement","src":"2248:1:0"}]},"id":101,"name":"relayHubOnly","nameLocation":"2144:12:0","nodeType":"ModifierDefinition","parameters":{"id":89,"nodeType":"ParameterList","parameters":[],"src":"2156:2:0"},"src":"2135:121:0","virtual":false,"visibility":"internal"},{"body":{"id":113,"nodeType":"Block","src":"2315:31:0","statements":[{"expression":{"id":111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":109,"name":"relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"2325:8:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":110,"name":"hub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104,"src":"2336:3:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"src":"2325:14:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"id":112,"nodeType":"ExpressionStatement","src":"2325:14:0"}]},"functionSelector":"7bb05264","id":114,"implemented":true,"kind":"function","modifiers":[{"id":107,"kind":"modifierInvocation","modifierName":{"id":106,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2305:9:0"},"nodeType":"ModifierInvocation","src":"2305:9:0"}],"name":"setRelayHub","nameLocation":"2271:11:0","nodeType":"FunctionDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"hub","nameLocation":"2293:3:0","nodeType":"VariableDeclaration","scope":114,"src":"2283:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"},"typeName":{"id":103,"nodeType":"UserDefinedTypeName","pathNode":{"id":102,"name":"IRelayHub","nodeType":"IdentifierPath","referencedDeclaration":737,"src":"2283:9:0"},"referencedDeclaration":737,"src":"2283:9:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"visibility":"internal"}],"src":"2282:15:0"},"returnParameters":{"id":108,"nodeType":"ParameterList","parameters":[],"src":"2315:0:0"},"scope":199,"src":"2262:84:0","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":125,"nodeType":"Block","src":"2425:46:0","statements":[{"expression":{"id":123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":121,"name":"_trustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"2435:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":122,"name":"forwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"2455:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2435:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":124,"nodeType":"ExpressionStatement","src":"2435:29:0"}]},"functionSelector":"da742228","id":126,"implemented":true,"kind":"function","modifiers":[{"id":119,"kind":"modifierInvocation","modifierName":{"id":118,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2415:9:0"},"nodeType":"ModifierInvocation","src":"2415:9:0"}],"name":"setTrustedForwarder","nameLocation":"2361:19:0","nodeType":"FunctionDefinition","parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116,"mutability":"mutable","name":"forwarder","nameLocation":"2389:9:0","nodeType":"VariableDeclaration","scope":126,"src":"2381:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"2381:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2380:19:0"},"returnParameters":{"id":120,"nodeType":"ParameterList","parameters":[],"src":"2425:0:0"},"scope":199,"src":"2352:119:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[413],"body":{"id":134,"nodeType":"Block","src":"2551:41:0","statements":[{"expression":{"id":132,"name":"_trustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"2568:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":131,"id":133,"nodeType":"Return","src":"2561:24:0"}]},"functionSelector":"7da0a877","id":135,"implemented":true,"kind":"function","modifiers":[],"name":"trustedForwarder","nameLocation":"2486:16:0","nodeType":"FunctionDefinition","overrides":{"id":128,"nodeType":"OverrideSpecifier","overrides":[],"src":"2525:8:0"},"parameters":{"id":127,"nodeType":"ParameterList","parameters":[],"src":"2502:2:0"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":135,"src":"2543:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"2543:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2542:9:0"},"scope":199,"src":"2477:115:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[425],"body":{"id":150,"nodeType":"Block","src":"2725:57:0","statements":[{"expression":{"arguments":[{"arguments":[{"id":146,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2769:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_BasePaymaster_$199","typeString":"contract BasePaymaster"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BasePaymaster_$199","typeString":"contract BasePaymaster"}],"id":145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2761:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":144,"name":"address","nodeType":"ElementaryTypeName","src":"2761:7:0","typeDescriptions":{}}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2761:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":142,"name":"relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"2742:8:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"id":143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":701,"src":"2742:18:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2742:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":141,"id":149,"nodeType":"Return","src":"2735:40:0"}]},"documentation":{"id":136,"nodeType":"StructuredDocumentation","src":"2599:39:0","text":"check current deposit on relay hub."},"functionSelector":"2afe31c1","id":151,"implemented":true,"kind":"function","modifiers":[],"name":"getRelayHubDeposit","nameLocation":"2652:18:0","nodeType":"FunctionDefinition","overrides":{"id":138,"nodeType":"OverrideSpecifier","overrides":[],"src":"2688:8:0"},"parameters":{"id":137,"nodeType":"ParameterList","parameters":[],"src":"2670:2:0"},"returnParameters":{"id":141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":151,"src":"2719:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":139,"name":"uint","nodeType":"ElementaryTypeName","src":"2719:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2718:6:0"},"scope":199,"src":"2643:139:0","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":179,"nodeType":"Block","src":"3000:147:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":157,"name":"relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"3026:8:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}],"id":156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3018:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":155,"name":"address","nodeType":"ElementaryTypeName","src":"3018:7:0","typeDescriptions":{}}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3018:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3047:1:0","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":160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3039:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"3039:7:0","typeDescriptions":{}}},"id":162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3039:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3018:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"72656c6179206875622061646472657373206e6f7420736574","id":164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3051:27:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313","typeString":"literal_string \"relay hub address not set\""},"value":"relay hub address not set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313","typeString":"literal_string \"relay hub address not set\""}],"id":154,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3010:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3010:69:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":166,"nodeType":"ExpressionStatement","src":"3010:69:0"},{"expression":{"arguments":[{"arguments":[{"id":175,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3134:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_BasePaymaster_$199","typeString":"contract BasePaymaster"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BasePaymaster_$199","typeString":"contract BasePaymaster"}],"id":174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3126:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":173,"name":"address","nodeType":"ElementaryTypeName","src":"3126:7:0","typeDescriptions":{}}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3126:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":167,"name":"relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"3089:8:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"id":169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositFor","nodeType":"MemberAccess","referencedDeclaration":609,"src":"3089:19:0","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$__$","typeString":"function (address) payable external"}},"id":172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":170,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3115:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"3115:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3089:36:0","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$__$value","typeString":"function (address) payable external"}},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3089:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":178,"nodeType":"ExpressionStatement","src":"3089:51:0"}]},"id":180,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":152,"nodeType":"ParameterList","parameters":[],"src":"2972:2:0"},"returnParameters":{"id":153,"nodeType":"ParameterList","parameters":[],"src":"3000:0:0"},"scope":199,"src":"2965:182:0","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":197,"nodeType":"Block","src":"3281:50:0","statements":[{"expression":{"arguments":[{"id":193,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"3309:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":194,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"3317:6:0","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":190,"name":"relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"3291:8:0","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":617,"src":"3291:17:0","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_payable_$returns$__$","typeString":"function (uint256,address payable) external"}},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3291:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":196,"nodeType":"ExpressionStatement","src":"3291:33:0"}]},"documentation":{"id":181,"nodeType":"StructuredDocumentation","src":"3153:34:0","text":"withdraw deposit from relayHub"},"functionSelector":"2d14c4b7","id":198,"implemented":true,"kind":"function","modifiers":[{"id":188,"kind":"modifierInvocation","modifierName":{"id":187,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"3271:9:0"},"nodeType":"ModifierInvocation","src":"3271:9:0"}],"name":"withdrawRelayHubDepositTo","nameLocation":"3201:25:0","nodeType":"FunctionDefinition","parameters":{"id":186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":183,"mutability":"mutable","name":"amount","nameLocation":"3232:6:0","nodeType":"VariableDeclaration","scope":198,"src":"3227:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":182,"name":"uint","nodeType":"ElementaryTypeName","src":"3227:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":185,"mutability":"mutable","name":"target","nameLocation":"3256:6:0","nodeType":"VariableDeclaration","scope":198,"src":"3240:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":184,"name":"address","nodeType":"ElementaryTypeName","src":"3240:15:0","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"3226:37:0"},"returnParameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"3281:0:0"},"scope":199,"src":"3192:139:0","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":200,"src":"468:2865:0","usedErrors":[]}],"src":"41:3293:0"},"id":0},"@opengsn/contracts/src/BaseRelayRecipient.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/BaseRelayRecipient.sol","exportedSymbols":{"BaseRelayRecipient":[300],"IRelayRecipient":[766]},"id":301,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":201,"literals":["solidity",">=","0.6",".9"],"nodeType":"PragmaDirective","src":"70:24:1"},{"absolutePath":"@opengsn/contracts/src/interfaces/IRelayRecipient.sol","file":"./interfaces/IRelayRecipient.sol","id":202,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":301,"sourceUnit":767,"src":"96:42:1","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":204,"name":"IRelayRecipient","nodeType":"IdentifierPath","referencedDeclaration":766,"src":"343:15:1"},"id":205,"nodeType":"InheritanceSpecifier","src":"343:15:1"}],"canonicalName":"BaseRelayRecipient","contractDependencies":[],"contractKind":"contract","documentation":{"id":203,"nodeType":"StructuredDocumentation","src":"140:162:1","text":" A base contract to be inherited by any contract that want to receive relayed transactions\n A subclass must use \"_msgSender()\" instead of \"msg.sender\""},"fullyImplemented":false,"id":300,"linearizedBaseContracts":[300,766],"name":"BaseRelayRecipient","nameLocation":"321:18:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":207,"mutability":"mutable","name":"_trustedForwarder","nameLocation":"445:17:1","nodeType":"VariableDeclaration","scope":300,"src":"429:33:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":206,"name":"address","nodeType":"ElementaryTypeName","src":"429:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":214,"nodeType":"Block","src":"534:41:1","statements":[{"expression":{"id":212,"name":"_trustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":207,"src":"551:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":211,"id":213,"nodeType":"Return","src":"544:24:1"}]},"functionSelector":"7da0a877","id":215,"implemented":true,"kind":"function","modifiers":[],"name":"trustedForwarder","nameLocation":"478:16:1","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"494:2:1"},"returnParameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":215,"src":"526:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":209,"name":"address","nodeType":"ElementaryTypeName","src":"526:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"525:9:1"},"scope":300,"src":"469:106:1","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":224,"nodeType":"Block","src":"640:47:1","statements":[{"expression":{"id":222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":220,"name":"_trustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":207,"src":"650:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":221,"name":"_forwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":217,"src":"670:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"650:30:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":223,"nodeType":"ExpressionStatement","src":"650:30:1"}]},"id":225,"implemented":true,"kind":"function","modifiers":[],"name":"_setTrustedForwarder","nameLocation":"590:20:1","nodeType":"FunctionDefinition","parameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"_forwarder","nameLocation":"619:10:1","nodeType":"VariableDeclaration","scope":225,"src":"611:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":216,"name":"address","nodeType":"ElementaryTypeName","src":"611:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"610:20:1"},"returnParameters":{"id":219,"nodeType":"ParameterList","parameters":[],"src":"640:0:1"},"scope":300,"src":"581:106:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[748],"body":{"id":237,"nodeType":"Block","src":"783:54:1","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":233,"name":"forwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":227,"src":"800:9:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":234,"name":"_trustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":207,"src":"813:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"800:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":232,"id":236,"nodeType":"Return","src":"793:37:1"}]},"functionSelector":"572b6c05","id":238,"implemented":true,"kind":"function","modifiers":[],"name":"isTrustedForwarder","nameLocation":"702:18:1","nodeType":"FunctionDefinition","overrides":{"id":229,"nodeType":"OverrideSpecifier","overrides":[],"src":"755:8:1"},"parameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"forwarder","nameLocation":"729:9:1","nodeType":"VariableDeclaration","scope":238,"src":"721:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":226,"name":"address","nodeType":"ElementaryTypeName","src":"721:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"720:19:1"},"returnParameters":{"id":232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":231,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":238,"src":"777:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":230,"name":"bool","nodeType":"ElementaryTypeName","src":"777:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"776:6:1"},"scope":300,"src":"693:144:1","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[754],"body":{"id":264,"nodeType":"Block","src":"1164:472:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":245,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1178:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"1178:8:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1178:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3230","id":248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1197:2:1","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"1178:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"expression":{"id":251,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1222:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1222:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":250,"name":"isTrustedForwarder","nodeType":"Identifier","overloadedDeclarations":[238],"referencedDeclaration":238,"src":"1203:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1203:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1178:55:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":262,"nodeType":"Block","src":"1589:41:1","statements":[{"expression":{"id":260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":257,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"1603:3:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":258,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1609:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1609:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1603:16:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":261,"nodeType":"ExpressionStatement","src":"1603:16:1"}]},"id":263,"nodeType":"IfStatement","src":"1174:456:1","trueBody":{"id":256,"nodeType":"Block","src":"1235:348:1","statements":[{"AST":{"nodeType":"YulBlock","src":"1490:83:1","statements":[{"nodeType":"YulAssignment","src":"1508:51:1","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1519:2:1","type":"","value":"96"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"1539:12:1"},"nodeType":"YulFunctionCall","src":"1539:14:1"},{"kind":"number","nodeType":"YulLiteral","src":"1554:2:1","type":"","value":"20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1535:3:1"},"nodeType":"YulFunctionCall","src":"1535:22:1"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1522:12:1"},"nodeType":"YulFunctionCall","src":"1522:36:1"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1515:3:1"},"nodeType":"YulFunctionCall","src":"1515:44:1"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"1508:3:1"}]}]},"evmVersion":"london","externalReferences":[{"declaration":243,"isOffset":false,"isSlot":false,"src":"1508:3:1","valueSize":1}],"id":255,"nodeType":"InlineAssembly","src":"1481:92:1"}]}}]},"documentation":{"id":239,"nodeType":"StructuredDocumentation","src":"843:241:1","text":" return the sender of this call.\n if the call came through our trusted forwarder, return the original sender.\n otherwise, return `msg.sender`.\n should be used in the contract anywhere instead of msg.sender"},"id":265,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"1098:10:1","nodeType":"FunctionDefinition","overrides":{"id":241,"nodeType":"OverrideSpecifier","overrides":[],"src":"1120:8:1"},"parameters":{"id":240,"nodeType":"ParameterList","parameters":[],"src":"1108:2:1"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"ret","nameLocation":"1159:3:1","nodeType":"VariableDeclaration","scope":265,"src":"1151:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":242,"name":"address","nodeType":"ElementaryTypeName","src":"1151:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1150:13:1"},"scope":300,"src":"1089:547:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[760],"body":{"id":298,"nodeType":"Block","src":"2148:185:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":272,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2162:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"2162:8:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2162:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3230","id":275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2181:2:1","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"2162:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"expression":{"id":278,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2206:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2206:10:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":277,"name":"isTrustedForwarder","nodeType":"Identifier","overloadedDeclarations":[238],"referencedDeclaration":238,"src":"2187:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2187:30:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2162:55:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":296,"nodeType":"Block","src":"2287:40:1","statements":[{"expression":{"expression":{"id":293,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2308:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"2308:8:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":271,"id":295,"nodeType":"Return","src":"2301:15:1"}]},"id":297,"nodeType":"IfStatement","src":"2158:169:1","trueBody":{"id":292,"nodeType":"Block","src":"2219:62:1","statements":[{"expression":{"baseExpression":{"expression":{"id":282,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2240:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"2240:8:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":285,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2251:3:1","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"2251:8:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2251:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"3230","id":288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2267:2:1","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"2251:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2240:30:1","startExpression":{"hexValue":"30","id":284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2249:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":271,"id":291,"nodeType":"Return","src":"2233:37:1"}]}}]},"documentation":{"id":266,"nodeType":"StructuredDocumentation","src":"1642:421:1","text":" return the msg.data of this call.\n if the call came through our trusted forwarder, then the real sender was appended as the last 20 bytes\n of the msg.data - so this method will strip those 20 bytes off.\n otherwise (if the call was made directly and not through the forwarder), return `msg.data`\n should be used in the contract instead of msg.data, where this difference matters."},"id":299,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"2077:8:1","nodeType":"FunctionDefinition","overrides":{"id":268,"nodeType":"OverrideSpecifier","overrides":[],"src":"2097:8:1"},"parameters":{"id":267,"nodeType":"ParameterList","parameters":[],"src":"2085:2:1"},"returnParameters":{"id":271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":270,"mutability":"mutable","name":"ret","nameLocation":"2143:3:1","nodeType":"VariableDeclaration","scope":299,"src":"2128:18:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":269,"name":"bytes","nodeType":"ElementaryTypeName","src":"2128:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2127:20:1"},"scope":300,"src":"2068:265:1","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":301,"src":"303:2032:1","usedErrors":[]}],"src":"70:2266:1"},"id":1},"@opengsn/contracts/src/forwarder/IForwarder.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/forwarder/IForwarder.sol","exportedSymbols":{"IForwarder":[388]},"id":389,"license":"GPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":302,"literals":["solidity",">=","0.7",".6"],"nodeType":"PragmaDirective","src":"41:24:2"},{"id":303,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"66:19:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IForwarder","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":388,"linearizedBaseContracts":[388],"name":"IForwarder","nameLocation":"97:10:2","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IForwarder.ForwardRequest","id":318,"members":[{"constant":false,"id":305,"mutability":"mutable","name":"from","nameLocation":"155:4:2","nodeType":"VariableDeclaration","scope":318,"src":"147:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":304,"name":"address","nodeType":"ElementaryTypeName","src":"147:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":307,"mutability":"mutable","name":"to","nameLocation":"177:2:2","nodeType":"VariableDeclaration","scope":318,"src":"169:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":306,"name":"address","nodeType":"ElementaryTypeName","src":"169:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":309,"mutability":"mutable","name":"value","nameLocation":"197:5:2","nodeType":"VariableDeclaration","scope":318,"src":"189:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":308,"name":"uint256","nodeType":"ElementaryTypeName","src":"189:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":311,"mutability":"mutable","name":"gas","nameLocation":"220:3:2","nodeType":"VariableDeclaration","scope":318,"src":"212:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":310,"name":"uint256","nodeType":"ElementaryTypeName","src":"212:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":313,"mutability":"mutable","name":"nonce","nameLocation":"241:5:2","nodeType":"VariableDeclaration","scope":318,"src":"233:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"233:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":315,"mutability":"mutable","name":"data","nameLocation":"262:4:2","nodeType":"VariableDeclaration","scope":318,"src":"256:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":314,"name":"bytes","nodeType":"ElementaryTypeName","src":"256:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":317,"mutability":"mutable","name":"validUntil","nameLocation":"284:10:2","nodeType":"VariableDeclaration","scope":318,"src":"276:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":316,"name":"uint256","nodeType":"ElementaryTypeName","src":"276:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ForwardRequest","nameLocation":"122:14:2","nodeType":"StructDefinition","scope":388,"src":"115:186:2","visibility":"public"},{"anonymous":false,"eventSelector":"4bc68689cbe89a4a6333a3ab0a70093874da3e5bfb71e93102027f3f073687d8","id":324,"name":"DomainRegistered","nameLocation":"313:16:2","nodeType":"EventDefinition","parameters":{"id":323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":320,"indexed":true,"mutability":"mutable","name":"domainSeparator","nameLocation":"346:15:2","nodeType":"VariableDeclaration","scope":324,"src":"330:31:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"330:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":322,"indexed":false,"mutability":"mutable","name":"domainValue","nameLocation":"369:11:2","nodeType":"VariableDeclaration","scope":324,"src":"363:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":321,"name":"bytes","nodeType":"ElementaryTypeName","src":"363:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"329:52:2"},"src":"307:75:2"},{"anonymous":false,"eventSelector":"64d6bce64323458c44643c51fe45113efc882082f7b7fd5f09f0d69d2eedb202","id":330,"name":"RequestTypeRegistered","nameLocation":"394:21:2","nodeType":"EventDefinition","parameters":{"id":329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":326,"indexed":true,"mutability":"mutable","name":"typeHash","nameLocation":"432:8:2","nodeType":"VariableDeclaration","scope":330,"src":"416:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"416:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":328,"indexed":false,"mutability":"mutable","name":"typeStr","nameLocation":"449:7:2","nodeType":"VariableDeclaration","scope":330,"src":"442:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":327,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:42:2"},"src":"388:70:2"},{"functionSelector":"2d0335ab","id":337,"implemented":false,"kind":"function","modifiers":[],"name":"getNonce","nameLocation":"473:8:2","nodeType":"FunctionDefinition","parameters":{"id":333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":332,"mutability":"mutable","name":"from","nameLocation":"490:4:2","nodeType":"VariableDeclaration","scope":337,"src":"482:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":331,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:14:2"},"returnParameters":{"id":336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":337,"src":"526:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":334,"name":"uint256","nodeType":"ElementaryTypeName","src":"526:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"525:9:2"},"scope":388,"src":"464:71:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":338,"nodeType":"StructuredDocumentation","src":"541:251:2","text":" verify the transaction would execute.\n validate the signature and the nonce of the request.\n revert if either signature or nonce are incorrect.\n also revert if domainSeparator or requestTypeHash are not registered."},"functionSelector":"ad9f99c7","id":352,"implemented":false,"kind":"function","modifiers":[],"name":"verify","nameLocation":"806:6:2","nodeType":"FunctionDefinition","parameters":{"id":350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":341,"mutability":"mutable","name":"forwardRequest","nameLocation":"846:14:2","nodeType":"VariableDeclaration","scope":352,"src":"822:38:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest"},"typeName":{"id":340,"nodeType":"UserDefinedTypeName","pathNode":{"id":339,"name":"ForwardRequest","nodeType":"IdentifierPath","referencedDeclaration":318,"src":"822:14:2"},"referencedDeclaration":318,"src":"822:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_storage_ptr","typeString":"struct IForwarder.ForwardRequest"}},"visibility":"internal"},{"constant":false,"id":343,"mutability":"mutable","name":"domainSeparator","nameLocation":"878:15:2","nodeType":"VariableDeclaration","scope":352,"src":"870:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"870:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":345,"mutability":"mutable","name":"requestTypeHash","nameLocation":"911:15:2","nodeType":"VariableDeclaration","scope":352,"src":"903:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"903:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":347,"mutability":"mutable","name":"suffixData","nameLocation":"951:10:2","nodeType":"VariableDeclaration","scope":352,"src":"936:25:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":346,"name":"bytes","nodeType":"ElementaryTypeName","src":"936:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":349,"mutability":"mutable","name":"signature","nameLocation":"986:9:2","nodeType":"VariableDeclaration","scope":352,"src":"971:24:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":348,"name":"bytes","nodeType":"ElementaryTypeName","src":"971:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"812:189:2"},"returnParameters":{"id":351,"nodeType":"ParameterList","parameters":[],"src":"1015:0:2"},"scope":388,"src":"797:219:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":353,"nodeType":"StructuredDocumentation","src":"1022:621:2","text":" execute a transaction\n @param forwardRequest - all transaction parameters\n @param domainSeparator - domain used when signing this request\n @param requestTypeHash - request type used when signing this request.\n @param suffixData - the extension data used when signing this request.\n @param signature - signature to validate.\n the transaction is verified, and then executed.\n the success and ret of \"call\" are returned.\n This method would revert only verification errors. target errors\n are reported using the returned \"success\" and ret string"},"functionSelector":"e024dc7f","id":371,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"1657:7:2","nodeType":"FunctionDefinition","parameters":{"id":365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":356,"mutability":"mutable","name":"forwardRequest","nameLocation":"1698:14:2","nodeType":"VariableDeclaration","scope":371,"src":"1674:38:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest"},"typeName":{"id":355,"nodeType":"UserDefinedTypeName","pathNode":{"id":354,"name":"ForwardRequest","nodeType":"IdentifierPath","referencedDeclaration":318,"src":"1674:14:2"},"referencedDeclaration":318,"src":"1674:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_storage_ptr","typeString":"struct IForwarder.ForwardRequest"}},"visibility":"internal"},{"constant":false,"id":358,"mutability":"mutable","name":"domainSeparator","nameLocation":"1730:15:2","nodeType":"VariableDeclaration","scope":371,"src":"1722:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":357,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1722:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":360,"mutability":"mutable","name":"requestTypeHash","nameLocation":"1763:15:2","nodeType":"VariableDeclaration","scope":371,"src":"1755:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":359,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1755:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"suffixData","nameLocation":"1803:10:2","nodeType":"VariableDeclaration","scope":371,"src":"1788:25:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":361,"name":"bytes","nodeType":"ElementaryTypeName","src":"1788:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":364,"mutability":"mutable","name":"signature","nameLocation":"1838:9:2","nodeType":"VariableDeclaration","scope":371,"src":"1823:24:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":363,"name":"bytes","nodeType":"ElementaryTypeName","src":"1823:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1664:189:2"},"returnParameters":{"id":370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":367,"mutability":"mutable","name":"success","nameLocation":"1893:7:2","nodeType":"VariableDeclaration","scope":371,"src":"1888:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":366,"name":"bool","nodeType":"ElementaryTypeName","src":"1888:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":369,"mutability":"mutable","name":"ret","nameLocation":"1915:3:2","nodeType":"VariableDeclaration","scope":371,"src":"1902:16:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":368,"name":"bytes","nodeType":"ElementaryTypeName","src":"1902:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1887:32:2"},"scope":388,"src":"1648:272:2","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":372,"nodeType":"StructuredDocumentation","src":"1926:285:2","text":" Register a new Request typehash.\n @param typeName - the name of the request type.\n @param typeSuffix - any extra data after the generic params.\n  (must add at least one param. The generic ForwardRequest type is always registered by the constructor)"},"functionSelector":"d9210be5","id":379,"implemented":false,"kind":"function","modifiers":[],"name":"registerRequestType","nameLocation":"2225:19:2","nodeType":"FunctionDefinition","parameters":{"id":377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":374,"mutability":"mutable","name":"typeName","nameLocation":"2261:8:2","nodeType":"VariableDeclaration","scope":379,"src":"2245:24:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":373,"name":"string","nodeType":"ElementaryTypeName","src":"2245:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":376,"mutability":"mutable","name":"typeSuffix","nameLocation":"2287:10:2","nodeType":"VariableDeclaration","scope":379,"src":"2271:26:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":375,"name":"string","nodeType":"ElementaryTypeName","src":"2271:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2244:54:2"},"returnParameters":{"id":378,"nodeType":"ParameterList","parameters":[],"src":"2307:0:2"},"scope":388,"src":"2216:92:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":380,"nodeType":"StructuredDocumentation","src":"2314:452:2","text":" Register a new domain separator.\n The domain separator must have the following fields: name,version,chainId, verifyingContract.\n the chainId is the current network's chainId, and the verifyingContract is this forwarder.\n This method is given the domain name and version to create and register the domain separator value.\n @param name the domain's display name\n @param version the domain/protocol version"},"functionSelector":"9c7b4592","id":387,"implemented":false,"kind":"function","modifiers":[],"name":"registerDomainSeparator","nameLocation":"2780:23:2","nodeType":"FunctionDefinition","parameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":382,"mutability":"mutable","name":"name","nameLocation":"2820:4:2","nodeType":"VariableDeclaration","scope":387,"src":"2804:20:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":381,"name":"string","nodeType":"ElementaryTypeName","src":"2804:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":384,"mutability":"mutable","name":"version","nameLocation":"2842:7:2","nodeType":"VariableDeclaration","scope":387,"src":"2826:23:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":383,"name":"string","nodeType":"ElementaryTypeName","src":"2826:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2803:47:2"},"returnParameters":{"id":386,"nodeType":"ParameterList","parameters":[],"src":"2859:0:2"},"scope":388,"src":"2771:89:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":389,"src":"87:2775:2","usedErrors":[]}],"src":"41:2822:2"},"id":2},"@opengsn/contracts/src/interfaces/IPaymaster.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/interfaces/IPaymaster.sol","exportedSymbols":{"GsnTypes":[1334],"IForwarder":[388],"IPaymaster":[461]},"id":462,"license":"GPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":390,"literals":["solidity",">=","0.7",".6"],"nodeType":"PragmaDirective","src":"41:24:3"},{"id":391,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"66:19:3"},{"absolutePath":"@opengsn/contracts/src/utils/GsnTypes.sol","file":"../utils/GsnTypes.sol","id":392,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":462,"sourceUnit":1335,"src":"87:31:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPaymaster","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":461,"linearizedBaseContracts":[461],"name":"IPaymaster","nameLocation":"130:10:3","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPaymaster.GasAndDataLimits","id":401,"members":[{"constant":false,"id":394,"mutability":"mutable","name":"acceptanceBudget","nameLocation":"1801:16:3","nodeType":"VariableDeclaration","scope":401,"src":"1793:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":393,"name":"uint256","nodeType":"ElementaryTypeName","src":"1793:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":396,"mutability":"mutable","name":"preRelayedCallGasLimit","nameLocation":"1835:22:3","nodeType":"VariableDeclaration","scope":401,"src":"1827:30:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":395,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":398,"mutability":"mutable","name":"postRelayedCallGasLimit","nameLocation":"1875:23:3","nodeType":"VariableDeclaration","scope":401,"src":"1867:31:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":397,"name":"uint256","nodeType":"ElementaryTypeName","src":"1867:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":400,"mutability":"mutable","name":"calldataSizeLimit","nameLocation":"1916:17:3","nodeType":"VariableDeclaration","scope":401,"src":"1908:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":399,"name":"uint256","nodeType":"ElementaryTypeName","src":"1908:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"GasAndDataLimits","nameLocation":"1766:16:3","nodeType":"StructDefinition","scope":461,"src":"1759:181:3","visibility":"public"},{"documentation":{"id":402,"nodeType":"StructuredDocumentation","src":"1946:95:3","text":" Return the Gas Limits and msg.data max size constants used by the Paymaster."},"functionSelector":"b039a88f","id":408,"implemented":false,"kind":"function","modifiers":[],"name":"getGasAndDataLimits","nameLocation":"2055:19:3","nodeType":"FunctionDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[],"src":"2074:2:3"},"returnParameters":{"id":407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":406,"mutability":"mutable","name":"limits","nameLocation":"2145:6:3","nodeType":"VariableDeclaration","scope":408,"src":"2121:30:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_GasAndDataLimits_$401_memory_ptr","typeString":"struct IPaymaster.GasAndDataLimits"},"typeName":{"id":405,"nodeType":"UserDefinedTypeName","pathNode":{"id":404,"name":"GasAndDataLimits","nodeType":"IdentifierPath","referencedDeclaration":401,"src":"2121:16:3"},"referencedDeclaration":401,"src":"2121:16:3","typeDescriptions":{"typeIdentifier":"t_struct$_GasAndDataLimits_$401_storage_ptr","typeString":"struct IPaymaster.GasAndDataLimits"}},"visibility":"internal"}],"src":"2111:46:3"},"scope":461,"src":"2046:112:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7da0a877","id":413,"implemented":false,"kind":"function","modifiers":[],"name":"trustedForwarder","nameLocation":"2173:16:3","nodeType":"FunctionDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[],"src":"2189:2:3"},"returnParameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":413,"src":"2215:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":410,"name":"address","nodeType":"ElementaryTypeName","src":"2215:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2214:9:3"},"scope":461,"src":"2164:60:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":414,"nodeType":"StructuredDocumentation","src":"2226:48:3","text":" return the relayHub of this contract."},"functionSelector":"74e861d6","id":419,"implemented":false,"kind":"function","modifiers":[],"name":"getHubAddr","nameLocation":"2288:10:3","nodeType":"FunctionDefinition","parameters":{"id":415,"nodeType":"ParameterList","parameters":[],"src":"2298:2:3"},"returnParameters":{"id":418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":419,"src":"2324:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"2324:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2323:9:3"},"scope":461,"src":"2279:54:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":420,"nodeType":"StructuredDocumentation","src":"2339:161:3","text":" Can be used to determine if the contract can pay for incoming calls before making any.\n @return the paymaster's deposit in the RelayHub."},"functionSelector":"2afe31c1","id":425,"implemented":false,"kind":"function","modifiers":[],"name":"getRelayHubDeposit","nameLocation":"2514:18:3","nodeType":"FunctionDefinition","parameters":{"id":421,"nodeType":"ParameterList","parameters":[],"src":"2532:2:3"},"returnParameters":{"id":424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":425,"src":"2558:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":422,"name":"uint256","nodeType":"ElementaryTypeName","src":"2558:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2557:9:3"},"scope":461,"src":"2505:62:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":426,"nodeType":"StructuredDocumentation","src":"2573:2198:3","text":" Called by Relay (and RelayHub), to validate if the paymaster agrees to pay for this call.\n MUST be protected with relayHubOnly() in case it modifies state.\n The Paymaster rejects by the following \"revert\" operations\n  - preRelayedCall() method reverts\n  - the forwarder reverts because of nonce or signature error\n  - the paymaster returned \"rejectOnRecipientRevert\", and the recipient contract reverted.\n In any of the above cases, all paymaster calls (and recipient call) are reverted.\n In any other case, the paymaster agrees to pay for the gas cost of the transaction (note\n  that this includes also postRelayedCall revert)\n The rejectOnRecipientRevert flag means the Paymaster \"delegate\" the rejection to the recipient\n  code.  It also means the Paymaster trust the recipient to reject fast: both preRelayedCall,\n  forwarder check and receipient checks must fit into the GasLimits.acceptanceBudget,\n  otherwise the TX is paid by the Paymaster.\n  @param relayRequest - the full relay request structure\n  @param signature - user's EIP712-compatible signature of the {@link relayRequest}.\n              Note that in most cases the paymaster shouldn't try use it at all. It is always checked\n              by the forwarder immediately after preRelayedCall returns.\n  @param approvalData - extra dapp-specific data (e.g. signature from trusted party)\n  @param maxPossibleGas - based on values returned from {@link getGasAndDataLimits},\n         the RelayHub will calculate the maximum possible amount of gas the user may be charged for.\n         In order to convert this value to wei, the Paymaster has to call \"relayHub.calculateCharge()\"\n  return:\n      a context to be passed to postRelayedCall\n      rejectOnRecipientRevert - TRUE if paymaster want to reject the TX if the recipient reverts.\n          FALSE means that rejects by the recipient will be completed on chain, and paid by the paymaster.\n          (note that in the latter case, the preRelayedCall and postRelayedCall are not reverted)."},"functionSelector":"00be5dd4","id":442,"implemented":false,"kind":"function","modifiers":[],"name":"preRelayedCall","nameLocation":"4785:14:3","nodeType":"FunctionDefinition","parameters":{"id":436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":429,"mutability":"mutable","name":"relayRequest","nameLocation":"4840:12:3","nodeType":"VariableDeclaration","scope":442,"src":"4809:43:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest"},"typeName":{"id":428,"nodeType":"UserDefinedTypeName","pathNode":{"id":427,"name":"GsnTypes.RelayRequest","nodeType":"IdentifierPath","referencedDeclaration":1333,"src":"4809:21:3"},"referencedDeclaration":1333,"src":"4809:21:3","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_storage_ptr","typeString":"struct GsnTypes.RelayRequest"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"signature","nameLocation":"4877:9:3","nodeType":"VariableDeclaration","scope":442,"src":"4862:24:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":430,"name":"bytes","nodeType":"ElementaryTypeName","src":"4862:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":433,"mutability":"mutable","name":"approvalData","nameLocation":"4911:12:3","nodeType":"VariableDeclaration","scope":442,"src":"4896:27:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":432,"name":"bytes","nodeType":"ElementaryTypeName","src":"4896:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":435,"mutability":"mutable","name":"maxPossibleGas","nameLocation":"4941:14:3","nodeType":"VariableDeclaration","scope":442,"src":"4933:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":434,"name":"uint256","nodeType":"ElementaryTypeName","src":"4933:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4799:162:3"},"returnParameters":{"id":441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":438,"mutability":"mutable","name":"context","nameLocation":"5001:7:3","nodeType":"VariableDeclaration","scope":442,"src":"4988:20:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":437,"name":"bytes","nodeType":"ElementaryTypeName","src":"4988:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":440,"mutability":"mutable","name":"rejectOnRecipientRevert","nameLocation":"5015:23:3","nodeType":"VariableDeclaration","scope":442,"src":"5010:28:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":439,"name":"bool","nodeType":"ElementaryTypeName","src":"5010:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4987:52:3"},"scope":461,"src":"4776:264:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":443,"nodeType":"StructuredDocumentation","src":"5046:887:3","text":" This method is called after the actual relayed function call.\n It may be used to record the transaction (e.g. charge the caller by some contract logic) for this call.\n MUST be protected with relayHubOnly() in case it modifies state.\n @param context - the call context, as returned by the preRelayedCall\n @param success - true if the relayed call succeeded, false if it reverted\n @param gasUseWithoutPost - the actual amount of gas used by the entire transaction, EXCEPT\n        the gas used by the postRelayedCall itself.\n @param relayData - the relay params of the request. can be used by relayHub.calculateCharge()\n Revert in this functions causes a revert of the client's relayed call (and preRelayedCall(), but the Paymaster\n is still committed to pay the relay for the entire transaction."},"functionSelector":"76fa01c3","id":455,"implemented":false,"kind":"function","modifiers":[],"name":"postRelayedCall","nameLocation":"5947:15:3","nodeType":"FunctionDefinition","parameters":{"id":453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":445,"mutability":"mutable","name":"context","nameLocation":"5987:7:3","nodeType":"VariableDeclaration","scope":455,"src":"5972:22:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":444,"name":"bytes","nodeType":"ElementaryTypeName","src":"5972:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":447,"mutability":"mutable","name":"success","nameLocation":"6009:7:3","nodeType":"VariableDeclaration","scope":455,"src":"6004:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":446,"name":"bool","nodeType":"ElementaryTypeName","src":"6004:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"gasUseWithoutPost","nameLocation":"6034:17:3","nodeType":"VariableDeclaration","scope":455,"src":"6026:25:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"6026:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":452,"mutability":"mutable","name":"relayData","nameLocation":"6089:9:3","nodeType":"VariableDeclaration","scope":455,"src":"6061:37:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData"},"typeName":{"id":451,"nodeType":"UserDefinedTypeName","pathNode":{"id":450,"name":"GsnTypes.RelayData","nodeType":"IdentifierPath","referencedDeclaration":1326,"src":"6061:18:3"},"referencedDeclaration":1326,"src":"6061:18:3","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_storage_ptr","typeString":"struct GsnTypes.RelayData"}},"visibility":"internal"}],"src":"5962:142:3"},"returnParameters":{"id":454,"nodeType":"ParameterList","parameters":[],"src":"6113:0:3"},"scope":461,"src":"5938:176:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"921276ea","id":460,"implemented":false,"kind":"function","modifiers":[],"name":"versionPaymaster","nameLocation":"6129:16:3","nodeType":"FunctionDefinition","parameters":{"id":456,"nodeType":"ParameterList","parameters":[],"src":"6145:2:3"},"returnParameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":458,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":460,"src":"6171:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":457,"name":"string","nodeType":"ElementaryTypeName","src":"6171:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6170:15:3"},"scope":461,"src":"6120:66:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":462,"src":"120:6068:3","usedErrors":[]}],"src":"41:6148:3"},"id":3},"@opengsn/contracts/src/interfaces/IRelayHub.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/interfaces/IRelayHub.sol","exportedSymbols":{"GsnTypes":[1334],"IForwarder":[388],"IRelayHub":[737],"IStakeManager":[930],"SafeMath":[3180]},"id":738,"license":"GPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":463,"literals":["solidity",">=","0.7",".6"],"nodeType":"PragmaDirective","src":"41:24:4"},{"id":464,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"66:19:4"},{"absolutePath":"@opengsn/contracts/src/utils/GsnTypes.sol","file":"../utils/GsnTypes.sol","id":465,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":738,"sourceUnit":1335,"src":"87:31:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/interfaces/IStakeManager.sol","file":"./IStakeManager.sol","id":466,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":738,"sourceUnit":931,"src":"119:29:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IRelayHub","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":737,"linearizedBaseContracts":[737],"name":"IRelayHub","nameLocation":"160:9:4","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IRelayHub.RelayHubConfig","id":485,"members":[{"constant":false,"id":468,"mutability":"mutable","name":"maxWorkerCount","nameLocation":"281:14:4","nodeType":"VariableDeclaration","scope":485,"src":"273:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":467,"name":"uint256","nodeType":"ElementaryTypeName","src":"273:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":470,"mutability":"mutable","name":"gasReserve","nameLocation":"415:10:4","nodeType":"VariableDeclaration","scope":485,"src":"407:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"407:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":472,"mutability":"mutable","name":"postOverhead","nameLocation":"498:12:4","nodeType":"VariableDeclaration","scope":485,"src":"490:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"490:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":474,"mutability":"mutable","name":"gasOverhead","nameLocation":"694:11:4","nodeType":"VariableDeclaration","scope":485,"src":"686:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":473,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":476,"mutability":"mutable","name":"maximumRecipientDeposit","nameLocation":"830:23:4","nodeType":"VariableDeclaration","scope":485,"src":"822:31:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":475,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":478,"mutability":"mutable","name":"minimumUnstakeDelay","nameLocation":"958:19:4","nodeType":"VariableDeclaration","scope":485,"src":"950:27:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":477,"name":"uint256","nodeType":"ElementaryTypeName","src":"950:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"minimumStake","nameLocation":"1106:12:4","nodeType":"VariableDeclaration","scope":485,"src":"1098:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":479,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"dataGasCostPerByte","nameLocation":"1200:18:4","nodeType":"VariableDeclaration","scope":485,"src":"1192:26:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"1192:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":484,"mutability":"mutable","name":"externalCallDataCostOverhead","nameLocation":"1327:28:4","nodeType":"VariableDeclaration","scope":485,"src":"1319:36:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":483,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"RelayHubConfig","nameLocation":"183:14:4","nodeType":"StructDefinition","scope":737,"src":"176:1186:4","visibility":"public"},{"anonymous":false,"eventSelector":"918ee002eb112844e457f37ea6b320c5572bc73957ebb0423ffcfb03d7b939d7","id":490,"name":"RelayHubConfigured","nameLocation":"1374:18:4","nodeType":"EventDefinition","parameters":{"id":489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":488,"indexed":false,"mutability":"mutable","name":"config","nameLocation":"1408:6:4","nodeType":"VariableDeclaration","scope":490,"src":"1393:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RelayHubConfig_$485_memory_ptr","typeString":"struct IRelayHub.RelayHubConfig"},"typeName":{"id":487,"nodeType":"UserDefinedTypeName","pathNode":{"id":486,"name":"RelayHubConfig","nodeType":"IdentifierPath","referencedDeclaration":485,"src":"1393:14:4"},"referencedDeclaration":485,"src":"1393:14:4","typeDescriptions":{"typeIdentifier":"t_struct$_RelayHubConfig_$485_storage_ptr","typeString":"struct IRelayHub.RelayHubConfig"}},"visibility":"internal"}],"src":"1392:23:4"},"src":"1368:48:4"},{"anonymous":false,"documentation":{"id":491,"nodeType":"StructuredDocumentation","src":"1422:133:4","text":"Emitted when a relay server registers or updates its details\n Looking at these events lets a client discover relay servers"},"eventSelector":"77f2d8afec4b9d82ffa0dea525320620292bd1067f575964994d5c4501479aed","id":501,"name":"RelayServerRegistered","nameLocation":"1566:21:4","nodeType":"EventDefinition","parameters":{"id":500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":493,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"1613:12:4","nodeType":"VariableDeclaration","scope":501,"src":"1597:28:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"1597:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":495,"indexed":false,"mutability":"mutable","name":"baseRelayFee","nameLocation":"1643:12:4","nodeType":"VariableDeclaration","scope":501,"src":"1635:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1635:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":497,"indexed":false,"mutability":"mutable","name":"pctRelayFee","nameLocation":"1673:11:4","nodeType":"VariableDeclaration","scope":501,"src":"1665:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":496,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":499,"indexed":false,"mutability":"mutable","name":"relayUrl","nameLocation":"1701:8:4","nodeType":"VariableDeclaration","scope":501,"src":"1694:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":498,"name":"string","nodeType":"ElementaryTypeName","src":"1694:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1587:128:4"},"src":"1560:156:4"},{"anonymous":false,"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"1722:51:4","text":"Emitted when relays are added by a relayManager"},"eventSelector":"ebf4a9bffb39f7c5dbf3f65540183b9381ae226ac3d0a45b4cad484713bd4a28","id":511,"name":"RelayWorkersAdded","nameLocation":"1784:17:4","nodeType":"EventDefinition","parameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"1827:12:4","nodeType":"VariableDeclaration","scope":511,"src":"1811:28:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":503,"name":"address","nodeType":"ElementaryTypeName","src":"1811:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":507,"indexed":false,"mutability":"mutable","name":"newRelayWorkers","nameLocation":"1859:15:4","nodeType":"VariableDeclaration","scope":511,"src":"1849:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":505,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":506,"nodeType":"ArrayTypeName","src":"1849:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":509,"indexed":false,"mutability":"mutable","name":"workersCount","nameLocation":"1892:12:4","nodeType":"VariableDeclaration","scope":511,"src":"1884:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":508,"name":"uint256","nodeType":"ElementaryTypeName","src":"1884:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1801:109:4"},"src":"1778:133:4"},{"anonymous":false,"documentation":{"id":512,"nodeType":"StructuredDocumentation","src":"1917:58:4","text":"Emitted when an account withdraws funds from RelayHub."},"eventSelector":"d1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb","id":520,"name":"Withdrawn","nameLocation":"1986:9:4","nodeType":"EventDefinition","parameters":{"id":519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":514,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"2021:7:4","nodeType":"VariableDeclaration","scope":520,"src":"2005:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":513,"name":"address","nodeType":"ElementaryTypeName","src":"2005:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":516,"indexed":true,"mutability":"mutable","name":"dest","nameLocation":"2054:4:4","nodeType":"VariableDeclaration","scope":520,"src":"2038:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":515,"name":"address","nodeType":"ElementaryTypeName","src":"2038:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":518,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2076:6:4","nodeType":"VariableDeclaration","scope":520,"src":"2068:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":517,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1995:93:4"},"src":"1980:109:4"},{"anonymous":false,"documentation":{"id":521,"nodeType":"StructuredDocumentation","src":"2095:88:4","text":"Emitted when depositFor is called, including the amount and account that was funded."},"eventSelector":"8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a7","id":529,"name":"Deposited","nameLocation":"2194:9:4","nodeType":"EventDefinition","parameters":{"id":528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":523,"indexed":true,"mutability":"mutable","name":"paymaster","nameLocation":"2229:9:4","nodeType":"VariableDeclaration","scope":529,"src":"2213:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":522,"name":"address","nodeType":"ElementaryTypeName","src":"2213:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":525,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2264:4:4","nodeType":"VariableDeclaration","scope":529,"src":"2248:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":524,"name":"address","nodeType":"ElementaryTypeName","src":"2248:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":527,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2286:6:4","nodeType":"VariableDeclaration","scope":529,"src":"2278:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2278:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2203:95:4"},"src":"2188:111:4"},{"anonymous":false,"documentation":{"id":530,"nodeType":"StructuredDocumentation","src":"2305:267:4","text":"Emitted when an attempt to relay a call fails and Paymaster does not accept the transaction.\n The actual relayed call was not executed, and the recipient not charged.\n @param reason contains a revert reason returned from preRelayedCall or forwarder."},"eventSelector":"ddb88484d11f800b80fe63aa67488ec56ee001d85896d528912c5d850cbcd06a","id":548,"name":"TransactionRejectedByPaymaster","nameLocation":"2583:30:4","nodeType":"EventDefinition","parameters":{"id":547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":532,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"2639:12:4","nodeType":"VariableDeclaration","scope":548,"src":"2623:28:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":531,"name":"address","nodeType":"ElementaryTypeName","src":"2623:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":534,"indexed":true,"mutability":"mutable","name":"paymaster","nameLocation":"2677:9:4","nodeType":"VariableDeclaration","scope":548,"src":"2661:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"2661:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":536,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2712:4:4","nodeType":"VariableDeclaration","scope":548,"src":"2696:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":535,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":538,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2734:2:4","nodeType":"VariableDeclaration","scope":548,"src":"2726:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":537,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":540,"indexed":false,"mutability":"mutable","name":"relayWorker","nameLocation":"2754:11:4","nodeType":"VariableDeclaration","scope":548,"src":"2746:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":539,"name":"address","nodeType":"ElementaryTypeName","src":"2746:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":542,"indexed":false,"mutability":"mutable","name":"selector","nameLocation":"2782:8:4","nodeType":"VariableDeclaration","scope":548,"src":"2775:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":541,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2775:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":544,"indexed":false,"mutability":"mutable","name":"innerGasUsed","nameLocation":"2808:12:4","nodeType":"VariableDeclaration","scope":548,"src":"2800:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":543,"name":"uint256","nodeType":"ElementaryTypeName","src":"2800:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":546,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2836:6:4","nodeType":"VariableDeclaration","scope":548,"src":"2830:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":545,"name":"bytes","nodeType":"ElementaryTypeName","src":"2830:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2613:235:4"},"src":"2577:272:4"},{"anonymous":false,"documentation":{"id":549,"nodeType":"StructuredDocumentation","src":"2855:337:4","text":"Emitted when a transaction is relayed. Note that the actual encoded function might be reverted: this will be\n indicated in the status field.\n Useful when monitoring a relay's operation and relayed calls to a contract.\n Charge is the ether value deducted from the recipient's balance, paid to the relay's manager."},"eventSelector":"c9aa709786a3d5fe2cc947abc1ba8cbb0f6decb57aa74b84eb7f558125fee454","id":568,"name":"TransactionRelayed","nameLocation":"3203:18:4","nodeType":"EventDefinition","parameters":{"id":567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":551,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"3247:12:4","nodeType":"VariableDeclaration","scope":568,"src":"3231:28:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":550,"name":"address","nodeType":"ElementaryTypeName","src":"3231:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":553,"indexed":true,"mutability":"mutable","name":"relayWorker","nameLocation":"3285:11:4","nodeType":"VariableDeclaration","scope":568,"src":"3269:27:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":552,"name":"address","nodeType":"ElementaryTypeName","src":"3269:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":555,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"3322:4:4","nodeType":"VariableDeclaration","scope":568,"src":"3306:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":554,"name":"address","nodeType":"ElementaryTypeName","src":"3306:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":557,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"3344:2:4","nodeType":"VariableDeclaration","scope":568,"src":"3336:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":556,"name":"address","nodeType":"ElementaryTypeName","src":"3336:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":559,"indexed":false,"mutability":"mutable","name":"paymaster","nameLocation":"3364:9:4","nodeType":"VariableDeclaration","scope":568,"src":"3356:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":558,"name":"address","nodeType":"ElementaryTypeName","src":"3356:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":561,"indexed":false,"mutability":"mutable","name":"selector","nameLocation":"3390:8:4","nodeType":"VariableDeclaration","scope":568,"src":"3383:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":560,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3383:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":564,"indexed":false,"mutability":"mutable","name":"status","nameLocation":"3424:6:4","nodeType":"VariableDeclaration","scope":568,"src":"3408:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RelayCallStatus_$587","typeString":"enum IRelayHub.RelayCallStatus"},"typeName":{"id":563,"nodeType":"UserDefinedTypeName","pathNode":{"id":562,"name":"RelayCallStatus","nodeType":"IdentifierPath","referencedDeclaration":587,"src":"3408:15:4"},"referencedDeclaration":587,"src":"3408:15:4","typeDescriptions":{"typeIdentifier":"t_enum$_RelayCallStatus_$587","typeString":"enum IRelayHub.RelayCallStatus"}},"visibility":"internal"},{"constant":false,"id":566,"indexed":false,"mutability":"mutable","name":"charge","nameLocation":"3448:6:4","nodeType":"VariableDeclaration","scope":568,"src":"3440:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":565,"name":"uint256","nodeType":"ElementaryTypeName","src":"3440:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3221:239:4"},"src":"3197:264:4"},{"anonymous":false,"eventSelector":"a1478a4242848419db824250a0dddc645dca0d6a9b12ab1fd79b00145a0ba98e","id":575,"name":"TransactionResult","nameLocation":"3473:17:4","nodeType":"EventDefinition","parameters":{"id":574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":571,"indexed":false,"mutability":"mutable","name":"status","nameLocation":"3516:6:4","nodeType":"VariableDeclaration","scope":575,"src":"3500:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RelayCallStatus_$587","typeString":"enum IRelayHub.RelayCallStatus"},"typeName":{"id":570,"nodeType":"UserDefinedTypeName","pathNode":{"id":569,"name":"RelayCallStatus","nodeType":"IdentifierPath","referencedDeclaration":587,"src":"3500:15:4"},"referencedDeclaration":587,"src":"3500:15:4","typeDescriptions":{"typeIdentifier":"t_enum$_RelayCallStatus_$587","typeString":"enum IRelayHub.RelayCallStatus"}},"visibility":"internal"},{"constant":false,"id":573,"indexed":false,"mutability":"mutable","name":"returnValue","nameLocation":"3538:11:4","nodeType":"VariableDeclaration","scope":575,"src":"3532:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":572,"name":"bytes","nodeType":"ElementaryTypeName","src":"3532:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3490:65:4"},"src":"3467:89:4"},{"anonymous":false,"eventSelector":"1c0aa0c666483fbf0cf795d9d646ea3552d1e3008162ba9ab1d6d6dfd8c6ec6b","id":579,"name":"HubDeprecated","nameLocation":"3568:13:4","nodeType":"EventDefinition","parameters":{"id":578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"indexed":false,"mutability":"mutable","name":"fromBlock","nameLocation":"3590:9:4","nodeType":"VariableDeclaration","scope":579,"src":"3582:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":576,"name":"uint256","nodeType":"ElementaryTypeName","src":"3582:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3581:19:4"},"src":"3562:39:4"},{"canonicalName":"IRelayHub.RelayCallStatus","id":587,"members":[{"id":580,"name":"OK","nameLocation":"4345:2:4","nodeType":"EnumValue","src":"4345:2:4"},{"id":581,"name":"RelayedCallFailed","nameLocation":"4357:17:4","nodeType":"EnumValue","src":"4357:17:4"},{"id":582,"name":"RejectedByPreRelayed","nameLocation":"4384:20:4","nodeType":"EnumValue","src":"4384:20:4"},{"id":583,"name":"RejectedByForwarder","nameLocation":"4414:19:4","nodeType":"EnumValue","src":"4414:19:4"},{"id":584,"name":"RejectedByRecipientRevert","nameLocation":"4443:25:4","nodeType":"EnumValue","src":"4443:25:4"},{"id":585,"name":"PostRelayedFailed","nameLocation":"4478:17:4","nodeType":"EnumValue","src":"4478:17:4"},{"id":586,"name":"PaymasterBalanceChanged","nameLocation":"4505:23:4","nodeType":"EnumValue","src":"4505:23:4"}],"name":"RelayCallStatus","nameLocation":"4319:15:4","nodeType":"EnumDefinition","src":"4314:220:4"},{"documentation":{"id":588,"nodeType":"StructuredDocumentation","src":"4540:206:4","text":"Add new worker addresses controlled by sender who must be a staked Relay Manager address.\n Emits a RelayWorkersAdded event.\n This function can be called multiple times, emitting new events"},"functionSelector":"c2da0786","id":594,"implemented":false,"kind":"function","modifiers":[],"name":"addRelayWorkers","nameLocation":"4760:15:4","nodeType":"FunctionDefinition","parameters":{"id":592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":591,"mutability":"mutable","name":"newRelayWorkers","nameLocation":"4795:15:4","nodeType":"VariableDeclaration","scope":594,"src":"4776:34:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":589,"name":"address","nodeType":"ElementaryTypeName","src":"4776:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":590,"nodeType":"ArrayTypeName","src":"4776:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4775:36:4"},"returnParameters":{"id":593,"nodeType":"ParameterList","parameters":[],"src":"4820:0:4"},"scope":737,"src":"4751:70:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"83b71871","id":603,"implemented":false,"kind":"function","modifiers":[],"name":"registerRelayServer","nameLocation":"4836:19:4","nodeType":"FunctionDefinition","parameters":{"id":601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":596,"mutability":"mutable","name":"baseRelayFee","nameLocation":"4864:12:4","nodeType":"VariableDeclaration","scope":603,"src":"4856:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":595,"name":"uint256","nodeType":"ElementaryTypeName","src":"4856:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":598,"mutability":"mutable","name":"pctRelayFee","nameLocation":"4886:11:4","nodeType":"VariableDeclaration","scope":603,"src":"4878:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":597,"name":"uint256","nodeType":"ElementaryTypeName","src":"4878:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":600,"mutability":"mutable","name":"url","nameLocation":"4915:3:4","nodeType":"VariableDeclaration","scope":603,"src":"4899:19:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":599,"name":"string","nodeType":"ElementaryTypeName","src":"4899:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4855:64:4"},"returnParameters":{"id":602,"nodeType":"ParameterList","parameters":[],"src":"4928:0:4"},"scope":737,"src":"4827:102:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":604,"nodeType":"StructuredDocumentation","src":"4962:216:4","text":"Deposits ether for a contract, so that it can receive (and pay for) relayed transactions. Unused balance can only\n be withdrawn by the contract itself, by calling withdraw.\n Emits a Deposited event."},"functionSelector":"aa67c919","id":609,"implemented":false,"kind":"function","modifiers":[],"name":"depositFor","nameLocation":"5192:10:4","nodeType":"FunctionDefinition","parameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":606,"mutability":"mutable","name":"target","nameLocation":"5211:6:4","nodeType":"VariableDeclaration","scope":609,"src":"5203:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":605,"name":"address","nodeType":"ElementaryTypeName","src":"5203:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5202:16:4"},"returnParameters":{"id":608,"nodeType":"ParameterList","parameters":[],"src":"5235:0:4"},"scope":737,"src":"5183:53:4","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":610,"nodeType":"StructuredDocumentation","src":"5242:211:4","text":"Withdraws from an account's balance, sending it back to it. Relay managers call this to retrieve their revenue, and\n contracts can also use it to reduce their funding.\n Emits a Withdrawn event."},"functionSelector":"00f714ce","id":617,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"5467:8:4","nodeType":"FunctionDefinition","parameters":{"id":615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":612,"mutability":"mutable","name":"amount","nameLocation":"5484:6:4","nodeType":"VariableDeclaration","scope":617,"src":"5476:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":611,"name":"uint256","nodeType":"ElementaryTypeName","src":"5476:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":614,"mutability":"mutable","name":"dest","nameLocation":"5508:4:4","nodeType":"VariableDeclaration","scope":617,"src":"5492:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":613,"name":"address","nodeType":"ElementaryTypeName","src":"5492:15:4","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"5475:38:4"},"returnParameters":{"id":616,"nodeType":"ParameterList","parameters":[],"src":"5522:0:4"},"scope":737,"src":"5458:65:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":618,"nodeType":"StructuredDocumentation","src":"5547:1274:4","text":"Relays a transaction. For this to succeed, multiple conditions must be met:\n  - Paymaster's \"preRelayCall\" method must succeed and not revert\n  - the sender must be a registered Relay Worker that the user signed\n  - the transaction's gas price must be equal or larger than the one that was signed by the sender\n  - the transaction must have enough gas to run all internal transactions if they use all gas available to them\n  - the Paymaster must have enough balance to pay the Relay Worker for the scenario when all gas is spent\n If all conditions are met, the call will be relayed and the recipient charged.\n Arguments:\n @param maxAcceptanceBudget - max valid value for paymaster.getGasLimits().acceptanceBudget\n @param relayRequest - all details of the requested relayed call\n @param signature - client's EIP-712 signature over the relayRequest struct\n @param approvalData: dapp-specific data forwarded to preRelayedCall.\n        This value is *not* verified by the Hub. For example, it can be used to pass a signature to the Paymaster\n @param externalGasLimit - the value passed as gasLimit to the transaction.\n Emits a TransactionRelayed event."},"functionSelector":"10c45431","id":636,"implemented":false,"kind":"function","modifiers":[],"name":"relayCall","nameLocation":"6835:9:4","nodeType":"FunctionDefinition","parameters":{"id":630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":620,"mutability":"mutable","name":"maxAcceptanceBudget","nameLocation":"6859:19:4","nodeType":"VariableDeclaration","scope":636,"src":"6854:24:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":619,"name":"uint","nodeType":"ElementaryTypeName","src":"6854:4:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":623,"mutability":"mutable","name":"relayRequest","nameLocation":"6919:12:4","nodeType":"VariableDeclaration","scope":636,"src":"6888:43:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest"},"typeName":{"id":622,"nodeType":"UserDefinedTypeName","pathNode":{"id":621,"name":"GsnTypes.RelayRequest","nodeType":"IdentifierPath","referencedDeclaration":1333,"src":"6888:21:4"},"referencedDeclaration":1333,"src":"6888:21:4","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_storage_ptr","typeString":"struct GsnTypes.RelayRequest"}},"visibility":"internal"},{"constant":false,"id":625,"mutability":"mutable","name":"signature","nameLocation":"6956:9:4","nodeType":"VariableDeclaration","scope":636,"src":"6941:24:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":624,"name":"bytes","nodeType":"ElementaryTypeName","src":"6941:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":627,"mutability":"mutable","name":"approvalData","nameLocation":"6990:12:4","nodeType":"VariableDeclaration","scope":636,"src":"6975:27:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":626,"name":"bytes","nodeType":"ElementaryTypeName","src":"6975:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":629,"mutability":"mutable","name":"externalGasLimit","nameLocation":"7017:16:4","nodeType":"VariableDeclaration","scope":636,"src":"7012:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":628,"name":"uint","nodeType":"ElementaryTypeName","src":"7012:4:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6844:195:4"},"returnParameters":{"id":635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":632,"mutability":"mutable","name":"paymasterAccepted","nameLocation":"7071:17:4","nodeType":"VariableDeclaration","scope":636,"src":"7066:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":631,"name":"bool","nodeType":"ElementaryTypeName","src":"7066:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"returnValue","nameLocation":"7103:11:4","nodeType":"VariableDeclaration","scope":636,"src":"7090:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":633,"name":"bytes","nodeType":"ElementaryTypeName","src":"7090:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7065:50:4"},"scope":737,"src":"6826:290:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ebcd31ac","id":643,"implemented":false,"kind":"function","modifiers":[],"name":"penalize","nameLocation":"7131:8:4","nodeType":"FunctionDefinition","parameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":638,"mutability":"mutable","name":"relayWorker","nameLocation":"7148:11:4","nodeType":"VariableDeclaration","scope":643,"src":"7140:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":637,"name":"address","nodeType":"ElementaryTypeName","src":"7140:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":640,"mutability":"mutable","name":"beneficiary","nameLocation":"7177:11:4","nodeType":"VariableDeclaration","scope":643,"src":"7161:27:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":639,"name":"address","nodeType":"ElementaryTypeName","src":"7161:15:4","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"7139:50:4"},"returnParameters":{"id":642,"nodeType":"ParameterList","parameters":[],"src":"7198:0:4"},"scope":737,"src":"7122:77:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c651bce8","id":649,"implemented":false,"kind":"function","modifiers":[],"name":"setConfiguration","nameLocation":"7214:16:4","nodeType":"FunctionDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":646,"mutability":"mutable","name":"_config","nameLocation":"7253:7:4","nodeType":"VariableDeclaration","scope":649,"src":"7231:29:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RelayHubConfig_$485_memory_ptr","typeString":"struct IRelayHub.RelayHubConfig"},"typeName":{"id":645,"nodeType":"UserDefinedTypeName","pathNode":{"id":644,"name":"RelayHubConfig","nodeType":"IdentifierPath","referencedDeclaration":485,"src":"7231:14:4"},"referencedDeclaration":485,"src":"7231:14:4","typeDescriptions":{"typeIdentifier":"t_struct$_RelayHubConfig_$485_storage_ptr","typeString":"struct IRelayHub.RelayHubConfig"}},"visibility":"internal"}],"src":"7230:31:4"},"returnParameters":{"id":648,"nodeType":"ParameterList","parameters":[],"src":"7270:0:4"},"scope":737,"src":"7205:66:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"af595dfc","id":654,"implemented":false,"kind":"function","modifiers":[],"name":"deprecateHub","nameLocation":"7396:12:4","nodeType":"FunctionDefinition","parameters":{"id":652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"fromBlock","nameLocation":"7417:9:4","nodeType":"VariableDeclaration","scope":654,"src":"7409:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":650,"name":"uint256","nodeType":"ElementaryTypeName","src":"7409:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7408:19:4"},"returnParameters":{"id":653,"nodeType":"ParameterList","parameters":[],"src":"7436:0:4"},"scope":737,"src":"7387:50:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":655,"nodeType":"StructuredDocumentation","src":"7443:201:4","text":"The fee is expressed as a base fee in wei plus percentage on actual charge.\n E.g. a value of 40 stands for a 40% fee, so the recipient will be\n charged for 1.4 times the spent amount."},"functionSelector":"8e53548b","id":665,"implemented":false,"kind":"function","modifiers":[],"name":"calculateCharge","nameLocation":"7658:15:4","nodeType":"FunctionDefinition","parameters":{"id":661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":657,"mutability":"mutable","name":"gasUsed","nameLocation":"7682:7:4","nodeType":"VariableDeclaration","scope":665,"src":"7674:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":656,"name":"uint256","nodeType":"ElementaryTypeName","src":"7674:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":660,"mutability":"mutable","name":"relayData","nameLocation":"7719:9:4","nodeType":"VariableDeclaration","scope":665,"src":"7691:37:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData"},"typeName":{"id":659,"nodeType":"UserDefinedTypeName","pathNode":{"id":658,"name":"GsnTypes.RelayData","nodeType":"IdentifierPath","referencedDeclaration":1326,"src":"7691:18:4"},"referencedDeclaration":1326,"src":"7691:18:4","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_storage_ptr","typeString":"struct GsnTypes.RelayData"}},"visibility":"internal"}],"src":"7673:56:4"},"returnParameters":{"id":664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":665,"src":"7753:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":662,"name":"uint256","nodeType":"ElementaryTypeName","src":"7753:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7752:9:4"},"scope":737,"src":"7649:113:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":666,"nodeType":"StructuredDocumentation","src":"7787:39:4","text":"Returns the whole hub configuration"},"functionSelector":"6bd50cef","id":672,"implemented":false,"kind":"function","modifiers":[],"name":"getConfiguration","nameLocation":"7840:16:4","nodeType":"FunctionDefinition","parameters":{"id":667,"nodeType":"ParameterList","parameters":[],"src":"7856:2:4"},"returnParameters":{"id":671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"config","nameLocation":"7904:6:4","nodeType":"VariableDeclaration","scope":672,"src":"7882:28:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RelayHubConfig_$485_memory_ptr","typeString":"struct IRelayHub.RelayHubConfig"},"typeName":{"id":669,"nodeType":"UserDefinedTypeName","pathNode":{"id":668,"name":"RelayHubConfig","nodeType":"IdentifierPath","referencedDeclaration":485,"src":"7882:14:4"},"referencedDeclaration":485,"src":"7882:14:4","typeDescriptions":{"typeIdentifier":"t_struct$_RelayHubConfig_$485_storage_ptr","typeString":"struct IRelayHub.RelayHubConfig"}},"visibility":"internal"}],"src":"7881:30:4"},"scope":737,"src":"7831:81:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"26595b9d","id":679,"implemented":false,"kind":"function","modifiers":[],"name":"calldataGasCost","nameLocation":"7927:15:4","nodeType":"FunctionDefinition","parameters":{"id":675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"length","nameLocation":"7951:6:4","nodeType":"VariableDeclaration","scope":679,"src":"7943:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":673,"name":"uint256","nodeType":"ElementaryTypeName","src":"7943:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7942:16:4"},"returnParameters":{"id":678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":677,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":679,"src":"7982:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":676,"name":"uint256","nodeType":"ElementaryTypeName","src":"7982:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7981:9:4"},"scope":737,"src":"7918:73:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ca998f56","id":686,"implemented":false,"kind":"function","modifiers":[],"name":"workerToManager","nameLocation":"8006:15:4","nodeType":"FunctionDefinition","parameters":{"id":682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":681,"mutability":"mutable","name":"worker","nameLocation":"8030:6:4","nodeType":"VariableDeclaration","scope":686,"src":"8022:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":680,"name":"address","nodeType":"ElementaryTypeName","src":"8022:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8021:16:4"},"returnParameters":{"id":685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":686,"src":"8060:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":683,"name":"address","nodeType":"ElementaryTypeName","src":"8060:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8059:9:4"},"scope":737,"src":"7997:72:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"194ac307","id":693,"implemented":false,"kind":"function","modifiers":[],"name":"workerCount","nameLocation":"8084:11:4","nodeType":"FunctionDefinition","parameters":{"id":689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":688,"mutability":"mutable","name":"manager","nameLocation":"8104:7:4","nodeType":"VariableDeclaration","scope":693,"src":"8096:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":687,"name":"address","nodeType":"ElementaryTypeName","src":"8096:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8095:17:4"},"returnParameters":{"id":692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":691,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":693,"src":"8135:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":690,"name":"uint256","nodeType":"ElementaryTypeName","src":"8135:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8134:9:4"},"scope":737,"src":"8075:69:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":694,"nodeType":"StructuredDocumentation","src":"8150:110:4","text":"Returns an account's deposits. It can be either a deposit of a paymaster, or a revenue of a relay manager."},"functionSelector":"70a08231","id":701,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"8274:9:4","nodeType":"FunctionDefinition","parameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":696,"mutability":"mutable","name":"target","nameLocation":"8292:6:4","nodeType":"VariableDeclaration","scope":701,"src":"8284:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":695,"name":"address","nodeType":"ElementaryTypeName","src":"8284:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8283:16:4"},"returnParameters":{"id":700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":699,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":701,"src":"8323:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":698,"name":"uint256","nodeType":"ElementaryTypeName","src":"8323:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8322:9:4"},"scope":737,"src":"8265:67:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7542ff95","id":707,"implemented":false,"kind":"function","modifiers":[],"name":"stakeManager","nameLocation":"8347:12:4","nodeType":"FunctionDefinition","parameters":{"id":702,"nodeType":"ParameterList","parameters":[],"src":"8359:2:4"},"returnParameters":{"id":706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":707,"src":"8385:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakeManager_$930","typeString":"contract IStakeManager"},"typeName":{"id":704,"nodeType":"UserDefinedTypeName","pathNode":{"id":703,"name":"IStakeManager","nodeType":"IdentifierPath","referencedDeclaration":930,"src":"8385:13:4"},"referencedDeclaration":930,"src":"8385:13:4","typeDescriptions":{"typeIdentifier":"t_contract$_IStakeManager_$930","typeString":"contract IStakeManager"}},"visibility":"internal"}],"src":"8384:15:4"},"scope":737,"src":"8338:62:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c4775a68","id":712,"implemented":false,"kind":"function","modifiers":[],"name":"penalizer","nameLocation":"8415:9:4","nodeType":"FunctionDefinition","parameters":{"id":708,"nodeType":"ParameterList","parameters":[],"src":"8424:2:4"},"returnParameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":712,"src":"8450:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":709,"name":"address","nodeType":"ElementaryTypeName","src":"8450:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8449:9:4"},"scope":737,"src":"8406:53:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":713,"nodeType":"StructuredDocumentation","src":"8465:152:4","text":"Uses StakeManager info to decide if the Relay Manager can be considered staked\n @return true if stake size and delay satisfy all requirements"},"functionSelector":"2ad311b5","id":720,"implemented":false,"kind":"function","modifiers":[],"name":"isRelayManagerStaked","nameLocation":"8631:20:4","nodeType":"FunctionDefinition","parameters":{"id":716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":715,"mutability":"mutable","name":"relayManager","nameLocation":"8660:12:4","nodeType":"VariableDeclaration","scope":720,"src":"8652:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":714,"name":"address","nodeType":"ElementaryTypeName","src":"8652:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8651:22:4"},"returnParameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":720,"src":"8696:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":717,"name":"bool","nodeType":"ElementaryTypeName","src":"8696:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8695:6:4"},"scope":737,"src":"8622:80:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c7178230","id":725,"implemented":false,"kind":"function","modifiers":[],"name":"isDeprecated","nameLocation":"8756:12:4","nodeType":"FunctionDefinition","parameters":{"id":721,"nodeType":"ParameterList","parameters":[],"src":"8768:2:4"},"returnParameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":723,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":725,"src":"8794:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":722,"name":"bool","nodeType":"ElementaryTypeName","src":"8794:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8793:6:4"},"scope":737,"src":"8747:53:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d6a71c0d","id":730,"implemented":false,"kind":"function","modifiers":[],"name":"deprecationBlock","nameLocation":"8899:16:4","nodeType":"FunctionDefinition","parameters":{"id":726,"nodeType":"ParameterList","parameters":[],"src":"8915:2:4"},"returnParameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":728,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":730,"src":"8941:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":727,"name":"uint256","nodeType":"ElementaryTypeName","src":"8941:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8940:9:4"},"scope":737,"src":"8890:60:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":731,"nodeType":"StructuredDocumentation","src":"8956:58:4","text":"@return a SemVer-compliant version of the hub contract"},"functionSelector":"d904c732","id":736,"implemented":false,"kind":"function","modifiers":[],"name":"versionHub","nameLocation":"9028:10:4","nodeType":"FunctionDefinition","parameters":{"id":732,"nodeType":"ParameterList","parameters":[],"src":"9038:2:4"},"returnParameters":{"id":735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":736,"src":"9064:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":733,"name":"string","nodeType":"ElementaryTypeName","src":"9064:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9063:15:4"},"scope":737,"src":"9019:60:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":738,"src":"150:8931:4","usedErrors":[]}],"src":"41:9042:4"},"id":4},"@opengsn/contracts/src/interfaces/IRelayRecipient.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/interfaces/IRelayRecipient.sol","exportedSymbols":{"IRelayRecipient":[766]},"id":767,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":739,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"32:24:5"},{"abstract":true,"baseContracts":[],"canonicalName":"IRelayRecipient","contractDependencies":[],"contractKind":"contract","documentation":{"id":740,"nodeType":"StructuredDocumentation","src":"58:165:5","text":" a contract must implement this interface in order to support relayed transaction.\n It is better to inherit the BaseRelayRecipient as its implementation."},"fullyImplemented":false,"id":766,"linearizedBaseContracts":[766],"name":"IRelayRecipient","nameLocation":"242:15:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":741,"nodeType":"StructuredDocumentation","src":"265:203:5","text":" return if the forwarder is trusted to forward relayed transactions to us.\n the forwarder is required to verify the sender's signature, and verify\n the call is not a replay."},"functionSelector":"572b6c05","id":748,"implemented":false,"kind":"function","modifiers":[],"name":"isTrustedForwarder","nameLocation":"482:18:5","nodeType":"FunctionDefinition","parameters":{"id":744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":743,"mutability":"mutable","name":"forwarder","nameLocation":"509:9:5","nodeType":"VariableDeclaration","scope":748,"src":"501:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":742,"name":"address","nodeType":"ElementaryTypeName","src":"501:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"500:19:5"},"returnParameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":748,"src":"548:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":745,"name":"bool","nodeType":"ElementaryTypeName","src":"548:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"547:6:5"},"scope":766,"src":"473:81:5","stateMutability":"view","virtual":true,"visibility":"public"},{"documentation":{"id":749,"nodeType":"StructuredDocumentation","src":"560:290:5","text":" return the sender of this call.\n if the call came through our trusted forwarder, then the real sender is appended as the last 20 bytes\n of the msg.data.\n otherwise, return `msg.sender`\n should be used in the contract anywhere instead of msg.sender"},"id":754,"implemented":false,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"864:10:5","nodeType":"FunctionDefinition","parameters":{"id":750,"nodeType":"ParameterList","parameters":[],"src":"874:2:5"},"returnParameters":{"id":753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":754,"src":"908:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":751,"name":"address","nodeType":"ElementaryTypeName","src":"908:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"907:9:5"},"scope":766,"src":"855:62:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":755,"nodeType":"StructuredDocumentation","src":"923:421:5","text":" return the msg.data of this call.\n if the call came through our trusted forwarder, then the real sender was appended as the last 20 bytes\n of the msg.data - so this method will strip those 20 bytes off.\n otherwise (if the call was made directly and not through the forwarder), return `msg.data`\n should be used in the contract instead of msg.data, where this difference matters."},"id":760,"implemented":false,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"1358:8:5","nodeType":"FunctionDefinition","parameters":{"id":756,"nodeType":"ParameterList","parameters":[],"src":"1366:2:5"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":758,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":760,"src":"1400:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":757,"name":"bytes","nodeType":"ElementaryTypeName","src":"1400:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1399:16:5"},"scope":766,"src":"1349:67:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"functionSelector":"486ff0cd","id":765,"implemented":false,"kind":"function","modifiers":[],"name":"versionRecipient","nameLocation":"1431:16:5","nodeType":"FunctionDefinition","parameters":{"id":761,"nodeType":"ParameterList","parameters":[],"src":"1447:2:5"},"returnParameters":{"id":764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":765,"src":"1481:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":762,"name":"string","nodeType":"ElementaryTypeName","src":"1481:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1480:15:5"},"scope":766,"src":"1422:74:5","stateMutability":"view","virtual":true,"visibility":"external"}],"scope":767,"src":"224:1274:5","usedErrors":[]}],"src":"32:1467:5"},"id":5},"@opengsn/contracts/src/interfaces/IStakeManager.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/interfaces/IStakeManager.sol","exportedSymbols":{"IStakeManager":[930],"SafeMath":[3180]},"id":931,"license":"GPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":768,"literals":["solidity",">=","0.7",".6"],"nodeType":"PragmaDirective","src":"41:24:6"},{"id":769,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"66:19:6"},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeMath.sol","file":"@openzeppelin/contracts/utils/math/SafeMath.sol","id":770,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":931,"sourceUnit":3181,"src":"87:57:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IStakeManager","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":930,"linearizedBaseContracts":[930],"name":"IStakeManager","nameLocation":"156:13:6","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":771,"nodeType":"StructuredDocumentation","src":"177:69:6","text":"Emitted when a stake or unstakeDelay are initialized or increased"},"eventSelector":"ef7c8dfef14cbefdf829b8f066b068b677992411137321d64b3ed4538c2b3637","id":781,"name":"StakeAdded","nameLocation":"257:10:6","nodeType":"EventDefinition","parameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":773,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"293:12:6","nodeType":"VariableDeclaration","scope":781,"src":"277:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":772,"name":"address","nodeType":"ElementaryTypeName","src":"277:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":775,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"331:5:6","nodeType":"VariableDeclaration","scope":781,"src":"315:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":774,"name":"address","nodeType":"ElementaryTypeName","src":"315:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":777,"indexed":false,"mutability":"mutable","name":"stake","nameLocation":"354:5:6","nodeType":"VariableDeclaration","scope":781,"src":"346:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":776,"name":"uint256","nodeType":"ElementaryTypeName","src":"346:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":779,"indexed":false,"mutability":"mutable","name":"unstakeDelay","nameLocation":"377:12:6","nodeType":"VariableDeclaration","scope":781,"src":"369:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":778,"name":"uint256","nodeType":"ElementaryTypeName","src":"369:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"267:128:6"},"src":"251:145:6"},{"anonymous":false,"documentation":{"id":782,"nodeType":"StructuredDocumentation","src":"402:52:6","text":"Emitted once a stake is scheduled for withdrawal"},"eventSelector":"9ffc6168de1eb7f1d16200f614753cd7edce5a2186aab1c612199dd7316cd7c4","id":790,"name":"StakeUnlocked","nameLocation":"465:13:6","nodeType":"EventDefinition","parameters":{"id":789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"504:12:6","nodeType":"VariableDeclaration","scope":790,"src":"488:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"488:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":786,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"542:5:6","nodeType":"VariableDeclaration","scope":790,"src":"526:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":785,"name":"address","nodeType":"ElementaryTypeName","src":"526:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":788,"indexed":false,"mutability":"mutable","name":"withdrawBlock","nameLocation":"565:13:6","nodeType":"VariableDeclaration","scope":790,"src":"557:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":787,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"478:106:6"},"src":"459:126:6"},{"anonymous":false,"documentation":{"id":791,"nodeType":"StructuredDocumentation","src":"591:51:6","text":"Emitted when owner withdraws relayManager funds"},"eventSelector":"b7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda3","id":799,"name":"StakeWithdrawn","nameLocation":"653:14:6","nodeType":"EventDefinition","parameters":{"id":798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":793,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"693:12:6","nodeType":"VariableDeclaration","scope":799,"src":"677:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":792,"name":"address","nodeType":"ElementaryTypeName","src":"677:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":795,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"731:5:6","nodeType":"VariableDeclaration","scope":799,"src":"715:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":794,"name":"address","nodeType":"ElementaryTypeName","src":"715:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":797,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"754:6:6","nodeType":"VariableDeclaration","scope":799,"src":"746:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":796,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"667:99:6"},"src":"647:120:6"},{"anonymous":false,"documentation":{"id":800,"nodeType":"StructuredDocumentation","src":"773:65:6","text":"Emitted when an authorized Relay Hub penalizes a relayManager"},"eventSelector":"2f2ba0bf4c9bedc2210a4da5b5811c2a4fd28e62c51bb90c3ea6fdce00808eb0","id":808,"name":"StakePenalized","nameLocation":"849:14:6","nodeType":"EventDefinition","parameters":{"id":807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":802,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"889:12:6","nodeType":"VariableDeclaration","scope":808,"src":"873:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":801,"name":"address","nodeType":"ElementaryTypeName","src":"873:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":804,"indexed":true,"mutability":"mutable","name":"beneficiary","nameLocation":"927:11:6","nodeType":"VariableDeclaration","scope":808,"src":"911:27:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":803,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":806,"indexed":false,"mutability":"mutable","name":"reward","nameLocation":"956:6:6","nodeType":"VariableDeclaration","scope":808,"src":"948:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":805,"name":"uint256","nodeType":"ElementaryTypeName","src":"948:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"863:105:6"},"src":"843:126:6"},{"anonymous":false,"eventSelector":"e292c4f6e9f34c975f4958cd5650a8111352feae914a67b06407957105421021","id":814,"name":"HubAuthorized","nameLocation":"981:13:6","nodeType":"EventDefinition","parameters":{"id":813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":810,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"1020:12:6","nodeType":"VariableDeclaration","scope":814,"src":"1004:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":809,"name":"address","nodeType":"ElementaryTypeName","src":"1004:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":812,"indexed":true,"mutability":"mutable","name":"relayHub","nameLocation":"1058:8:6","nodeType":"VariableDeclaration","scope":814,"src":"1042:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":811,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"994:78:6"},"src":"975:98:6"},{"anonymous":false,"eventSelector":"8d941c9b73ba7e59671a59eed85054004624684182b0e4bdb56c35937bac65a6","id":822,"name":"HubUnauthorized","nameLocation":"1085:15:6","nodeType":"EventDefinition","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":816,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"1126:12:6","nodeType":"VariableDeclaration","scope":822,"src":"1110:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":815,"name":"address","nodeType":"ElementaryTypeName","src":"1110:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":818,"indexed":true,"mutability":"mutable","name":"relayHub","nameLocation":"1164:8:6","nodeType":"VariableDeclaration","scope":822,"src":"1148:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":817,"name":"address","nodeType":"ElementaryTypeName","src":"1148:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":820,"indexed":false,"mutability":"mutable","name":"removalBlock","nameLocation":"1190:12:6","nodeType":"VariableDeclaration","scope":822,"src":"1182:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"1182:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1100:108:6"},"src":"1079:130:6"},{"anonymous":false,"eventSelector":"342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a735","id":828,"name":"OwnerSet","nameLocation":"1221:8:6","nodeType":"EventDefinition","parameters":{"id":827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":824,"indexed":true,"mutability":"mutable","name":"relayManager","nameLocation":"1255:12:6","nodeType":"VariableDeclaration","scope":828,"src":"1239:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":823,"name":"address","nodeType":"ElementaryTypeName","src":"1239:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":826,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1293:5:6","nodeType":"VariableDeclaration","scope":828,"src":"1277:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":825,"name":"address","nodeType":"ElementaryTypeName","src":"1277:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1229:75:6"},"src":"1215:90:6"},{"canonicalName":"IStakeManager.StakeInfo","id":837,"members":[{"constant":false,"id":830,"mutability":"mutable","name":"stake","nameLocation":"1734:5:6","nodeType":"VariableDeclaration","scope":837,"src":"1726:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":829,"name":"uint256","nodeType":"ElementaryTypeName","src":"1726:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":832,"mutability":"mutable","name":"unstakeDelay","nameLocation":"1757:12:6","nodeType":"VariableDeclaration","scope":837,"src":"1749:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":831,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":834,"mutability":"mutable","name":"withdrawBlock","nameLocation":"1787:13:6","nodeType":"VariableDeclaration","scope":837,"src":"1779:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":833,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":836,"mutability":"mutable","name":"owner","nameLocation":"1826:5:6","nodeType":"VariableDeclaration","scope":837,"src":"1810:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":835,"name":"address","nodeType":"ElementaryTypeName","src":"1810:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"name":"StakeInfo","nameLocation":"1706:9:6","nodeType":"StructDefinition","scope":930,"src":"1699:139:6","visibility":"public"},{"canonicalName":"IStakeManager.RelayHubInfo","id":840,"members":[{"constant":false,"id":839,"mutability":"mutable","name":"removalBlock","nameLocation":"1882:12:6","nodeType":"VariableDeclaration","scope":840,"src":"1874:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":838,"name":"uint256","nodeType":"ElementaryTypeName","src":"1874:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"RelayHubInfo","nameLocation":"1851:12:6","nodeType":"StructDefinition","scope":930,"src":"1844:57:6","visibility":"public"},{"documentation":{"id":841,"nodeType":"StructuredDocumentation","src":"1907:236:6","text":"Set the owner of a Relay Manager. Called only by the RelayManager itself.\n Note that owners cannot transfer ownership - if the entry already exists, reverts.\n @param owner - owner of the relay (as configured off-chain)"},"functionSelector":"fece3dd4","id":846,"implemented":false,"kind":"function","modifiers":[],"name":"setRelayManagerOwner","nameLocation":"2157:20:6","nodeType":"FunctionDefinition","parameters":{"id":844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":843,"mutability":"mutable","name":"owner","nameLocation":"2194:5:6","nodeType":"VariableDeclaration","scope":846,"src":"2178:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":842,"name":"address","nodeType":"ElementaryTypeName","src":"2178:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"2177:23:6"},"returnParameters":{"id":845,"nodeType":"ParameterList","parameters":[],"src":"2209:0:6"},"scope":930,"src":"2148:62:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":847,"nodeType":"StructuredDocumentation","src":"2216:315:6","text":"Only the owner can call this function. If the entry does not exist, reverts.\n @param relayManager - address that represents a stake entry and controls relay registrations on relay hubs\n @param unstakeDelay - number of blocks to elapse before the owner can retrieve the stake after calling 'unlock'"},"functionSelector":"f32102db","id":854,"implemented":false,"kind":"function","modifiers":[],"name":"stakeForRelayManager","nameLocation":"2545:20:6","nodeType":"FunctionDefinition","parameters":{"id":852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":849,"mutability":"mutable","name":"relayManager","nameLocation":"2574:12:6","nodeType":"VariableDeclaration","scope":854,"src":"2566:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":848,"name":"address","nodeType":"ElementaryTypeName","src":"2566:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":851,"mutability":"mutable","name":"unstakeDelay","nameLocation":"2596:12:6","nodeType":"VariableDeclaration","scope":854,"src":"2588:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":850,"name":"uint256","nodeType":"ElementaryTypeName","src":"2588:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2565:44:6"},"returnParameters":{"id":853,"nodeType":"ParameterList","parameters":[],"src":"2626:0:6"},"scope":930,"src":"2536:91:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"4a1ce599","id":859,"implemented":false,"kind":"function","modifiers":[],"name":"unlockStake","nameLocation":"2642:11:6","nodeType":"FunctionDefinition","parameters":{"id":857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":856,"mutability":"mutable","name":"relayManager","nameLocation":"2662:12:6","nodeType":"VariableDeclaration","scope":859,"src":"2654:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":855,"name":"address","nodeType":"ElementaryTypeName","src":"2654:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2653:22:6"},"returnParameters":{"id":858,"nodeType":"ParameterList","parameters":[],"src":"2684:0:6"},"scope":930,"src":"2633:52:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c23a5cea","id":864,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawStake","nameLocation":"2700:13:6","nodeType":"FunctionDefinition","parameters":{"id":862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":861,"mutability":"mutable","name":"relayManager","nameLocation":"2722:12:6","nodeType":"VariableDeclaration","scope":864,"src":"2714:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":860,"name":"address","nodeType":"ElementaryTypeName","src":"2714:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2713:22:6"},"returnParameters":{"id":863,"nodeType":"ParameterList","parameters":[],"src":"2744:0:6"},"scope":930,"src":"2691:54:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7835d296","id":871,"implemented":false,"kind":"function","modifiers":[],"name":"authorizeHubByOwner","nameLocation":"2760:19:6","nodeType":"FunctionDefinition","parameters":{"id":869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":866,"mutability":"mutable","name":"relayManager","nameLocation":"2788:12:6","nodeType":"VariableDeclaration","scope":871,"src":"2780:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":865,"name":"address","nodeType":"ElementaryTypeName","src":"2780:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":868,"mutability":"mutable","name":"relayHub","nameLocation":"2810:8:6","nodeType":"VariableDeclaration","scope":871,"src":"2802:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":867,"name":"address","nodeType":"ElementaryTypeName","src":"2802:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2779:40:6"},"returnParameters":{"id":870,"nodeType":"ParameterList","parameters":[],"src":"2828:0:6"},"scope":930,"src":"2751:78:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d48a9d43","id":876,"implemented":false,"kind":"function","modifiers":[],"name":"authorizeHubByManager","nameLocation":"2844:21:6","nodeType":"FunctionDefinition","parameters":{"id":874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":873,"mutability":"mutable","name":"relayHub","nameLocation":"2874:8:6","nodeType":"VariableDeclaration","scope":876,"src":"2866:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":872,"name":"address","nodeType":"ElementaryTypeName","src":"2866:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2865:18:6"},"returnParameters":{"id":875,"nodeType":"ParameterList","parameters":[],"src":"2892:0:6"},"scope":930,"src":"2835:58:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f48f8ac7","id":883,"implemented":false,"kind":"function","modifiers":[],"name":"unauthorizeHubByOwner","nameLocation":"2908:21:6","nodeType":"FunctionDefinition","parameters":{"id":881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":878,"mutability":"mutable","name":"relayManager","nameLocation":"2938:12:6","nodeType":"VariableDeclaration","scope":883,"src":"2930:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":877,"name":"address","nodeType":"ElementaryTypeName","src":"2930:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":880,"mutability":"mutable","name":"relayHub","nameLocation":"2960:8:6","nodeType":"VariableDeclaration","scope":883,"src":"2952:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":879,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2929:40:6"},"returnParameters":{"id":882,"nodeType":"ParameterList","parameters":[],"src":"2978:0:6"},"scope":930,"src":"2899:80:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f9bce311","id":888,"implemented":false,"kind":"function","modifiers":[],"name":"unauthorizeHubByManager","nameLocation":"2994:23:6","nodeType":"FunctionDefinition","parameters":{"id":886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":885,"mutability":"mutable","name":"relayHub","nameLocation":"3026:8:6","nodeType":"VariableDeclaration","scope":888,"src":"3018:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":884,"name":"address","nodeType":"ElementaryTypeName","src":"3018:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3017:18:6"},"returnParameters":{"id":887,"nodeType":"ParameterList","parameters":[],"src":"3044:0:6"},"scope":930,"src":"2985:60:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6de8dd41","id":901,"implemented":false,"kind":"function","modifiers":[],"name":"isRelayManagerStaked","nameLocation":"3060:20:6","nodeType":"FunctionDefinition","parameters":{"id":897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"mutability":"mutable","name":"relayManager","nameLocation":"3089:12:6","nodeType":"VariableDeclaration","scope":901,"src":"3081:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":889,"name":"address","nodeType":"ElementaryTypeName","src":"3081:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":892,"mutability":"mutable","name":"relayHub","nameLocation":"3111:8:6","nodeType":"VariableDeclaration","scope":901,"src":"3103:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":891,"name":"address","nodeType":"ElementaryTypeName","src":"3103:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":894,"mutability":"mutable","name":"minAmount","nameLocation":"3129:9:6","nodeType":"VariableDeclaration","scope":901,"src":"3121:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":893,"name":"uint256","nodeType":"ElementaryTypeName","src":"3121:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":896,"mutability":"mutable","name":"minUnstakeDelay","nameLocation":"3148:15:6","nodeType":"VariableDeclaration","scope":901,"src":"3140:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":895,"name":"uint256","nodeType":"ElementaryTypeName","src":"3140:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:84:6"},"returnParameters":{"id":900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":899,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":901,"src":"3200:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":898,"name":"bool","nodeType":"ElementaryTypeName","src":"3200:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3199:6:6"},"scope":930,"src":"3051:155:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":902,"nodeType":"StructuredDocumentation","src":"3212:296:6","text":"Slash the stake of the relay relayManager. In order to prevent stake kidnapping, burns half of stake on the way.\n @param relayManager - entry to penalize\n @param beneficiary - address that receives half of the penalty amount\n @param amount - amount to withdraw from stake"},"functionSelector":"09a08af4","id":911,"implemented":false,"kind":"function","modifiers":[],"name":"penalizeRelayManager","nameLocation":"3522:20:6","nodeType":"FunctionDefinition","parameters":{"id":909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":904,"mutability":"mutable","name":"relayManager","nameLocation":"3551:12:6","nodeType":"VariableDeclaration","scope":911,"src":"3543:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":903,"name":"address","nodeType":"ElementaryTypeName","src":"3543:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":906,"mutability":"mutable","name":"beneficiary","nameLocation":"3581:11:6","nodeType":"VariableDeclaration","scope":911,"src":"3565:27:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":905,"name":"address","nodeType":"ElementaryTypeName","src":"3565:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":908,"mutability":"mutable","name":"amount","nameLocation":"3602:6:6","nodeType":"VariableDeclaration","scope":911,"src":"3594:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":907,"name":"uint256","nodeType":"ElementaryTypeName","src":"3594:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3542:67:6"},"returnParameters":{"id":910,"nodeType":"ParameterList","parameters":[],"src":"3618:0:6"},"scope":930,"src":"3513:106:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c3453153","id":919,"implemented":false,"kind":"function","modifiers":[],"name":"getStakeInfo","nameLocation":"3634:12:6","nodeType":"FunctionDefinition","parameters":{"id":914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":913,"mutability":"mutable","name":"relayManager","nameLocation":"3655:12:6","nodeType":"VariableDeclaration","scope":919,"src":"3647:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":912,"name":"address","nodeType":"ElementaryTypeName","src":"3647:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3646:22:6"},"returnParameters":{"id":918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":917,"mutability":"mutable","name":"stakeInfo","nameLocation":"3709:9:6","nodeType":"VariableDeclaration","scope":919,"src":"3692:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StakeInfo_$837_memory_ptr","typeString":"struct IStakeManager.StakeInfo"},"typeName":{"id":916,"nodeType":"UserDefinedTypeName","pathNode":{"id":915,"name":"StakeInfo","nodeType":"IdentifierPath","referencedDeclaration":837,"src":"3692:9:6"},"referencedDeclaration":837,"src":"3692:9:6","typeDescriptions":{"typeIdentifier":"t_struct$_StakeInfo_$837_storage_ptr","typeString":"struct IStakeManager.StakeInfo"}},"visibility":"internal"}],"src":"3691:28:6"},"scope":930,"src":"3625:95:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4e02131c","id":924,"implemented":false,"kind":"function","modifiers":[],"name":"maxUnstakeDelay","nameLocation":"3735:15:6","nodeType":"FunctionDefinition","parameters":{"id":920,"nodeType":"ParameterList","parameters":[],"src":"3750:2:6"},"returnParameters":{"id":923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":924,"src":"3776:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":921,"name":"uint256","nodeType":"ElementaryTypeName","src":"3776:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3775:9:6"},"scope":930,"src":"3726:59:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"47116c6e","id":929,"implemented":false,"kind":"function","modifiers":[],"name":"versionSM","nameLocation":"3800:9:6","nodeType":"FunctionDefinition","parameters":{"id":925,"nodeType":"ParameterList","parameters":[],"src":"3809:2:6"},"returnParameters":{"id":928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":929,"src":"3835:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":926,"name":"string","nodeType":"ElementaryTypeName","src":"3835:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3834:15:6"},"scope":930,"src":"3791:59:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":931,"src":"146:3706:6","usedErrors":[]}],"src":"41:3812:6"},"id":6},"@opengsn/contracts/src/utils/GsnEip712Library.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/utils/GsnEip712Library.sol","exportedSymbols":{"GsnEip712Library":[1306],"GsnTypes":[1334],"GsnUtils":[1381],"IForwarder":[388],"IRelayRecipient":[766],"MinLibBytes":[1496]},"id":1307,"license":"GPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":932,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"41:23:7"},{"id":933,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"65:19:7"},{"absolutePath":"@opengsn/contracts/src/utils/GsnTypes.sol","file":"../utils/GsnTypes.sol","id":934,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1307,"sourceUnit":1335,"src":"86:31:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/interfaces/IRelayRecipient.sol","file":"../interfaces/IRelayRecipient.sol","id":935,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1307,"sourceUnit":767,"src":"118:43:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/forwarder/IForwarder.sol","file":"../forwarder/IForwarder.sol","id":936,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1307,"sourceUnit":389,"src":"162:37:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/utils/GsnUtils.sol","file":"./GsnUtils.sol","id":937,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1307,"sourceUnit":1382,"src":"201:24:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"GsnEip712Library","contractDependencies":[],"contractKind":"library","documentation":{"id":938,"nodeType":"StructuredDocumentation","src":"227:76:7","text":" Bridge Library to map GSN RelayRequest into a call of a Forwarder"},"fullyImplemented":true,"id":1306,"linearizedBaseContracts":[1306],"name":"GsnEip712Library","nameLocation":"312:16:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":941,"mutability":"constant","name":"MAX_RETURN_SIZE","nameLocation":"468:15:7","nodeType":"VariableDeclaration","scope":1306,"src":"443:47:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":939,"name":"uint256","nodeType":"ElementaryTypeName","src":"443:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303234","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"486:4:7","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"value":"1024"},"visibility":"private"},{"constant":true,"functionSelector":"066a310c","id":944,"mutability":"constant","name":"GENERIC_PARAMS","nameLocation":"609:14:7","nodeType":"VariableDeclaration","scope":1306,"src":"586:135:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":942,"name":"string","nodeType":"ElementaryTypeName","src":"586:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c","id":943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"626:95:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_07514c07fd5c00b9bc59b11441f2afb642c4d4ad89f30808b936de273e98e184","typeString":"literal_string \"address from,address to,uint256 value,uint256 gas,uint256 nonce,bytes data,uint256 validUntil\""},"value":"address from,address to,uint256 value,uint256 gas,uint256 nonce,bytes data,uint256 validUntil"},"visibility":"public"},{"constant":true,"functionSelector":"c46cf83f","id":947,"mutability":"constant","name":"RELAYDATA_TYPE","nameLocation":"750:14:7","nodeType":"VariableDeclaration","scope":1306,"src":"728:202:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":945,"name":"bytes","nodeType":"ElementaryTypeName","src":"728:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":{"hexValue":"52656c6179446174612875696e743235362067617350726963652c75696e743235362070637452656c61794665652c75696e74323536206261736552656c61794665652c616464726573732072656c6179576f726b65722c61646472657373207061796d61737465722c6164647265737320666f727761726465722c6279746573207061796d6173746572446174612c75696e7432353620636c69656e74496429","id":946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"767:163:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_2766c3b10bb32c13389ace3ccc8ad82b14437c4e08f660dd273a7dcd6b3b9e69","typeString":"literal_string \"RelayData(uint256 gasPrice,uint256 pctRelayFee,uint256 baseRelayFee,address relayWorker,address paymaster,address forwarder,bytes paymasterData,uint256 clientId)\""},"value":"RelayData(uint256 gasPrice,uint256 pctRelayFee,uint256 baseRelayFee,address relayWorker,address paymaster,address forwarder,bytes paymasterData,uint256 clientId)"},"visibility":"public"},{"constant":true,"functionSelector":"987673f7","id":950,"mutability":"constant","name":"RELAY_REQUEST_NAME","nameLocation":"960:18:7","nodeType":"VariableDeclaration","scope":1306,"src":"937:58:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":948,"name":"string","nodeType":"ElementaryTypeName","src":"937:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"52656c617952657175657374","id":949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"981:14:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_9474f9de570f8c3456d0ad4af045975f85d14cb683a1e7b73535cecf52ff41f8","typeString":"literal_string \"RelayRequest\""},"value":"RelayRequest"},"visibility":"public"},{"constant":true,"functionSelector":"931cd38f","id":960,"mutability":"constant","name":"RELAY_REQUEST_SUFFIX","nameLocation":"1024:20:7","nodeType":"VariableDeclaration","scope":1306,"src":"1001:110:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":951,"name":"string","nodeType":"ElementaryTypeName","src":"1001:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"arguments":[{"arguments":[{"hexValue":"52656c6179446174612072656c61794461746129","id":956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1071:22:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f","typeString":"literal_string \"RelayData relayData)\""},"value":"RelayData relayData)"},{"id":957,"name":"RELAYDATA_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":947,"src":"1095:14:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f","typeString":"literal_string \"RelayData relayData)\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":954,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1054:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1054:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1054:56:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1047:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":952,"name":"string","nodeType":"ElementaryTypeName","src":"1047:6:7","typeDescriptions":{}}},"id":959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1047:64:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"visibility":"public"},{"constant":true,"functionSelector":"6225e61b","id":970,"mutability":"constant","name":"RELAY_REQUEST_TYPE","nameLocation":"1140:18:7","nodeType":"VariableDeclaration","scope":1306,"src":"1118:133:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":961,"name":"bytes","nodeType":"ElementaryTypeName","src":"1118:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":{"arguments":[{"id":964,"name":"RELAY_REQUEST_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"1187:18:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"28","id":965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1206:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a","typeString":"literal_string \"(\""},"value":"("},{"id":966,"name":"GENERIC_PARAMS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"1210:14:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2c","id":967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1225:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb","typeString":"literal_string \",\""},"value":","},{"id":968,"name":"RELAY_REQUEST_SUFFIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"1230:20:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a","typeString":"literal_string \"(\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb","typeString":"literal_string \",\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":962,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1161:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1161:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1161:90:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"visibility":"public"},{"constant":true,"functionSelector":"cc0c62b2","id":975,"mutability":"constant","name":"RELAYDATA_TYPEHASH","nameLocation":"1282:18:7","nodeType":"VariableDeclaration","scope":1306,"src":"1258:70:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":971,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1258:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":973,"name":"RELAYDATA_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":947,"src":"1313:14:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":972,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1303:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1303:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"abf0d3f4","id":980,"mutability":"constant","name":"RELAY_REQUEST_TYPEHASH","nameLocation":"1358:22:7","nodeType":"VariableDeclaration","scope":1306,"src":"1334:78:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1334:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":978,"name":"RELAY_REQUEST_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"1393:18:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":977,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1383:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1383:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"canonicalName":"GsnEip712Library.EIP712Domain","id":989,"members":[{"constant":false,"id":982,"mutability":"mutable","name":"name","nameLocation":"1457:4:7","nodeType":"VariableDeclaration","scope":989,"src":"1450:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":981,"name":"string","nodeType":"ElementaryTypeName","src":"1450:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":984,"mutability":"mutable","name":"version","nameLocation":"1478:7:7","nodeType":"VariableDeclaration","scope":989,"src":"1471:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":983,"name":"string","nodeType":"ElementaryTypeName","src":"1471:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":986,"mutability":"mutable","name":"chainId","nameLocation":"1503:7:7","nodeType":"VariableDeclaration","scope":989,"src":"1495:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":985,"name":"uint256","nodeType":"ElementaryTypeName","src":"1495:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":988,"mutability":"mutable","name":"verifyingContract","nameLocation":"1528:17:7","nodeType":"VariableDeclaration","scope":989,"src":"1520:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":987,"name":"address","nodeType":"ElementaryTypeName","src":"1520:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"EIP712Domain","nameLocation":"1427:12:7","nodeType":"StructDefinition","scope":1306,"src":"1420:132:7","visibility":"public"},{"constant":true,"functionSelector":"c49f91d3","id":994,"mutability":"constant","name":"EIP712DOMAIN_TYPEHASH","nameLocation":"1582:21:7","nodeType":"VariableDeclaration","scope":1306,"src":"1558:157:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":990,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1558:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1625:84:7","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":991,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1606:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1606:109:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":1012,"nodeType":"Block","src":"1868:83:7","statements":[{"expression":{"id":1010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1002,"name":"suffixData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"1878:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":1006,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"1929:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayData","nodeType":"MemberAccess","referencedDeclaration":1332,"src":"1929:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}],"id":1005,"name":"hashRelayData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"1915:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RelayData_$1326_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct GsnTypes.RelayData calldata) pure returns (bytes32)"}},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1915:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1003,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1891:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1891:10:7","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1891:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"1878:66:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1011,"nodeType":"ExpressionStatement","src":"1878:66:7"}]},"id":1013,"implemented":true,"kind":"function","modifiers":[],"name":"splitRequest","nameLocation":"1731:12:7","nodeType":"FunctionDefinition","parameters":{"id":998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":997,"mutability":"mutable","name":"req","nameLocation":"1784:3:7","nodeType":"VariableDeclaration","scope":1013,"src":"1753:34:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest"},"typeName":{"id":996,"nodeType":"UserDefinedTypeName","pathNode":{"id":995,"name":"GsnTypes.RelayRequest","nodeType":"IdentifierPath","referencedDeclaration":1333,"src":"1753:21:7"},"referencedDeclaration":1333,"src":"1753:21:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_storage_ptr","typeString":"struct GsnTypes.RelayRequest"}},"visibility":"internal"}],"src":"1743:50:7"},"returnParameters":{"id":1001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1000,"mutability":"mutable","name":"suffixData","nameLocation":"1851:10:7","nodeType":"VariableDeclaration","scope":1013,"src":"1838:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":999,"name":"bytes","nodeType":"ElementaryTypeName","src":"1838:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1828:39:7"},"scope":1306,"src":"1722:229:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1062,"nodeType":"Block","src":"2142:447:7","statements":[{"assignments":[1020,1022],"declarations":[{"constant":false,"id":1020,"mutability":"mutable","name":"success","nameLocation":"2158:7:7","nodeType":"VariableDeclaration","scope":1062,"src":"2153:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1019,"name":"bool","nodeType":"ElementaryTypeName","src":"2153:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1022,"mutability":"mutable","name":"ret","nameLocation":"2180:3:7","nodeType":"VariableDeclaration","scope":1062,"src":"2167:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1021,"name":"bytes","nodeType":"ElementaryTypeName","src":"2167:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1037,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":1029,"name":"IRelayRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2275:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRelayRecipient_$766_$","typeString":"type(contract IRelayRecipient)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"isTrustedForwarder","nodeType":"MemberAccess","referencedDeclaration":748,"src":"2275:34:7","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_address_$returns$_t_bool_$","typeString":"function IRelayRecipient.isTrustedForwarder(address) view returns (bool)"}},"id":1031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2275:43:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"expression":{"id":1032,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"2320:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayData","nodeType":"MemberAccess","referencedDeclaration":1332,"src":"2320:22:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"forwarder","nodeType":"MemberAccess","referencedDeclaration":1321,"src":"2320:32:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1027,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2235:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2235:22:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2235:131:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"expression":{"expression":{"id":1023,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"2187:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"request","nodeType":"MemberAccess","referencedDeclaration":1329,"src":"2187:20:7","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"}},"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":307,"src":"2187:23:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"2187:34:7","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":1036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2187:189:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2152:224:7"},{"expression":{"arguments":[{"id":1039,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1020,"src":"2394:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"697354727573746564466f727761726465723a207265766572746564","id":1040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2403:30:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e","typeString":"literal_string \"isTrustedForwarder: reverted\""},"value":"isTrustedForwarder: reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e","typeString":"literal_string \"isTrustedForwarder: reverted\""}],"id":1038,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2386:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2386:48:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1042,"nodeType":"ExpressionStatement","src":"2386:48:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1044,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"2452:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2452:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3332","id":1046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2466:2:7","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2452:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"697354727573746564466f727761726465723a2062616420726573706f6e7365","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2470:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325","typeString":"literal_string \"isTrustedForwarder: bad response\""},"value":"isTrustedForwarder: bad response"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325","typeString":"literal_string \"isTrustedForwarder: bad response\""}],"id":1043,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2444:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2444:61:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1050,"nodeType":"ExpressionStatement","src":"2444:61:7"},{"expression":{"arguments":[{"arguments":[{"id":1054,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"2534:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2540:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":1055,"name":"bool","nodeType":"ElementaryTypeName","src":"2540:4:7","typeDescriptions":{}}}],"id":1057,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2539: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":1052,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2523:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2523:10:7","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2523:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420666f7277617264657220666f7220726563697069656e74","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2548:33:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4","typeString":"literal_string \"invalid forwarder for recipient\""},"value":"invalid forwarder for recipient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4","typeString":"literal_string \"invalid forwarder for recipient\""}],"id":1051,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2515:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2515:67:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1061,"nodeType":"ExpressionStatement","src":"2515:67:7"}]},"id":1063,"implemented":true,"kind":"function","modifiers":[],"name":"verifyForwarderTrusted","nameLocation":"2060:22:7","nodeType":"FunctionDefinition","parameters":{"id":1017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1016,"mutability":"mutable","name":"relayRequest","nameLocation":"2114:12:7","nodeType":"VariableDeclaration","scope":1063,"src":"2083:43:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest"},"typeName":{"id":1015,"nodeType":"UserDefinedTypeName","pathNode":{"id":1014,"name":"GsnTypes.RelayRequest","nodeType":"IdentifierPath","referencedDeclaration":1333,"src":"2083:21:7"},"referencedDeclaration":1333,"src":"2083:21:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_storage_ptr","typeString":"struct GsnTypes.RelayRequest"}},"visibility":"internal"}],"src":"2082:45:7"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[],"src":"2142:0:7"},"scope":1306,"src":"2051:538:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1108,"nodeType":"Block","src":"2705:356:7","statements":[{"assignments":[1072],"declarations":[{"constant":false,"id":1072,"mutability":"mutable","name":"suffixData","nameLocation":"2729:10:7","nodeType":"VariableDeclaration","scope":1108,"src":"2716:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1071,"name":"bytes","nodeType":"ElementaryTypeName","src":"2716:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1076,"initialValue":{"arguments":[{"id":1074,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"2756:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}],"id":1073,"name":"splitRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"2743:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RelayRequest_$1333_calldata_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct GsnTypes.RelayRequest calldata) pure returns (bytes memory)"}},"id":1075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2743:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2715:54:7"},{"assignments":[1078],"declarations":[{"constant":false,"id":1078,"mutability":"mutable","name":"_domainSeparator","nameLocation":"2787:16:7","nodeType":"VariableDeclaration","scope":1108,"src":"2779:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1077,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2779:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1084,"initialValue":{"arguments":[{"expression":{"expression":{"id":1080,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"2822:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayData","nodeType":"MemberAccess","referencedDeclaration":1332,"src":"2822:22:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"forwarder","nodeType":"MemberAccess","referencedDeclaration":1321,"src":"2822:32:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1079,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1230,"src":"2806:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bytes32_$","typeString":"function (address) view returns (bytes32)"}},"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2806:49:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2779:76:7"},{"assignments":[1087],"declarations":[{"constant":false,"id":1087,"mutability":"mutable","name":"forwarder","nameLocation":"2876:9:7","nodeType":"VariableDeclaration","scope":1108,"src":"2865:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IForwarder_$388","typeString":"contract IForwarder"},"typeName":{"id":1086,"nodeType":"UserDefinedTypeName","pathNode":{"id":1085,"name":"IForwarder","nodeType":"IdentifierPath","referencedDeclaration":388,"src":"2865:10:7"},"referencedDeclaration":388,"src":"2865:10:7","typeDescriptions":{"typeIdentifier":"t_contract$_IForwarder_$388","typeString":"contract IForwarder"}},"visibility":"internal"}],"id":1096,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":1091,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"2907:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayData","nodeType":"MemberAccess","referencedDeclaration":1332,"src":"2907:22:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"forwarder","nodeType":"MemberAccess","referencedDeclaration":1321,"src":"2907:32:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2899:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":1089,"name":"address","nodeType":"ElementaryTypeName","src":"2899:8:7","stateMutability":"payable","typeDescriptions":{}}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2899:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":1088,"name":"IForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"2888:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IForwarder_$388_$","typeString":"type(contract IForwarder)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2888:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IForwarder_$388","typeString":"contract IForwarder"}},"nodeType":"VariableDeclarationStatement","src":"2865:76:7"},{"expression":{"arguments":[{"expression":{"id":1100,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"2968:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":1101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"request","nodeType":"MemberAccess","referencedDeclaration":1329,"src":"2968:20:7","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"}},{"id":1102,"name":"_domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"2990:16:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1103,"name":"RELAY_REQUEST_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":980,"src":"3008:22:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1104,"name":"suffixData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1072,"src":"3032:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1105,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1068,"src":"3044:9:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1097,"name":"forwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"2951:9:7","typeDescriptions":{"typeIdentifier":"t_contract$_IForwarder_$388","typeString":"contract IForwarder"}},"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"verify","nodeType":"MemberAccess","referencedDeclaration":352,"src":"2951:16:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_struct$_ForwardRequest_$318_memory_ptr_$_t_bytes32_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct IForwarder.ForwardRequest memory,bytes32,bytes32,bytes memory,bytes memory) view external"}},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2951:103:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1107,"nodeType":"ExpressionStatement","src":"2951:103:7"}]},"id":1109,"implemented":true,"kind":"function","modifiers":[],"name":"verifySignature","nameLocation":"2604:15:7","nodeType":"FunctionDefinition","parameters":{"id":1069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1066,"mutability":"mutable","name":"relayRequest","nameLocation":"2651:12:7","nodeType":"VariableDeclaration","scope":1109,"src":"2620:43:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest"},"typeName":{"id":1065,"nodeType":"UserDefinedTypeName","pathNode":{"id":1064,"name":"GsnTypes.RelayRequest","nodeType":"IdentifierPath","referencedDeclaration":1333,"src":"2620:21:7"},"referencedDeclaration":1333,"src":"2620:21:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_storage_ptr","typeString":"struct GsnTypes.RelayRequest"}},"visibility":"internal"},{"constant":false,"id":1068,"mutability":"mutable","name":"signature","nameLocation":"2680:9:7","nodeType":"VariableDeclaration","scope":1109,"src":"2665:24:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1067,"name":"bytes","nodeType":"ElementaryTypeName","src":"2665:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2619:71:7"},"returnParameters":{"id":1070,"nodeType":"ParameterList","parameters":[],"src":"2705:0:7"},"scope":1306,"src":"2595:466:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1126,"nodeType":"Block","src":"3168:103:7","statements":[{"expression":{"arguments":[{"id":1118,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"3201:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}],"id":1117,"name":"verifyForwarderTrusted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1063,"src":"3178:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_RelayRequest_$1333_calldata_ptr_$returns$__$","typeString":"function (struct GsnTypes.RelayRequest calldata) view"}},"id":1119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3178:36:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1120,"nodeType":"ExpressionStatement","src":"3178:36:7"},{"expression":{"arguments":[{"id":1122,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"3240:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},{"id":1123,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1114,"src":"3254:9:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1121,"name":"verifySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"3224:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_RelayRequest_$1333_calldata_ptr_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct GsnTypes.RelayRequest calldata,bytes calldata) view"}},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3224:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1125,"nodeType":"ExpressionStatement","src":"3224:40:7"}]},"id":1127,"implemented":true,"kind":"function","modifiers":[],"name":"verify","nameLocation":"3076:6:7","nodeType":"FunctionDefinition","parameters":{"id":1115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1112,"mutability":"mutable","name":"relayRequest","nameLocation":"3114:12:7","nodeType":"VariableDeclaration","scope":1127,"src":"3083:43:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest"},"typeName":{"id":1111,"nodeType":"UserDefinedTypeName","pathNode":{"id":1110,"name":"GsnTypes.RelayRequest","nodeType":"IdentifierPath","referencedDeclaration":1333,"src":"3083:21:7"},"referencedDeclaration":1333,"src":"3083:21:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_storage_ptr","typeString":"struct GsnTypes.RelayRequest"}},"visibility":"internal"},{"constant":false,"id":1114,"mutability":"mutable","name":"signature","nameLocation":"3143:9:7","nodeType":"VariableDeclaration","scope":1127,"src":"3128:24:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1113,"name":"bytes","nodeType":"ElementaryTypeName","src":"3128:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3082:71:7"},"returnParameters":{"id":1116,"nodeType":"ParameterList","parameters":[],"src":"3168:0:7"},"scope":1306,"src":"3067:204:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1198,"nodeType":"Block","src":"3442:648:7","statements":[{"assignments":[1142],"declarations":[{"constant":false,"id":1142,"mutability":"mutable","name":"suffixData","nameLocation":"3466:10:7","nodeType":"VariableDeclaration","scope":1198,"src":"3453:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1141,"name":"bytes","nodeType":"ElementaryTypeName","src":"3453:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1146,"initialValue":{"arguments":[{"id":1144,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"3493:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}],"id":1143,"name":"splitRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"3480:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RelayRequest_$1333_calldata_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct GsnTypes.RelayRequest calldata) pure returns (bytes memory)"}},"id":1145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3480:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3452:54:7"},{"assignments":[1148],"declarations":[{"constant":false,"id":1148,"mutability":"mutable","name":"_domainSeparator","nameLocation":"3524:16:7","nodeType":"VariableDeclaration","scope":1198,"src":"3516:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1147,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3516:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1154,"initialValue":{"arguments":[{"expression":{"expression":{"id":1150,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"3559:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":1151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayData","nodeType":"MemberAccess","referencedDeclaration":1332,"src":"3559:22:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"forwarder","nodeType":"MemberAccess","referencedDeclaration":1321,"src":"3559:32:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1149,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1230,"src":"3543:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bytes32_$","typeString":"function (address) view returns (bytes32)"}},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3543:49:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3516:76:7"},{"expression":{"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1155,"name":"forwarderSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"3665:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1156,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"3683:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1157,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3664:23:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"expression":{"id":1164,"name":"IForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"3764:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IForwarder_$388_$","typeString":"type(contract IForwarder)"}},"id":1165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"execute","nodeType":"MemberAccess","referencedDeclaration":371,"src":"3764:18:7","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_struct$_ForwardRequest_$318_calldata_ptr_$_t_bytes32_$_t_bytes32_$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function IForwarder.execute(struct IForwarder.ForwardRequest calldata,bytes32,bytes32,bytes calldata,bytes calldata) payable returns (bool,bytes memory)"}},"id":1166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"3764:27:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":1167,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"3805:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"request","nodeType":"MemberAccess","referencedDeclaration":1329,"src":"3805:20:7","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"}},{"id":1169,"name":"_domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"3827:16:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1170,"name":"RELAY_REQUEST_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":980,"src":"3845:22:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1171,"name":"suffixData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"3869:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1172,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"3881:9:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1162,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3741:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3741:22:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3741:159:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"expression":{"expression":{"id":1158,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"3690:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":1159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayData","nodeType":"MemberAccess","referencedDeclaration":1332,"src":"3690:22:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"forwarder","nodeType":"MemberAccess","referencedDeclaration":1321,"src":"3690:32:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"3690:37: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":1174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3690:211:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"3664:237:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1176,"nodeType":"ExpressionStatement","src":"3664:237:7"},{"condition":{"id":1177,"name":"forwarderSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"3916:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1193,"nodeType":"IfStatement","src":"3911:143:7","trueBody":{"id":1192,"nodeType":"Block","src":"3935:119:7","statements":[{"expression":{"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1178,"name":"callSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"3993:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1179,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"4006:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1180,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3992:18:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1183,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"4024:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4030:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":1184,"name":"bool","nodeType":"ElementaryTypeName","src":"4030:4:7","typeDescriptions":{}}},{"id":1187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4036:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1186,"name":"bytes","nodeType":"ElementaryTypeName","src":"4036:5:7","typeDescriptions":{}}}],"id":1188,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4029:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_bool_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(bool),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_bool_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(bool),type(bytes storage pointer))"}],"expression":{"id":1181,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4013:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"4013:10:7","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4013:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"3992:51:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1191,"nodeType":"ExpressionStatement","src":"3992:51:7"}]}},{"expression":{"arguments":[{"id":1195,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"4079:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1194,"name":"truncateInPlace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1212,"src":"4063:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4063:20:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1197,"nodeType":"ExpressionStatement","src":"4063:20:7"}]},"id":1199,"implemented":true,"kind":"function","modifiers":[],"name":"execute","nameLocation":"3286:7:7","nodeType":"FunctionDefinition","parameters":{"id":1133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1130,"mutability":"mutable","name":"relayRequest","nameLocation":"3325:12:7","nodeType":"VariableDeclaration","scope":1199,"src":"3294:43:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest"},"typeName":{"id":1129,"nodeType":"UserDefinedTypeName","pathNode":{"id":1128,"name":"GsnTypes.RelayRequest","nodeType":"IdentifierPath","referencedDeclaration":1333,"src":"3294:21:7"},"referencedDeclaration":1333,"src":"3294:21:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_storage_ptr","typeString":"struct GsnTypes.RelayRequest"}},"visibility":"internal"},{"constant":false,"id":1132,"mutability":"mutable","name":"signature","nameLocation":"3354:9:7","nodeType":"VariableDeclaration","scope":1199,"src":"3339:24:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1131,"name":"bytes","nodeType":"ElementaryTypeName","src":"3339:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3293:71:7"},"returnParameters":{"id":1140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1135,"mutability":"mutable","name":"forwarderSuccess","nameLocation":"3388:16:7","nodeType":"VariableDeclaration","scope":1199,"src":"3383:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1134,"name":"bool","nodeType":"ElementaryTypeName","src":"3383:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1137,"mutability":"mutable","name":"callSuccess","nameLocation":"3411:11:7","nodeType":"VariableDeclaration","scope":1199,"src":"3406:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1136,"name":"bool","nodeType":"ElementaryTypeName","src":"3406:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1139,"mutability":"mutable","name":"ret","nameLocation":"3437:3:7","nodeType":"VariableDeclaration","scope":1199,"src":"3424:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1138,"name":"bytes","nodeType":"ElementaryTypeName","src":"3424:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3382:59:7"},"scope":1306,"src":"3277:813:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1211,"nodeType":"Block","src":"4374:67:7","statements":[{"expression":{"arguments":[{"id":1207,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"4412:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1208,"name":"MAX_RETURN_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"4418:15:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1204,"name":"MinLibBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1496,"src":"4384:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MinLibBytes_$1496_$","typeString":"type(library MinLibBytes)"}},"id":1206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"truncateInPlace","nodeType":"MemberAccess","referencedDeclaration":1398,"src":"4384:27:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (bytes memory,uint256) pure"}},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4384:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1210,"nodeType":"ExpressionStatement","src":"4384:50:7"}]},"id":1212,"implemented":true,"kind":"function","modifiers":[],"name":"truncateInPlace","nameLocation":"4325:15:7","nodeType":"FunctionDefinition","parameters":{"id":1202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1201,"mutability":"mutable","name":"data","nameLocation":"4354:4:7","nodeType":"VariableDeclaration","scope":1212,"src":"4341:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1200,"name":"bytes","nodeType":"ElementaryTypeName","src":"4341:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4340:19:7"},"returnParameters":{"id":1203,"nodeType":"ParameterList","parameters":[],"src":"4374:0:7"},"scope":1306,"src":"4316:125:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1229,"nodeType":"Block","src":"4523:216:7","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"47534e2052656c61796564205472616e73616374696f6e","id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4585:25:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_9647bda542dcf6621898cb1d03b22adb04c620d77e0bc6e67edb695f5f57777e","typeString":"literal_string \"GSN Relayed Transaction\""},"value":"GSN Relayed Transaction"},{"hexValue":"32","id":1222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4634:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_ad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5","typeString":"literal_string \"2\""},"value":"2"},{"arguments":[],"expression":{"argumentTypes":[],"id":1223,"name":"getChainID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"4661:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4661:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1225,"name":"forwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1214,"src":"4707:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9647bda542dcf6621898cb1d03b22adb04c620d77e0bc6e67edb695f5f57777e","typeString":"literal_string \"GSN Relayed Transaction\""},{"typeIdentifier":"t_stringliteral_ad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5","typeString":"literal_string \"2\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1220,"name":"EIP712Domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":989,"src":"4551:12:7","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_EIP712Domain_$989_storage_ptr_$","typeString":"type(struct GsnEip712Library.EIP712Domain storage pointer)"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["name","version","chainId","verifyingContract"],"nodeType":"FunctionCall","src":"4551:180:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Domain_$989_memory_ptr","typeString":"struct GsnEip712Library.EIP712Domain memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_EIP712Domain_$989_memory_ptr","typeString":"struct GsnEip712Library.EIP712Domain memory"}],"id":1219,"name":"hashDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"4540:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_EIP712Domain_$989_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct GsnEip712Library.EIP712Domain memory) pure returns (bytes32)"}},"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4540:192:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1218,"id":1228,"nodeType":"Return","src":"4533:199:7"}]},"id":1230,"implemented":true,"kind":"function","modifiers":[],"name":"domainSeparator","nameLocation":"4456:15:7","nodeType":"FunctionDefinition","parameters":{"id":1215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1214,"mutability":"mutable","name":"forwarder","nameLocation":"4480:9:7","nodeType":"VariableDeclaration","scope":1230,"src":"4472:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1213,"name":"address","nodeType":"ElementaryTypeName","src":"4472:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4471:19:7"},"returnParameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1230,"src":"4514:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1216,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4514:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4513:9:7"},"scope":1306,"src":"4447:292:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1236,"nodeType":"Block","src":"4802:113:7","statements":[{"AST":{"nodeType":"YulBlock","src":"4870:39:7","statements":[{"nodeType":"YulAssignment","src":"4884:15:7","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"4890:7:7"},"nodeType":"YulFunctionCall","src":"4890:9:7"},"variableNames":[{"name":"id","nodeType":"YulIdentifier","src":"4884:2:7"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1233,"isOffset":false,"isSlot":false,"src":"4884:2:7","valueSize":1}],"id":1235,"nodeType":"InlineAssembly","src":"4861:48:7"}]},"id":1237,"implemented":true,"kind":"function","modifiers":[],"name":"getChainID","nameLocation":"4754:10:7","nodeType":"FunctionDefinition","parameters":{"id":1231,"nodeType":"ParameterList","parameters":[],"src":"4764:2:7"},"returnParameters":{"id":1234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1233,"mutability":"mutable","name":"id","nameLocation":"4798:2:7","nodeType":"VariableDeclaration","scope":1237,"src":"4790:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1232,"name":"uint256","nodeType":"ElementaryTypeName","src":"4790:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4789:12:7"},"scope":1306,"src":"4745:170:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1270,"nodeType":"Block","src":"4998:244:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1248,"name":"EIP712DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"5053:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"expression":{"id":1252,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"5108:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Domain_$989_memory_ptr","typeString":"struct GsnEip712Library.EIP712Domain memory"}},"id":1253,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":982,"src":"5108:8:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5102:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1250,"name":"bytes","nodeType":"ElementaryTypeName","src":"5102:5:7","typeDescriptions":{}}},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5102:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1249,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5092:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5092:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"expression":{"id":1259,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"5152:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Domain_$989_memory_ptr","typeString":"struct GsnEip712Library.EIP712Domain memory"}},"id":1260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"version","nodeType":"MemberAccess","referencedDeclaration":984,"src":"5152:11:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5146:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1257,"name":"bytes","nodeType":"ElementaryTypeName","src":"5146:5:7","typeDescriptions":{}}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5146:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1256,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5136:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5136:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1263,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"5183:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Domain_$989_memory_ptr","typeString":"struct GsnEip712Library.EIP712Domain memory"}},"id":1264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"chainId","nodeType":"MemberAccess","referencedDeclaration":986,"src":"5183:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1265,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"5212:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Domain_$989_memory_ptr","typeString":"struct GsnEip712Library.EIP712Domain memory"}},"id":1266,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"verifyingContract","nodeType":"MemberAccess","referencedDeclaration":988,"src":"5212:21:7","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":1246,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5025:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5025:10:7","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5025:209:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1245,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5015:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5015:220:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1244,"id":1269,"nodeType":"Return","src":"5008:227:7"}]},"id":1271,"implemented":true,"kind":"function","modifiers":[],"name":"hashDomain","nameLocation":"4930:10:7","nodeType":"FunctionDefinition","parameters":{"id":1241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1240,"mutability":"mutable","name":"req","nameLocation":"4961:3:7","nodeType":"VariableDeclaration","scope":1271,"src":"4941:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Domain_$989_memory_ptr","typeString":"struct GsnEip712Library.EIP712Domain"},"typeName":{"id":1239,"nodeType":"UserDefinedTypeName","pathNode":{"id":1238,"name":"EIP712Domain","nodeType":"IdentifierPath","referencedDeclaration":989,"src":"4941:12:7"},"referencedDeclaration":989,"src":"4941:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Domain_$989_storage_ptr","typeString":"struct GsnEip712Library.EIP712Domain"}},"visibility":"internal"}],"src":"4940:25:7"},"returnParameters":{"id":1244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1271,"src":"4989:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1242,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4989:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4988:9:7"},"scope":1306,"src":"4921:321:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1304,"nodeType":"Block","src":"5336:363:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":1282,"name":"RELAYDATA_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"5391:18:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1283,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"5427:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gasPrice","nodeType":"MemberAccess","referencedDeclaration":1311,"src":"5427:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1285,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"5457:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pctRelayFee","nodeType":"MemberAccess","referencedDeclaration":1313,"src":"5457:15:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1287,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"5490:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"baseRelayFee","nodeType":"MemberAccess","referencedDeclaration":1315,"src":"5490:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1289,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"5524:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayWorker","nodeType":"MemberAccess","referencedDeclaration":1317,"src":"5524:15:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1291,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"5557:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"paymaster","nodeType":"MemberAccess","referencedDeclaration":1319,"src":"5557:13:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1293,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"5588:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"forwarder","nodeType":"MemberAccess","referencedDeclaration":1321,"src":"5588:13:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":1296,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"5629:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"paymasterData","nodeType":"MemberAccess","referencedDeclaration":1323,"src":"5629:17:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1295,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5619:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5619:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1299,"name":"req","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1274,"src":"5665:3:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"clientId","nodeType":"MemberAccess","referencedDeclaration":1325,"src":"5665:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1280,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5363:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5363:10:7","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5363:328:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1279,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5353:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5353:339:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1278,"id":1303,"nodeType":"Return","src":"5346:346:7"}]},"id":1305,"implemented":true,"kind":"function","modifiers":[],"name":"hashRelayData","nameLocation":"5257:13:7","nodeType":"FunctionDefinition","parameters":{"id":1275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1274,"mutability":"mutable","name":"req","nameLocation":"5299:3:7","nodeType":"VariableDeclaration","scope":1305,"src":"5271:31:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData"},"typeName":{"id":1273,"nodeType":"UserDefinedTypeName","pathNode":{"id":1272,"name":"GsnTypes.RelayData","nodeType":"IdentifierPath","referencedDeclaration":1326,"src":"5271:18:7"},"referencedDeclaration":1326,"src":"5271:18:7","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_storage_ptr","typeString":"struct GsnTypes.RelayData"}},"visibility":"internal"}],"src":"5270:33:7"},"returnParameters":{"id":1278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1305,"src":"5327:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1276,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5327:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5326:9:7"},"scope":1306,"src":"5248:451:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1307,"src":"304:5397:7","usedErrors":[]}],"src":"41:5661:7"},"id":7},"@opengsn/contracts/src/utils/GsnTypes.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/utils/GsnTypes.sol","exportedSymbols":{"GsnTypes":[1334],"IForwarder":[388]},"id":1335,"license":"GPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":1308,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"41:23:8"},{"absolutePath":"@opengsn/contracts/src/forwarder/IForwarder.sol","file":"../forwarder/IForwarder.sol","id":1309,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1335,"sourceUnit":389,"src":"66:37:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"GsnTypes","contractDependencies":[],"contractKind":"interface","fullyImplemented":true,"id":1334,"linearizedBaseContracts":[1334],"name":"GsnTypes","nameLocation":"115:8:8","nodeType":"ContractDefinition","nodes":[{"canonicalName":"GsnTypes.RelayData","id":1326,"members":[{"constant":false,"id":1311,"mutability":"mutable","name":"gasPrice","nameLocation":"303:8:8","nodeType":"VariableDeclaration","scope":1326,"src":"295:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1310,"name":"uint256","nodeType":"ElementaryTypeName","src":"295:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1313,"mutability":"mutable","name":"pctRelayFee","nameLocation":"329:11:8","nodeType":"VariableDeclaration","scope":1326,"src":"321:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1312,"name":"uint256","nodeType":"ElementaryTypeName","src":"321:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1315,"mutability":"mutable","name":"baseRelayFee","nameLocation":"358:12:8","nodeType":"VariableDeclaration","scope":1326,"src":"350:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1314,"name":"uint256","nodeType":"ElementaryTypeName","src":"350:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1317,"mutability":"mutable","name":"relayWorker","nameLocation":"388:11:8","nodeType":"VariableDeclaration","scope":1326,"src":"380:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1316,"name":"address","nodeType":"ElementaryTypeName","src":"380:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1319,"mutability":"mutable","name":"paymaster","nameLocation":"417:9:8","nodeType":"VariableDeclaration","scope":1326,"src":"409:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1318,"name":"address","nodeType":"ElementaryTypeName","src":"409:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1321,"mutability":"mutable","name":"forwarder","nameLocation":"444:9:8","nodeType":"VariableDeclaration","scope":1326,"src":"436:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1320,"name":"address","nodeType":"ElementaryTypeName","src":"436:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1323,"mutability":"mutable","name":"paymasterData","nameLocation":"469:13:8","nodeType":"VariableDeclaration","scope":1326,"src":"463:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1322,"name":"bytes","nodeType":"ElementaryTypeName","src":"463:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1325,"mutability":"mutable","name":"clientId","nameLocation":"500:8:8","nodeType":"VariableDeclaration","scope":1326,"src":"492:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1324,"name":"uint256","nodeType":"ElementaryTypeName","src":"492:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"RelayData","nameLocation":"275:9:8","nodeType":"StructDefinition","scope":1334,"src":"268:247:8","visibility":"public"},{"canonicalName":"GsnTypes.RelayRequest","id":1333,"members":[{"constant":false,"id":1329,"mutability":"mutable","name":"request","nameLocation":"668:7:8","nodeType":"VariableDeclaration","scope":1333,"src":"642:33:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_storage_ptr","typeString":"struct IForwarder.ForwardRequest"},"typeName":{"id":1328,"nodeType":"UserDefinedTypeName","pathNode":{"id":1327,"name":"IForwarder.ForwardRequest","nodeType":"IdentifierPath","referencedDeclaration":318,"src":"642:25:8"},"referencedDeclaration":318,"src":"642:25:8","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_storage_ptr","typeString":"struct IForwarder.ForwardRequest"}},"visibility":"internal"},{"constant":false,"id":1332,"mutability":"mutable","name":"relayData","nameLocation":"695:9:8","nodeType":"VariableDeclaration","scope":1333,"src":"685:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_storage_ptr","typeString":"struct GsnTypes.RelayData"},"typeName":{"id":1331,"nodeType":"UserDefinedTypeName","pathNode":{"id":1330,"name":"RelayData","nodeType":"IdentifierPath","referencedDeclaration":1326,"src":"685:9:8"},"referencedDeclaration":1326,"src":"685:9:8","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_storage_ptr","typeString":"struct GsnTypes.RelayData"}},"visibility":"internal"}],"name":"RelayRequest","nameLocation":"619:12:8","nodeType":"StructDefinition","scope":1334,"src":"612:99:8","visibility":"public"}],"scope":1335,"src":"105:608:8","usedErrors":[]}],"src":"41:673:8"},"id":8},"@opengsn/contracts/src/utils/GsnUtils.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/utils/GsnUtils.sol","exportedSymbols":{"GsnUtils":[1381],"MinLibBytes":[1496]},"id":1382,"license":"GPL-3.0-only","nodeType":"SourceUnit","nodes":[{"id":1336,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"82:23:9"},{"absolutePath":"@opengsn/contracts/src/utils/MinLibBytes.sol","file":"../utils/MinLibBytes.sol","id":1337,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1382,"sourceUnit":1497,"src":"107:34:9","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"GsnUtils","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1381,"linearizedBaseContracts":[1381],"name":"GsnUtils","nameLocation":"151:8:9","nodeType":"ContractDefinition","nodes":[{"body":{"id":1351,"nodeType":"Block","src":"311:58:9","statements":[{"expression":{"arguments":[{"id":1347,"name":"msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1340,"src":"351:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"360:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":1345,"name":"MinLibBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1496,"src":"328:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MinLibBytes_$1496_$","typeString":"type(library MinLibBytes)"}},"id":1346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"readBytes4","nodeType":"MemberAccess","referencedDeclaration":1495,"src":"328:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes4_$","typeString":"function (bytes memory,uint256) pure returns (bytes4)"}},"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"328:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":1344,"id":1350,"nodeType":"Return","src":"321:41:9"}]},"documentation":{"id":1338,"nodeType":"StructuredDocumentation","src":"167:64:9","text":" extract method sig from encoded function call"},"id":1352,"implemented":true,"kind":"function","modifiers":[],"name":"getMethodSig","nameLocation":"245:12:9","nodeType":"FunctionDefinition","parameters":{"id":1341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1340,"mutability":"mutable","name":"msgData","nameLocation":"271:7:9","nodeType":"VariableDeclaration","scope":1352,"src":"258:20:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1339,"name":"bytes","nodeType":"ElementaryTypeName","src":"258:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"257:22:9"},"returnParameters":{"id":1344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1352,"src":"303:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1342,"name":"bytes4","nodeType":"ElementaryTypeName","src":"303:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"302:8:9"},"scope":1381,"src":"236:133:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1372,"nodeType":"Block","src":"728:72:9","statements":[{"expression":{"arguments":[{"id":1364,"name":"msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1355,"src":"769:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":1365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"778:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1366,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"782:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":1367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"790:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"782:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"778:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1362,"name":"MinLibBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1496,"src":"745:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MinLibBytes_$1496_$","typeString":"type(library MinLibBytes)"}},"id":1363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"readUint256","nodeType":"MemberAccess","referencedDeclaration":1472,"src":"745:23:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bytes memory,uint256) pure returns (uint256)"}},"id":1370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"745:48:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1361,"id":1371,"nodeType":"Return","src":"738:55:9"}]},"documentation":{"id":1353,"nodeType":"StructuredDocumentation","src":"375:267:9","text":" extract parameter from encoded-function block.\n see: https://solidity.readthedocs.io/en/develop/abi-spec.html#formal-specification-of-the-encoding\n the return value should be casted to the right type (uintXXX/bytesXXX/address/bool/enum)"},"id":1373,"implemented":true,"kind":"function","modifiers":[],"name":"getParam","nameLocation":"656:8:9","nodeType":"FunctionDefinition","parameters":{"id":1358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1355,"mutability":"mutable","name":"msgData","nameLocation":"678:7:9","nodeType":"VariableDeclaration","scope":1373,"src":"665:20:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1354,"name":"bytes","nodeType":"ElementaryTypeName","src":"665:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1357,"mutability":"mutable","name":"index","nameLocation":"692:5:9","nodeType":"VariableDeclaration","scope":1373,"src":"687:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1356,"name":"uint","nodeType":"ElementaryTypeName","src":"687:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"664:34:9"},"returnParameters":{"id":1361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1373,"src":"722:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1359,"name":"uint","nodeType":"ElementaryTypeName","src":"722:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"721:6:9"},"scope":1381,"src":"647:153:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1379,"nodeType":"Block","src":"912:82:9","statements":[{"AST":{"nodeType":"YulBlock","src":"931:57:9","statements":[{"expression":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"956:4:9"},{"kind":"number","nodeType":"YulLiteral","src":"961:2:9","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"952:3:9"},"nodeType":"YulFunctionCall","src":"952:12:9"},{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"972:4:9"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"966:5:9"},"nodeType":"YulFunctionCall","src":"966:11:9"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"945:6:9"},"nodeType":"YulFunctionCall","src":"945:33:9"},"nodeType":"YulExpressionStatement","src":"945:33:9"}]},"evmVersion":"london","externalReferences":[{"declaration":1375,"isOffset":false,"isSlot":false,"src":"956:4:9","valueSize":1},{"declaration":1375,"isOffset":false,"isSlot":false,"src":"972:4:9","valueSize":1}],"id":1378,"nodeType":"InlineAssembly","src":"922:66:9"}]},"id":1380,"implemented":true,"kind":"function","modifiers":[],"name":"revertWithData","nameLocation":"864:14:9","nodeType":"FunctionDefinition","parameters":{"id":1376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1375,"mutability":"mutable","name":"data","nameLocation":"892:4:9","nodeType":"VariableDeclaration","scope":1380,"src":"879:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1374,"name":"bytes","nodeType":"ElementaryTypeName","src":"879:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"878:19:9"},"returnParameters":{"id":1377,"nodeType":"ParameterList","parameters":[],"src":"912:0:9"},"scope":1381,"src":"855:139:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1382,"src":"143:854:9","usedErrors":[]}],"src":"82:916:9"},"id":9},"@opengsn/contracts/src/utils/MinLibBytes.sol":{"ast":{"absolutePath":"@opengsn/contracts/src/utils/MinLibBytes.sol","exportedSymbols":{"MinLibBytes":[1496]},"id":1497,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1383,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"156:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"MinLibBytes","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1496,"linearizedBaseContracts":[1496],"name":"MinLibBytes","nameLocation":"189:11:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":1397,"nodeType":"Block","src":"502:99:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1390,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"516:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"516:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1392,"name":"maxlen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1387,"src":"530:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"516:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1396,"nodeType":"IfStatement","src":"512:83:10","trueBody":{"id":1395,"nodeType":"Block","src":"538:57:10","statements":[{"AST":{"nodeType":"YulBlock","src":"561:24:10","statements":[{"expression":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"570:4:10"},{"name":"maxlen","nodeType":"YulIdentifier","src":"576:6:10"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"563:6:10"},"nodeType":"YulFunctionCall","src":"563:20:10"},"nodeType":"YulExpressionStatement","src":"563:20:10"}]},"evmVersion":"london","externalReferences":[{"declaration":1385,"isOffset":false,"isSlot":false,"src":"570:4:10","valueSize":1},{"declaration":1387,"isOffset":false,"isSlot":false,"src":"576:6:10","valueSize":1}],"id":1394,"nodeType":"InlineAssembly","src":"552:33:10"}]}}]},"id":1398,"implemented":true,"kind":"function","modifiers":[],"name":"truncateInPlace","nameLocation":"437:15:10","nodeType":"FunctionDefinition","parameters":{"id":1388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1385,"mutability":"mutable","name":"data","nameLocation":"466:4:10","nodeType":"VariableDeclaration","scope":1398,"src":"453:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1384,"name":"bytes","nodeType":"ElementaryTypeName","src":"453:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1387,"mutability":"mutable","name":"maxlen","nameLocation":"480:6:10","nodeType":"VariableDeclaration","scope":1398,"src":"472:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1386,"name":"uint256","nodeType":"ElementaryTypeName","src":"472:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"452:35:10"},"returnParameters":{"id":1389,"nodeType":"ParameterList","parameters":[],"src":"502:0:10"},"scope":1496,"src":"428:173:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1425,"nodeType":"Block","src":"963:673:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1409,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1401,"src":"982:1:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"982:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1411,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"994:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3230","id":1412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1002:2:10","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"994:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"982:22:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"72656164416464726573733a206461746120746f6f2073686f7274","id":1415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1006:29:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_0ff21d28ab53e736b05938ba9d5748dcb979d78d4c19815de87213f62c5dfe9a","typeString":"literal_string \"readAddress: data too short\""},"value":"readAddress: data too short"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ff21d28ab53e736b05938ba9d5748dcb979d78d4c19815de87213f62c5dfe9a","typeString":"literal_string \"readAddress: data too short\""}],"id":1408,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"973:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"973:63:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1417,"nodeType":"ExpressionStatement","src":"973:63:10"},{"expression":{"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1418,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"1274:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3230","id":1419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1283:2:10","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"1274:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1421,"nodeType":"ExpressionStatement","src":"1274:11:10"},{"AST":{"nodeType":"YulBlock","src":"1347:260:10","statements":[{"nodeType":"YulAssignment","src":"1518:79:10","value":{"arguments":[{"arguments":[{"arguments":[{"name":"b","nodeType":"YulIdentifier","src":"1542:1:10"},{"name":"index","nodeType":"YulIdentifier","src":"1545:5:10"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1538:3:10"},"nodeType":"YulFunctionCall","src":"1538:13:10"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1532:5:10"},"nodeType":"YulFunctionCall","src":"1532:20:10"},{"kind":"number","nodeType":"YulLiteral","src":"1554:42:10","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1528:3:10"},"nodeType":"YulFunctionCall","src":"1528:69:10"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1518:6:10"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1401,"isOffset":false,"isSlot":false,"src":"1542:1:10","valueSize":1},{"declaration":1403,"isOffset":false,"isSlot":false,"src":"1545:5:10","valueSize":1},{"declaration":1406,"isOffset":false,"isSlot":false,"src":"1518:6:10","valueSize":1}],"id":1422,"nodeType":"InlineAssembly","src":"1338:269:10"},{"expression":{"id":1423,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1406,"src":"1623:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1407,"id":1424,"nodeType":"Return","src":"1616:13:10"}]},"documentation":{"id":1399,"nodeType":"StructuredDocumentation","src":"607:210:10","text":"@dev Reads an address from a position in a byte array.\n @param b Byte array containing an address.\n @param index Index in byte array of address.\n @return result address from byte array."},"id":1426,"implemented":true,"kind":"function","modifiers":[],"name":"readAddress","nameLocation":"831:11:10","nodeType":"FunctionDefinition","parameters":{"id":1404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1401,"mutability":"mutable","name":"b","nameLocation":"865:1:10","nodeType":"VariableDeclaration","scope":1426,"src":"852:14:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1400,"name":"bytes","nodeType":"ElementaryTypeName","src":"852:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1403,"mutability":"mutable","name":"index","nameLocation":"884:5:10","nodeType":"VariableDeclaration","scope":1426,"src":"876:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1402,"name":"uint256","nodeType":"ElementaryTypeName","src":"876:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"842:53:10"},"returnParameters":{"id":1407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1406,"mutability":"mutable","name":"result","nameLocation":"951:6:10","nodeType":"VariableDeclaration","scope":1426,"src":"943:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1405,"name":"address","nodeType":"ElementaryTypeName","src":"943:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"942:16:10"},"scope":1496,"src":"822:814:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1448,"nodeType":"Block","src":"1783:230:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1436,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1428,"src":"1801:1:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1801:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1438,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1430,"src":"1813:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":1439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1821:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1813:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1801:22:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"72656164427974657333323a206461746120746f6f2073686f7274","id":1442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1825:29:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_767dc5ed40d0b25ea26edf167fbb901f3024eaabad14c9340870a684e6339d57","typeString":"literal_string \"readBytes32: data too short\""},"value":"readBytes32: data too short"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_767dc5ed40d0b25ea26edf167fbb901f3024eaabad14c9340870a684e6339d57","typeString":"literal_string \"readBytes32: data too short\""}],"id":1435,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1793:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1793:63:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1444,"nodeType":"ExpressionStatement","src":"1793:63:10"},{"AST":{"nodeType":"YulBlock","src":"1922:62:10","statements":[{"nodeType":"YulAssignment","src":"1936:38:10","value":{"arguments":[{"arguments":[{"name":"b","nodeType":"YulIdentifier","src":"1956:1:10"},{"arguments":[{"name":"index","nodeType":"YulIdentifier","src":"1963:5:10"},{"kind":"number","nodeType":"YulLiteral","src":"1969:2:10","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1959:3:10"},"nodeType":"YulFunctionCall","src":"1959:13:10"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1952:3:10"},"nodeType":"YulFunctionCall","src":"1952:21:10"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1946:5:10"},"nodeType":"YulFunctionCall","src":"1946:28:10"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1936:6:10"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1428,"isOffset":false,"isSlot":false,"src":"1956:1:10","valueSize":1},{"declaration":1430,"isOffset":false,"isSlot":false,"src":"1963:5:10","valueSize":1},{"declaration":1433,"isOffset":false,"isSlot":false,"src":"1936:6:10","valueSize":1}],"id":1445,"nodeType":"InlineAssembly","src":"1913:71:10"},{"expression":{"id":1446,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1433,"src":"2000:6:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1434,"id":1447,"nodeType":"Return","src":"1993:13:10"}]},"id":1449,"implemented":true,"kind":"function","modifiers":[],"name":"readBytes32","nameLocation":"1651:11:10","nodeType":"FunctionDefinition","parameters":{"id":1431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1428,"mutability":"mutable","name":"b","nameLocation":"1685:1:10","nodeType":"VariableDeclaration","scope":1449,"src":"1672:14:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1427,"name":"bytes","nodeType":"ElementaryTypeName","src":"1672:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1430,"mutability":"mutable","name":"index","nameLocation":"1704:5:10","nodeType":"VariableDeclaration","scope":1449,"src":"1696:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1429,"name":"uint256","nodeType":"ElementaryTypeName","src":"1696:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1662:53:10"},"returnParameters":{"id":1434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1433,"mutability":"mutable","name":"result","nameLocation":"1771:6:10","nodeType":"VariableDeclaration","scope":1449,"src":"1763:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1432,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1763:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1762:16:10"},"scope":1496,"src":"1642:371:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1471,"nodeType":"Block","src":"2397:79:10","statements":[{"expression":{"id":1467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1459,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2407:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":1463,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1452,"src":"2436:1:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1464,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"2439:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1462,"name":"readBytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1449,"src":"2424:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2424:21:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2416:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1460,"name":"uint256","nodeType":"ElementaryTypeName","src":"2416:7:10","typeDescriptions":{}}},"id":1466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2416:30:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2407:39:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1468,"nodeType":"ExpressionStatement","src":"2407:39:10"},{"expression":{"id":1469,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"2463:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1458,"id":1470,"nodeType":"Return","src":"2456:13:10"}]},"documentation":{"id":1450,"nodeType":"StructuredDocumentation","src":"2019:232:10","text":"@dev Reads a uint256 value from a position in a byte array.\n @param b Byte array containing a uint256 value.\n @param index Index in byte array of uint256 value.\n @return result uint256 value from byte array."},"id":1472,"implemented":true,"kind":"function","modifiers":[],"name":"readUint256","nameLocation":"2265:11:10","nodeType":"FunctionDefinition","parameters":{"id":1455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1452,"mutability":"mutable","name":"b","nameLocation":"2299:1:10","nodeType":"VariableDeclaration","scope":1472,"src":"2286:14:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1451,"name":"bytes","nodeType":"ElementaryTypeName","src":"2286:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1454,"mutability":"mutable","name":"index","nameLocation":"2318:5:10","nodeType":"VariableDeclaration","scope":1472,"src":"2310:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1453,"name":"uint256","nodeType":"ElementaryTypeName","src":"2310:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2276:53:10"},"returnParameters":{"id":1458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1457,"mutability":"mutable","name":"result","nameLocation":"2385:6:10","nodeType":"VariableDeclaration","scope":1472,"src":"2377:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1456,"name":"uint256","nodeType":"ElementaryTypeName","src":"2377:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2376:16:10"},"scope":1496,"src":"2256:220:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1494,"nodeType":"Block","src":"2621:432:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1482,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"2639:1:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2639:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1484,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"2651:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":1485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2659:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2651:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2639:21:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"726561644279746573343a206461746120746f6f2073686f7274","id":1488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2662:28:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_e3fe8b8d7a4d7297198f00bec48c1f664c9a2ab21f2fa0d4a68337ee48c21898","typeString":"literal_string \"readBytes4: data too short\""},"value":"readBytes4: data too short"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e3fe8b8d7a4d7297198f00bec48c1f664c9a2ab21f2fa0d4a68337ee48c21898","typeString":"literal_string \"readBytes4: data too short\""}],"id":1481,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2631:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2631:60:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1490,"nodeType":"ExpressionStatement","src":"2631:60:10"},{"AST":{"nodeType":"YulBlock","src":"2756:268:10","statements":[{"nodeType":"YulAssignment","src":"2770:38:10","value":{"arguments":[{"arguments":[{"name":"b","nodeType":"YulIdentifier","src":"2790:1:10"},{"arguments":[{"name":"index","nodeType":"YulIdentifier","src":"2797:5:10"},{"kind":"number","nodeType":"YulLiteral","src":"2803:2:10","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2793:3:10"},"nodeType":"YulFunctionCall","src":"2793:13:10"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2786:3:10"},"nodeType":"YulFunctionCall","src":"2786:21:10"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2780:5:10"},"nodeType":"YulFunctionCall","src":"2780:28:10"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2770:6:10"}]},{"nodeType":"YulAssignment","src":"2925:89:10","value":{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"2939:6:10"},{"kind":"number","nodeType":"YulLiteral","src":"2947:66:10","type":"","value":"0xFFFFFFFF00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2935:3:10"},"nodeType":"YulFunctionCall","src":"2935:79:10"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2925:6:10"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1474,"isOffset":false,"isSlot":false,"src":"2790:1:10","valueSize":1},{"declaration":1476,"isOffset":false,"isSlot":false,"src":"2797:5:10","valueSize":1},{"declaration":1479,"isOffset":false,"isSlot":false,"src":"2770:6:10","valueSize":1},{"declaration":1479,"isOffset":false,"isSlot":false,"src":"2925:6:10","valueSize":1},{"declaration":1479,"isOffset":false,"isSlot":false,"src":"2939:6:10","valueSize":1}],"id":1491,"nodeType":"InlineAssembly","src":"2747:277:10"},{"expression":{"id":1492,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"3040:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":1480,"id":1493,"nodeType":"Return","src":"3033:13:10"}]},"id":1495,"implemented":true,"kind":"function","modifiers":[],"name":"readBytes4","nameLocation":"2491:10:10","nodeType":"FunctionDefinition","parameters":{"id":1477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1474,"mutability":"mutable","name":"b","nameLocation":"2524:1:10","nodeType":"VariableDeclaration","scope":1495,"src":"2511:14:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1473,"name":"bytes","nodeType":"ElementaryTypeName","src":"2511:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1476,"mutability":"mutable","name":"index","nameLocation":"2543:5:10","nodeType":"VariableDeclaration","scope":1495,"src":"2535:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1475,"name":"uint256","nodeType":"ElementaryTypeName","src":"2535:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2501:53:10"},"returnParameters":{"id":1480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1479,"mutability":"mutable","name":"result","nameLocation":"2609:6:10","nodeType":"VariableDeclaration","scope":1495,"src":"2602:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1478,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2602:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2601:15:10"},"scope":1496,"src":"2482:571:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1497,"src":"181:2874:10","usedErrors":[]}],"src":"156:2900:10"},"id":10},"@openzeppelin/contracts/access/AccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","exportedSymbols":{"AccessControl":[1816],"Context":[2102],"ERC165":[2352],"IAccessControl":[1889],"IERC165":[2364],"Strings":[2328]},"id":1817,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1498,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:11"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"./IAccessControl.sol","id":1499,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1817,"sourceUnit":1890,"src":"133:30:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":1500,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1817,"sourceUnit":2103,"src":"164:30:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../utils/Strings.sol","id":1501,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1817,"sourceUnit":2329,"src":"195:30:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../utils/introspection/ERC165.sol","id":1502,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1817,"sourceUnit":2353,"src":"226:43:11","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1504,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":2102,"src":"1841:7:11"},"id":1505,"nodeType":"InheritanceSpecifier","src":"1841:7:11"},{"baseName":{"id":1506,"name":"IAccessControl","nodeType":"IdentifierPath","referencedDeclaration":1889,"src":"1850:14:11"},"id":1507,"nodeType":"InheritanceSpecifier","src":"1850:14:11"},{"baseName":{"id":1508,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":2352,"src":"1866:6:11"},"id":1509,"nodeType":"InheritanceSpecifier","src":"1866:6:11"}],"canonicalName":"AccessControl","contractDependencies":[],"contractKind":"contract","documentation":{"id":1503,"nodeType":"StructuredDocumentation","src":"271:1534:11","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```\n function foo() public {\n     require(hasRole(MY_ROLE, msg.sender));\n     ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it."},"fullyImplemented":true,"id":1816,"linearizedBaseContracts":[1816,2352,2364,1889,2102],"name":"AccessControl","nameLocation":"1824:13:11","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControl.RoleData","id":1516,"members":[{"constant":false,"id":1513,"mutability":"mutable","name":"members","nameLocation":"1930:7:11","nodeType":"VariableDeclaration","scope":1516,"src":"1905:32:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":1512,"keyType":{"id":1510,"name":"address","nodeType":"ElementaryTypeName","src":"1913:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1905:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":1511,"name":"bool","nodeType":"ElementaryTypeName","src":"1924:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":1515,"mutability":"mutable","name":"adminRole","nameLocation":"1955:9:11","nodeType":"VariableDeclaration","scope":1516,"src":"1947:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1514,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1947:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"1886:8:11","nodeType":"StructDefinition","scope":1816,"src":"1879:92:11","visibility":"public"},{"constant":false,"id":1521,"mutability":"mutable","name":"_roles","nameLocation":"2014:6:11","nodeType":"VariableDeclaration","scope":1816,"src":"1977:43:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$1516_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"typeName":{"id":1520,"keyType":{"id":1517,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1985:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"1977:28:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$1516_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"valueType":{"id":1519,"nodeType":"UserDefinedTypeName","pathNode":{"id":1518,"name":"RoleData","nodeType":"IdentifierPath","referencedDeclaration":1516,"src":"1996:8:11"},"referencedDeclaration":1516,"src":"1996:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$1516_storage_ptr","typeString":"struct AccessControl.RoleData"}}},"visibility":"private"},{"constant":true,"functionSelector":"a217fddf","id":1524,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2051:18:11","nodeType":"VariableDeclaration","scope":1816,"src":"2027:49:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2027:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":1523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2072:4:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"body":{"id":1534,"nodeType":"Block","src":"2495:44:11","statements":[{"expression":{"arguments":[{"id":1530,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"2516:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1529,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[1589,1632],"referencedDeclaration":1589,"src":"2505:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2505:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1532,"nodeType":"ExpressionStatement","src":"2505:16:11"},{"id":1533,"nodeType":"PlaceholderStatement","src":"2531:1:11"}]},"documentation":{"id":1525,"nodeType":"StructuredDocumentation","src":"2083:375:11","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with a standardized message including the required role.\n The format of the revert reason is given by the following regular expression:\n  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n _Available since v4.1._"},"id":1535,"name":"onlyRole","nameLocation":"2472:8:11","nodeType":"ModifierDefinition","parameters":{"id":1528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1527,"mutability":"mutable","name":"role","nameLocation":"2489:4:11","nodeType":"VariableDeclaration","scope":1535,"src":"2481:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1526,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2481:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2480:14:11"},"src":"2463:76:11","virtual":false,"visibility":"internal"},{"baseFunctions":[2351],"body":{"id":1556,"nodeType":"Block","src":"2697:111:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1544,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"2714:11:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1546,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1889,"src":"2734:14:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1889_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1889_$","typeString":"type(contract IAccessControl)"}],"id":1545,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2729:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2729:20:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$1889","typeString":"type(contract IAccessControl)"}},"id":1548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"2729:32:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2714:47:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1552,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"2789:11:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1550,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2765:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControl_$1816_$","typeString":"type(contract super AccessControl)"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2351,"src":"2765:23:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2765:36:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2714:87:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1543,"id":1555,"nodeType":"Return","src":"2707:94:11"}]},"documentation":{"id":1536,"nodeType":"StructuredDocumentation","src":"2545:56:11","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":1557,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2615:17:11","nodeType":"FunctionDefinition","overrides":{"id":1540,"nodeType":"OverrideSpecifier","overrides":[],"src":"2673:8:11"},"parameters":{"id":1539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1538,"mutability":"mutable","name":"interfaceId","nameLocation":"2640:11:11","nodeType":"VariableDeclaration","scope":1557,"src":"2633:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1537,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2633:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2632:20:11"},"returnParameters":{"id":1543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1542,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1557,"src":"2691:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1541,"name":"bool","nodeType":"ElementaryTypeName","src":"2691:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2690:6:11"},"scope":1816,"src":"2606:202:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1856],"body":{"id":1575,"nodeType":"Block","src":"2987:53:11","statements":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":1568,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"3004:6:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$1516_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":1570,"indexExpression":{"id":1569,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"3011:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3004:12:11","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$1516_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":1571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":1513,"src":"3004:20:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1573,"indexExpression":{"id":1572,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1562,"src":"3025:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3004:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1567,"id":1574,"nodeType":"Return","src":"2997:36:11"}]},"documentation":{"id":1558,"nodeType":"StructuredDocumentation","src":"2814:76:11","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":1576,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"2904:7:11","nodeType":"FunctionDefinition","overrides":{"id":1564,"nodeType":"OverrideSpecifier","overrides":[],"src":"2963:8:11"},"parameters":{"id":1563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1560,"mutability":"mutable","name":"role","nameLocation":"2920:4:11","nodeType":"VariableDeclaration","scope":1576,"src":"2912:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1559,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2912:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1562,"mutability":"mutable","name":"account","nameLocation":"2934:7:11","nodeType":"VariableDeclaration","scope":1576,"src":"2926:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1561,"name":"address","nodeType":"ElementaryTypeName","src":"2926:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2911:31:11"},"returnParameters":{"id":1567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1576,"src":"2981:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1565,"name":"bool","nodeType":"ElementaryTypeName","src":"2981:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2980:6:11"},"scope":1816,"src":"2895:145:11","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1588,"nodeType":"Block","src":"3390:47:11","statements":[{"expression":{"arguments":[{"id":1583,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1579,"src":"3411:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1584,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"3417:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3417:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1582,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[1589,1632],"referencedDeclaration":1632,"src":"3400:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3400:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1587,"nodeType":"ExpressionStatement","src":"3400:30:11"}]},"documentation":{"id":1577,"nodeType":"StructuredDocumentation","src":"3046:283:11","text":" @dev Revert with a standard message if `_msgSender()` is missing `role`.\n Overriding this function changes the behavior of the {onlyRole} modifier.\n Format of the revert message is described in {_checkRole}.\n _Available since v4.6._"},"id":1589,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3343:10:11","nodeType":"FunctionDefinition","parameters":{"id":1580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1579,"mutability":"mutable","name":"role","nameLocation":"3362:4:11","nodeType":"VariableDeclaration","scope":1589,"src":"3354:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1578,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3354:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3353:14:11"},"returnParameters":{"id":1581,"nodeType":"ParameterList","parameters":[],"src":"3390:0:11"},"scope":1816,"src":"3334:103:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1631,"nodeType":"Block","src":"3791:419:11","statements":[{"condition":{"id":1601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3805:23:11","subExpression":{"arguments":[{"id":1598,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1592,"src":"3814:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1599,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"3820:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1597,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1576,"src":"3806:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":1600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3806:22:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1630,"nodeType":"IfStatement","src":"3801:403:11","trueBody":{"id":1629,"nodeType":"Block","src":"3830:374:11","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"416363657373436f6e74726f6c3a206163636f756e7420","id":1607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3938:25:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","typeString":"literal_string \"AccessControl: account \""},"value":"AccessControl: account "},{"arguments":[{"arguments":[{"id":1612,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"4017:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4009:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1610,"name":"uint160","nodeType":"ElementaryTypeName","src":"4009:7:11","typeDescriptions":{}}},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4009:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"hexValue":"3230","id":1614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4027:2:11","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"expression":{"id":1608,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2328,"src":"3989:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$2328_$","typeString":"type(library Strings)"}},"id":1609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toHexString","nodeType":"MemberAccess","referencedDeclaration":2307,"src":"3989:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3989:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"206973206d697373696e6720726f6c6520","id":1616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4056:19:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","typeString":"literal_string \" is missing role \""},"value":" is missing role "},{"arguments":[{"arguments":[{"id":1621,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1592,"src":"4129:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4121:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1619,"name":"uint256","nodeType":"ElementaryTypeName","src":"4121:7:11","typeDescriptions":{}}},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4121:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"3332","id":1623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4136:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"expression":{"id":1617,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2328,"src":"4101:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$2328_$","typeString":"type(library Strings)"}},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toHexString","nodeType":"MemberAccess","referencedDeclaration":2307,"src":"4101:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4101:38:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","typeString":"literal_string \"AccessControl: account \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","typeString":"literal_string \" is missing role \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1605,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3896:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3896:16:11","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3896:265:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3868:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1603,"name":"string","nodeType":"ElementaryTypeName","src":"3868:6:11","typeDescriptions":{}}},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3868:311:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1602,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3844:6:11","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3844:349:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1628,"nodeType":"ExpressionStatement","src":"3844:349:11"}]}}]},"documentation":{"id":1590,"nodeType":"StructuredDocumentation","src":"3443:270:11","text":" @dev Revert with a standard message if `account` is missing `role`.\n The format of the revert reason is given by the following regular expression:\n  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/"},"id":1632,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3727:10:11","nodeType":"FunctionDefinition","parameters":{"id":1595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1592,"mutability":"mutable","name":"role","nameLocation":"3746:4:11","nodeType":"VariableDeclaration","scope":1632,"src":"3738:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1591,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3738:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1594,"mutability":"mutable","name":"account","nameLocation":"3760:7:11","nodeType":"VariableDeclaration","scope":1632,"src":"3752:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1593,"name":"address","nodeType":"ElementaryTypeName","src":"3752:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3737:31:11"},"returnParameters":{"id":1596,"nodeType":"ParameterList","parameters":[],"src":"3791:0:11"},"scope":1816,"src":"3718:492:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1864],"body":{"id":1646,"nodeType":"Block","src":"4474:46:11","statements":[{"expression":{"expression":{"baseExpression":{"id":1641,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"4491:6:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$1516_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":1643,"indexExpression":{"id":1642,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1635,"src":"4498:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4491:12:11","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$1516_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":1644,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":1515,"src":"4491:22:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1640,"id":1645,"nodeType":"Return","src":"4484:29:11"}]},"documentation":{"id":1633,"nodeType":"StructuredDocumentation","src":"4216:170:11","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":1647,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"4400:12:11","nodeType":"FunctionDefinition","overrides":{"id":1637,"nodeType":"OverrideSpecifier","overrides":[],"src":"4447:8:11"},"parameters":{"id":1636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1635,"mutability":"mutable","name":"role","nameLocation":"4421:4:11","nodeType":"VariableDeclaration","scope":1647,"src":"4413:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1634,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4413:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4412:14:11"},"returnParameters":{"id":1640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1639,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1647,"src":"4465:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1638,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4465:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4464:9:11"},"scope":1816,"src":"4391:129:11","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1872],"body":{"id":1666,"nodeType":"Block","src":"4919:42:11","statements":[{"expression":{"arguments":[{"id":1662,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"4940:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1663,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"4946:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1661,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"4929:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4929:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1665,"nodeType":"ExpressionStatement","src":"4929:25:11"}]},"documentation":{"id":1648,"nodeType":"StructuredDocumentation","src":"4526:285:11","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.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":1667,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":1657,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"4912:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1656,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"4899:12:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4899:18:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1659,"kind":"modifierInvocation","modifierName":{"id":1655,"name":"onlyRole","nodeType":"IdentifierPath","referencedDeclaration":1535,"src":"4890:8:11"},"nodeType":"ModifierInvocation","src":"4890:28:11"}],"name":"grantRole","nameLocation":"4825:9:11","nodeType":"FunctionDefinition","overrides":{"id":1654,"nodeType":"OverrideSpecifier","overrides":[],"src":"4881:8:11"},"parameters":{"id":1653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1650,"mutability":"mutable","name":"role","nameLocation":"4843:4:11","nodeType":"VariableDeclaration","scope":1667,"src":"4835:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1649,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4835:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1652,"mutability":"mutable","name":"account","nameLocation":"4857:7:11","nodeType":"VariableDeclaration","scope":1667,"src":"4849:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1651,"name":"address","nodeType":"ElementaryTypeName","src":"4849:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4834:31:11"},"returnParameters":{"id":1660,"nodeType":"ParameterList","parameters":[],"src":"4919:0:11"},"scope":1816,"src":"4816:145:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1880],"body":{"id":1686,"nodeType":"Block","src":"5345:43:11","statements":[{"expression":{"arguments":[{"id":1682,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"5367:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1683,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1672,"src":"5373:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1681,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1815,"src":"5355:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5355:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1685,"nodeType":"ExpressionStatement","src":"5355:26:11"}]},"documentation":{"id":1668,"nodeType":"StructuredDocumentation","src":"4967:269:11","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.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":1687,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":1677,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"5338:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1676,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"5325:12:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5325:18:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1679,"kind":"modifierInvocation","modifierName":{"id":1675,"name":"onlyRole","nodeType":"IdentifierPath","referencedDeclaration":1535,"src":"5316:8:11"},"nodeType":"ModifierInvocation","src":"5316:28:11"}],"name":"revokeRole","nameLocation":"5250:10:11","nodeType":"FunctionDefinition","overrides":{"id":1674,"nodeType":"OverrideSpecifier","overrides":[],"src":"5307:8:11"},"parameters":{"id":1673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1670,"mutability":"mutable","name":"role","nameLocation":"5269:4:11","nodeType":"VariableDeclaration","scope":1687,"src":"5261:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1669,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5261:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1672,"mutability":"mutable","name":"account","nameLocation":"5283:7:11","nodeType":"VariableDeclaration","scope":1687,"src":"5275:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1671,"name":"address","nodeType":"ElementaryTypeName","src":"5275:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5260:31:11"},"returnParameters":{"id":1680,"nodeType":"ParameterList","parameters":[],"src":"5345:0:11"},"scope":1816,"src":"5241:147:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1888],"body":{"id":1709,"nodeType":"Block","src":"6002:137:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1697,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1692,"src":"6020:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1698,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"6031:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6031:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6020:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66","id":1701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6045:49:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b","typeString":"literal_string \"AccessControl: can only renounce roles for self\""},"value":"AccessControl: can only renounce roles for self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b","typeString":"literal_string \"AccessControl: can only renounce roles for self\""}],"id":1696,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6012:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6012:83:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1703,"nodeType":"ExpressionStatement","src":"6012:83:11"},{"expression":{"arguments":[{"id":1705,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"6118:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1706,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1692,"src":"6124:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1704,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1815,"src":"6106:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6106:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1708,"nodeType":"ExpressionStatement","src":"6106:26:11"}]},"documentation":{"id":1688,"nodeType":"StructuredDocumentation","src":"5394:526:11","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 revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":1710,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"5934:12:11","nodeType":"FunctionDefinition","overrides":{"id":1694,"nodeType":"OverrideSpecifier","overrides":[],"src":"5993:8:11"},"parameters":{"id":1693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1690,"mutability":"mutable","name":"role","nameLocation":"5955:4:11","nodeType":"VariableDeclaration","scope":1710,"src":"5947:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1689,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5947:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1692,"mutability":"mutable","name":"account","nameLocation":"5969:7:11","nodeType":"VariableDeclaration","scope":1710,"src":"5961:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1691,"name":"address","nodeType":"ElementaryTypeName","src":"5961:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5946:31:11"},"returnParameters":{"id":1695,"nodeType":"ParameterList","parameters":[],"src":"6002:0:11"},"scope":1816,"src":"5925:214:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1723,"nodeType":"Block","src":"6892:42:11","statements":[{"expression":{"arguments":[{"id":1719,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1713,"src":"6913:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1720,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"6919:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1718,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"6902:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6902:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1722,"nodeType":"ExpressionStatement","src":"6902:25:11"}]},"documentation":{"id":1711,"nodeType":"StructuredDocumentation","src":"6145:674:11","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n May emit a {RoleGranted} event.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ====\n NOTE: This function is deprecated in favor of {_grantRole}."},"id":1724,"implemented":true,"kind":"function","modifiers":[],"name":"_setupRole","nameLocation":"6833:10:11","nodeType":"FunctionDefinition","parameters":{"id":1716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1713,"mutability":"mutable","name":"role","nameLocation":"6852:4:11","nodeType":"VariableDeclaration","scope":1724,"src":"6844:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1712,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6844:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1715,"mutability":"mutable","name":"account","nameLocation":"6866:7:11","nodeType":"VariableDeclaration","scope":1724,"src":"6858:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1714,"name":"address","nodeType":"ElementaryTypeName","src":"6858:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6843:31:11"},"returnParameters":{"id":1717,"nodeType":"ParameterList","parameters":[],"src":"6892:0:11"},"scope":1816,"src":"6824:110:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1751,"nodeType":"Block","src":"7132:174:11","statements":[{"assignments":[1733],"declarations":[{"constant":false,"id":1733,"mutability":"mutable","name":"previousAdminRole","nameLocation":"7150:17:11","nodeType":"VariableDeclaration","scope":1751,"src":"7142:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7142:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1737,"initialValue":{"arguments":[{"id":1735,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"7183:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1734,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"7170:12:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7170:18:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7142:46:11"},{"expression":{"id":1743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":1738,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"7198:6:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$1516_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":1740,"indexExpression":{"id":1739,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"7205:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7198:12:11","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$1516_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":1741,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":1515,"src":"7198:22:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1742,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"7223:9:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7198:34:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1744,"nodeType":"ExpressionStatement","src":"7198:34:11"},{"eventCall":{"arguments":[{"id":1746,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"7264:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1747,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"7270:17:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1748,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"7289:9:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1745,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"7247:16:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7247:52:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1750,"nodeType":"EmitStatement","src":"7242:57:11"}]},"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"6940:114:11","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":1752,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"7068:13:11","nodeType":"FunctionDefinition","parameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"role","nameLocation":"7090:4:11","nodeType":"VariableDeclaration","scope":1752,"src":"7082:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1726,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7082:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1729,"mutability":"mutable","name":"adminRole","nameLocation":"7104:9:11","nodeType":"VariableDeclaration","scope":1752,"src":"7096:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7096:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7081:33:11"},"returnParameters":{"id":1731,"nodeType":"ParameterList","parameters":[],"src":"7132:0:11"},"scope":1816,"src":"7059:247:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1783,"nodeType":"Block","src":"7542:165:11","statements":[{"condition":{"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7556:23:11","subExpression":{"arguments":[{"id":1761,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"7565:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1762,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"7571:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1760,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1576,"src":"7557:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":1763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7557:22:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1782,"nodeType":"IfStatement","src":"7552:149:11","trueBody":{"id":1781,"nodeType":"Block","src":"7581:120:11","statements":[{"expression":{"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":1765,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"7595:6:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$1516_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":1767,"indexExpression":{"id":1766,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"7602:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7595:12:11","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$1516_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":1768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":1513,"src":"7595:20:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1770,"indexExpression":{"id":1769,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"7616:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7595:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":1771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7627:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7595:36:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1773,"nodeType":"ExpressionStatement","src":"7595:36:11"},{"eventCall":{"arguments":[{"id":1775,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"7662:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1776,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"7668:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1777,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"7677:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7677:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1774,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"7650:11:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7650:40:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1780,"nodeType":"EmitStatement","src":"7645:45:11"}]}}]},"documentation":{"id":1753,"nodeType":"StructuredDocumentation","src":"7312:157:11","text":" @dev Grants `role` to `account`.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":1784,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"7483:10:11","nodeType":"FunctionDefinition","parameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1755,"mutability":"mutable","name":"role","nameLocation":"7502:4:11","nodeType":"VariableDeclaration","scope":1784,"src":"7494:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1754,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7494:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1757,"mutability":"mutable","name":"account","nameLocation":"7516:7:11","nodeType":"VariableDeclaration","scope":1784,"src":"7508:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1756,"name":"address","nodeType":"ElementaryTypeName","src":"7508:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7493:31:11"},"returnParameters":{"id":1759,"nodeType":"ParameterList","parameters":[],"src":"7542:0:11"},"scope":1816,"src":"7474:233:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1814,"nodeType":"Block","src":"7947:165:11","statements":[{"condition":{"arguments":[{"id":1793,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"7969:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1794,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1789,"src":"7975:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1792,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1576,"src":"7961:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7961:22:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1813,"nodeType":"IfStatement","src":"7957:149:11","trueBody":{"id":1812,"nodeType":"Block","src":"7985:121:11","statements":[{"expression":{"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":1796,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"7999:6:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$1516_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":1798,"indexExpression":{"id":1797,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"8006:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7999:12:11","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$1516_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":1799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"members","nodeType":"MemberAccess","referencedDeclaration":1513,"src":"7999:20:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1801,"indexExpression":{"id":1800,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1789,"src":"8020:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7999:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":1802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8031:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"7999:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1804,"nodeType":"ExpressionStatement","src":"7999:37:11"},{"eventCall":{"arguments":[{"id":1806,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"8067:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1807,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1789,"src":"8073:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1808,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"8082:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8082:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1805,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1846,"src":"8055:11:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":1810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8055:40:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1811,"nodeType":"EmitStatement","src":"8050:45:11"}]}}]},"documentation":{"id":1785,"nodeType":"StructuredDocumentation","src":"7713:160:11","text":" @dev Revokes `role` from `account`.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":1815,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"7887:11:11","nodeType":"FunctionDefinition","parameters":{"id":1790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1787,"mutability":"mutable","name":"role","nameLocation":"7907:4:11","nodeType":"VariableDeclaration","scope":1815,"src":"7899:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1786,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7899:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1789,"mutability":"mutable","name":"account","nameLocation":"7921:7:11","nodeType":"VariableDeclaration","scope":1815,"src":"7913:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1788,"name":"address","nodeType":"ElementaryTypeName","src":"7913:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7898:31:11"},"returnParameters":{"id":1791,"nodeType":"ParameterList","parameters":[],"src":"7947:0:11"},"scope":1816,"src":"7878:234:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1817,"src":"1806:6308:11","usedErrors":[]}],"src":"108:8007:11"},"id":11},"@openzeppelin/contracts/access/IAccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[1889]},"id":1890,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1818,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"94:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":1819,"nodeType":"StructuredDocumentation","src":"119:89:12","text":" @dev External interface of AccessControl declared to support ERC165 detection."},"fullyImplemented":false,"id":1889,"linearizedBaseContracts":[1889],"name":"IAccessControl","nameLocation":"219:14:12","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1820,"nodeType":"StructuredDocumentation","src":"240:292:12","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":1828,"name":"RoleAdminChanged","nameLocation":"543:16:12","nodeType":"EventDefinition","parameters":{"id":1827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1822,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"576:4:12","nodeType":"VariableDeclaration","scope":1828,"src":"560:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1821,"name":"bytes32","nodeType":"ElementaryTypeName","src":"560:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1824,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"598:17:12","nodeType":"VariableDeclaration","scope":1828,"src":"582:33:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1823,"name":"bytes32","nodeType":"ElementaryTypeName","src":"582:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1826,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"633:12:12","nodeType":"VariableDeclaration","scope":1828,"src":"617:28:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"617:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"559:87:12"},"src":"537:110:12"},{"anonymous":false,"documentation":{"id":1829,"nodeType":"StructuredDocumentation","src":"653:212:12","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":1837,"name":"RoleGranted","nameLocation":"876:11:12","nodeType":"EventDefinition","parameters":{"id":1836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1831,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"904:4:12","nodeType":"VariableDeclaration","scope":1837,"src":"888:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1830,"name":"bytes32","nodeType":"ElementaryTypeName","src":"888:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1833,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"926:7:12","nodeType":"VariableDeclaration","scope":1837,"src":"910:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1832,"name":"address","nodeType":"ElementaryTypeName","src":"910:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1835,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"951:6:12","nodeType":"VariableDeclaration","scope":1837,"src":"935:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1834,"name":"address","nodeType":"ElementaryTypeName","src":"935:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"887:71:12"},"src":"870:89:12"},{"anonymous":false,"documentation":{"id":1838,"nodeType":"StructuredDocumentation","src":"965:275:12","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":1846,"name":"RoleRevoked","nameLocation":"1251:11:12","nodeType":"EventDefinition","parameters":{"id":1845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1840,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1279:4:12","nodeType":"VariableDeclaration","scope":1846,"src":"1263:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1839,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1263:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1842,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1301:7:12","nodeType":"VariableDeclaration","scope":1846,"src":"1285:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1841,"name":"address","nodeType":"ElementaryTypeName","src":"1285:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1844,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1326:6:12","nodeType":"VariableDeclaration","scope":1846,"src":"1310:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1843,"name":"address","nodeType":"ElementaryTypeName","src":"1310:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1262:71:12"},"src":"1245:89:12"},{"documentation":{"id":1847,"nodeType":"StructuredDocumentation","src":"1340:76:12","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":1856,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1430:7:12","nodeType":"FunctionDefinition","parameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1849,"mutability":"mutable","name":"role","nameLocation":"1446:4:12","nodeType":"VariableDeclaration","scope":1856,"src":"1438:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1848,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1438:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1851,"mutability":"mutable","name":"account","nameLocation":"1460:7:12","nodeType":"VariableDeclaration","scope":1856,"src":"1452:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1850,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1437:31:12"},"returnParameters":{"id":1855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1856,"src":"1492:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1853,"name":"bool","nodeType":"ElementaryTypeName","src":"1492:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1491:6:12"},"scope":1889,"src":"1421:77:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1857,"nodeType":"StructuredDocumentation","src":"1504:184:12","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":1864,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"1702:12:12","nodeType":"FunctionDefinition","parameters":{"id":1860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1859,"mutability":"mutable","name":"role","nameLocation":"1723:4:12","nodeType":"VariableDeclaration","scope":1864,"src":"1715:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1715:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1714:14:12"},"returnParameters":{"id":1863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1862,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1864,"src":"1752:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1861,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1752:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1751:9:12"},"scope":1889,"src":"1693:68:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1865,"nodeType":"StructuredDocumentation","src":"1767:239:12","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":1872,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2020:9:12","nodeType":"FunctionDefinition","parameters":{"id":1870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1867,"mutability":"mutable","name":"role","nameLocation":"2038:4:12","nodeType":"VariableDeclaration","scope":1872,"src":"2030:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2030:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1869,"mutability":"mutable","name":"account","nameLocation":"2052:7:12","nodeType":"VariableDeclaration","scope":1872,"src":"2044:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1868,"name":"address","nodeType":"ElementaryTypeName","src":"2044:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2029:31:12"},"returnParameters":{"id":1871,"nodeType":"ParameterList","parameters":[],"src":"2069:0:12"},"scope":1889,"src":"2011:59:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1873,"nodeType":"StructuredDocumentation","src":"2076:223:12","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":1880,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2313:10:12","nodeType":"FunctionDefinition","parameters":{"id":1878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1875,"mutability":"mutable","name":"role","nameLocation":"2332:4:12","nodeType":"VariableDeclaration","scope":1880,"src":"2324:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1874,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2324:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1877,"mutability":"mutable","name":"account","nameLocation":"2346:7:12","nodeType":"VariableDeclaration","scope":1880,"src":"2338:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1876,"name":"address","nodeType":"ElementaryTypeName","src":"2338:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2323:31:12"},"returnParameters":{"id":1879,"nodeType":"ParameterList","parameters":[],"src":"2363:0:12"},"scope":1889,"src":"2304:60:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1881,"nodeType":"StructuredDocumentation","src":"2370:480:12","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":1888,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"2864:12:12","nodeType":"FunctionDefinition","parameters":{"id":1886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1883,"mutability":"mutable","name":"role","nameLocation":"2885:4:12","nodeType":"VariableDeclaration","scope":1888,"src":"2877:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1882,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2877:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1885,"mutability":"mutable","name":"account","nameLocation":"2899:7:12","nodeType":"VariableDeclaration","scope":1888,"src":"2891:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1884,"name":"address","nodeType":"ElementaryTypeName","src":"2891:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2876:31:12"},"returnParameters":{"id":1887,"nodeType":"ParameterList","parameters":[],"src":"2916:0:12"},"scope":1889,"src":"2855:62:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1890,"src":"209:2710:12","usedErrors":[]}],"src":"94:2826:12"},"id":12},"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[2102],"Ownable":[2002]},"id":2003,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1891,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:13"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":1892,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2003,"sourceUnit":2103,"src":"127:30:13","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1894,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":2102,"src":"683:7:13"},"id":1895,"nodeType":"InheritanceSpecifier","src":"683:7:13"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1893,"nodeType":"StructuredDocumentation","src":"159:494:13","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":2002,"linearizedBaseContracts":[2002,2102],"name":"Ownable","nameLocation":"672:7:13","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1897,"mutability":"mutable","name":"_owner","nameLocation":"713:6:13","nodeType":"VariableDeclaration","scope":2002,"src":"697:22:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1896,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":1903,"name":"OwnershipTransferred","nameLocation":"732:20:13","nodeType":"EventDefinition","parameters":{"id":1902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1899,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"769:13:13","nodeType":"VariableDeclaration","scope":1903,"src":"753:29:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1898,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1901,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"800:8:13","nodeType":"VariableDeclaration","scope":1903,"src":"784:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1900,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"752:57:13"},"src":"726:84:13"},{"body":{"id":1912,"nodeType":"Block","src":"926:49:13","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1908,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"955:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"955:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1907,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"936:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"936:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1911,"nodeType":"ExpressionStatement","src":"936:32:13"}]},"documentation":{"id":1904,"nodeType":"StructuredDocumentation","src":"816:91:13","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":1913,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1905,"nodeType":"ParameterList","parameters":[],"src":"923:2:13"},"returnParameters":{"id":1906,"nodeType":"ParameterList","parameters":[],"src":"926:0:13"},"scope":2002,"src":"912:63:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1920,"nodeType":"Block","src":"1084:41:13","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1916,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1944,"src":"1094:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1918,"nodeType":"ExpressionStatement","src":"1094:13:13"},{"id":1919,"nodeType":"PlaceholderStatement","src":"1117:1:13"}]},"documentation":{"id":1914,"nodeType":"StructuredDocumentation","src":"981:77:13","text":" @dev Throws if called by any account other than the owner."},"id":1921,"name":"onlyOwner","nameLocation":"1072:9:13","nodeType":"ModifierDefinition","parameters":{"id":1915,"nodeType":"ParameterList","parameters":[],"src":"1081:2:13"},"src":"1063:62:13","virtual":false,"visibility":"internal"},{"body":{"id":1929,"nodeType":"Block","src":"1256:30:13","statements":[{"expression":{"id":1927,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"1273:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1926,"id":1928,"nodeType":"Return","src":"1266:13:13"}]},"documentation":{"id":1922,"nodeType":"StructuredDocumentation","src":"1131:65:13","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":1930,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1210:5:13","nodeType":"FunctionDefinition","parameters":{"id":1923,"nodeType":"ParameterList","parameters":[],"src":"1215:2:13"},"returnParameters":{"id":1926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1930,"src":"1247:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1924,"name":"address","nodeType":"ElementaryTypeName","src":"1247:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1246:9:13"},"scope":2002,"src":"1201:85:13","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1943,"nodeType":"Block","src":"1404:85:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1935,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1930,"src":"1422:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1422:7:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1937,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"1433:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1433:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1422:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":1940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1447:34:13","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":1934,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1414:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1414:68:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1942,"nodeType":"ExpressionStatement","src":"1414:68:13"}]},"documentation":{"id":1931,"nodeType":"StructuredDocumentation","src":"1292:62:13","text":" @dev Throws if the sender is not the owner."},"id":1944,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1368:11:13","nodeType":"FunctionDefinition","parameters":{"id":1932,"nodeType":"ParameterList","parameters":[],"src":"1379:2:13"},"returnParameters":{"id":1933,"nodeType":"ParameterList","parameters":[],"src":"1404:0:13"},"scope":2002,"src":"1359:130:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1957,"nodeType":"Block","src":"1885:47:13","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1922:1:13","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":1952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1914:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1951,"name":"address","nodeType":"ElementaryTypeName","src":"1914:7:13","typeDescriptions":{}}},"id":1954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1914:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1950,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"1895:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1895:30:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1956,"nodeType":"ExpressionStatement","src":"1895:30:13"}]},"documentation":{"id":1945,"nodeType":"StructuredDocumentation","src":"1495:331:13","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":1958,"implemented":true,"kind":"function","modifiers":[{"id":1948,"kind":"modifierInvocation","modifierName":{"id":1947,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"1875:9:13"},"nodeType":"ModifierInvocation","src":"1875:9:13"}],"name":"renounceOwnership","nameLocation":"1840:17:13","nodeType":"FunctionDefinition","parameters":{"id":1946,"nodeType":"ParameterList","parameters":[],"src":"1857:2:13"},"returnParameters":{"id":1949,"nodeType":"ParameterList","parameters":[],"src":"1885:0:13"},"scope":2002,"src":"1831:101:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1980,"nodeType":"Block","src":"2151:128:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1967,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"2169:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2189:1:13","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":1969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2181:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1968,"name":"address","nodeType":"ElementaryTypeName","src":"2181:7:13","typeDescriptions":{}}},"id":1971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2181:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2169:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":1973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2193:40:13","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":1966,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2161:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2161:73:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1975,"nodeType":"ExpressionStatement","src":"2161:73:13"},{"expression":{"arguments":[{"id":1977,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"2263:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1976,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2001,"src":"2244:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2244:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1979,"nodeType":"ExpressionStatement","src":"2244:28:13"}]},"documentation":{"id":1959,"nodeType":"StructuredDocumentation","src":"1938:138:13","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":1981,"implemented":true,"kind":"function","modifiers":[{"id":1964,"kind":"modifierInvocation","modifierName":{"id":1963,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2141:9:13"},"nodeType":"ModifierInvocation","src":"2141:9:13"}],"name":"transferOwnership","nameLocation":"2090:17:13","nodeType":"FunctionDefinition","parameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"newOwner","nameLocation":"2116:8:13","nodeType":"VariableDeclaration","scope":1981,"src":"2108:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1960,"name":"address","nodeType":"ElementaryTypeName","src":"2108:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2107:18:13"},"returnParameters":{"id":1965,"nodeType":"ParameterList","parameters":[],"src":"2151:0:13"},"scope":2002,"src":"2081:198:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2000,"nodeType":"Block","src":"2496:124:13","statements":[{"assignments":[1988],"declarations":[{"constant":false,"id":1988,"mutability":"mutable","name":"oldOwner","nameLocation":"2514:8:13","nodeType":"VariableDeclaration","scope":2000,"src":"2506:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1987,"name":"address","nodeType":"ElementaryTypeName","src":"2506:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1990,"initialValue":{"id":1989,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"2525:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2506:25:13"},{"expression":{"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1991,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"2541:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1992,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"2550:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2541:17:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1994,"nodeType":"ExpressionStatement","src":"2541:17:13"},{"eventCall":{"arguments":[{"id":1996,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1988,"src":"2594:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1997,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"2604:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1995,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1903,"src":"2573:20:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2573:40:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1999,"nodeType":"EmitStatement","src":"2568:45:13"}]},"documentation":{"id":1982,"nodeType":"StructuredDocumentation","src":"2285:143:13","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":2001,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2442:18:13","nodeType":"FunctionDefinition","parameters":{"id":1985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"mutability":"mutable","name":"newOwner","nameLocation":"2469:8:13","nodeType":"VariableDeclaration","scope":2001,"src":"2461:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1983,"name":"address","nodeType":"ElementaryTypeName","src":"2461:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2460:18:13"},"returnParameters":{"id":1986,"nodeType":"ParameterList","parameters":[],"src":"2496:0:13"},"scope":2002,"src":"2433:187:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":2003,"src":"654:1968:13","usedErrors":[]}],"src":"102:2521:13"},"id":13},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[2080]},"id":2081,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2004,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:14"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2005,"nodeType":"StructuredDocumentation","src":"131:70:14","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2080,"linearizedBaseContracts":[2080],"name":"IERC20","nameLocation":"212:6:14","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2006,"nodeType":"StructuredDocumentation","src":"225:158:14","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":2014,"name":"Transfer","nameLocation":"394:8:14","nodeType":"EventDefinition","parameters":{"id":2013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2008,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:14","nodeType":"VariableDeclaration","scope":2014,"src":"403:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2007,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2010,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:14","nodeType":"VariableDeclaration","scope":2014,"src":"425:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2009,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2012,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:14","nodeType":"VariableDeclaration","scope":2014,"src":"445:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2011,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:14"},"src":"388:72:14"},{"anonymous":false,"documentation":{"id":2015,"nodeType":"StructuredDocumentation","src":"466:148:14","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":2023,"name":"Approval","nameLocation":"625:8:14","nodeType":"EventDefinition","parameters":{"id":2022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2017,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:14","nodeType":"VariableDeclaration","scope":2023,"src":"634:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2016,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2019,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:14","nodeType":"VariableDeclaration","scope":2023,"src":"657:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2018,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2021,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:14","nodeType":"VariableDeclaration","scope":2023,"src":"682:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2020,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:14"},"src":"619:78:14"},{"documentation":{"id":2024,"nodeType":"StructuredDocumentation","src":"703:66:14","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":2029,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:14","nodeType":"FunctionDefinition","parameters":{"id":2025,"nodeType":"ParameterList","parameters":[],"src":"794:2:14"},"returnParameters":{"id":2028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2027,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2029,"src":"820:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2026,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:14"},"scope":2080,"src":"774:55:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2030,"nodeType":"StructuredDocumentation","src":"835:72:14","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":2037,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:14","nodeType":"FunctionDefinition","parameters":{"id":2033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2032,"mutability":"mutable","name":"account","nameLocation":"939:7:14","nodeType":"VariableDeclaration","scope":2037,"src":"931:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2031,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:14"},"returnParameters":{"id":2036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2035,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2037,"src":"971:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2034,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:14"},"scope":2080,"src":"912:68:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2038,"nodeType":"StructuredDocumentation","src":"986:202:14","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":2047,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:14","nodeType":"FunctionDefinition","parameters":{"id":2043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2040,"mutability":"mutable","name":"to","nameLocation":"1219:2:14","nodeType":"VariableDeclaration","scope":2047,"src":"1211:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2039,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2042,"mutability":"mutable","name":"amount","nameLocation":"1231:6:14","nodeType":"VariableDeclaration","scope":2047,"src":"1223:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2041,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:14"},"returnParameters":{"id":2046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2047,"src":"1257:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2044,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:14"},"scope":2080,"src":"1193:70:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2048,"nodeType":"StructuredDocumentation","src":"1269:264:14","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":2057,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:14","nodeType":"FunctionDefinition","parameters":{"id":2053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2050,"mutability":"mutable","name":"owner","nameLocation":"1565:5:14","nodeType":"VariableDeclaration","scope":2057,"src":"1557:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2049,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2052,"mutability":"mutable","name":"spender","nameLocation":"1580:7:14","nodeType":"VariableDeclaration","scope":2057,"src":"1572:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2051,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:14"},"returnParameters":{"id":2056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2057,"src":"1612:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2054,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:14"},"scope":2080,"src":"1538:83:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2058,"nodeType":"StructuredDocumentation","src":"1627:642:14","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":2067,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:14","nodeType":"FunctionDefinition","parameters":{"id":2063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2060,"mutability":"mutable","name":"spender","nameLocation":"2299:7:14","nodeType":"VariableDeclaration","scope":2067,"src":"2291:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2059,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"amount","nameLocation":"2316:6:14","nodeType":"VariableDeclaration","scope":2067,"src":"2308:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2061,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:14"},"returnParameters":{"id":2066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2067,"src":"2342:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2064,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:14"},"scope":2080,"src":"2274:74:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2068,"nodeType":"StructuredDocumentation","src":"2354:287:14","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":2079,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:14","nodeType":"FunctionDefinition","parameters":{"id":2075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2070,"mutability":"mutable","name":"from","nameLocation":"2685:4:14","nodeType":"VariableDeclaration","scope":2079,"src":"2677:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2069,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2072,"mutability":"mutable","name":"to","nameLocation":"2707:2:14","nodeType":"VariableDeclaration","scope":2079,"src":"2699:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2071,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2074,"mutability":"mutable","name":"amount","nameLocation":"2727:6:14","nodeType":"VariableDeclaration","scope":2079,"src":"2719:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:14"},"returnParameters":{"id":2078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2077,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2079,"src":"2758:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2076,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:14"},"scope":2080,"src":"2646:118:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2081,"src":"202:2564:14","usedErrors":[]}],"src":"106:2661:14"},"id":14},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[2102]},"id":2103,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2082,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:15"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2083,"nodeType":"StructuredDocumentation","src":"111:496:15","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":2102,"linearizedBaseContracts":[2102],"name":"Context","nameLocation":"626:7:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":2091,"nodeType":"Block","src":"702:34:15","statements":[{"expression":{"expression":{"id":2088,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"719:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2087,"id":2090,"nodeType":"Return","src":"712:17:15"}]},"id":2092,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:15","nodeType":"FunctionDefinition","parameters":{"id":2084,"nodeType":"ParameterList","parameters":[],"src":"659:2:15"},"returnParameters":{"id":2087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2086,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2092,"src":"693:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2085,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:15"},"scope":2102,"src":"640:96:15","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2100,"nodeType":"Block","src":"809:32:15","statements":[{"expression":{"expression":{"id":2097,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"826:8:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2096,"id":2099,"nodeType":"Return","src":"819:15:15"}]},"id":2101,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:15","nodeType":"FunctionDefinition","parameters":{"id":2093,"nodeType":"ParameterList","parameters":[],"src":"759:2:15"},"returnParameters":{"id":2096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2101,"src":"793:14:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2094,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:15"},"scope":2102,"src":"742:99:15","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2103,"src":"608:235:15","usedErrors":[]}],"src":"86:758:15"},"id":15},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Strings":[2328]},"id":2329,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2104,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:16"},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":2105,"nodeType":"StructuredDocumentation","src":"126:34:16","text":" @dev String operations."},"fullyImplemented":true,"id":2328,"linearizedBaseContracts":[2328],"name":"Strings","nameLocation":"169:7:16","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2108,"mutability":"constant","name":"_HEX_SYMBOLS","nameLocation":"208:12:16","nodeType":"VariableDeclaration","scope":2328,"src":"183:58:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":2106,"name":"bytes16","nodeType":"ElementaryTypeName","src":"183:7:16","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":2107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"223:18:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":2111,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"270:15:16","nodeType":"VariableDeclaration","scope":2328,"src":"247:43:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2109,"name":"uint8","nodeType":"ElementaryTypeName","src":"247:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":2110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"288:2:16","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":2189,"nodeType":"Block","src":"463:632:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2119,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"665:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"674:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"665:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2125,"nodeType":"IfStatement","src":"661:51:16","trueBody":{"id":2124,"nodeType":"Block","src":"677:35:16","statements":[{"expression":{"hexValue":"30","id":2122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"698:3:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"functionReturnParameters":2118,"id":2123,"nodeType":"Return","src":"691:10:16"}]}},{"assignments":[2127],"declarations":[{"constant":false,"id":2127,"mutability":"mutable","name":"temp","nameLocation":"729:4:16","nodeType":"VariableDeclaration","scope":2189,"src":"721:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2126,"name":"uint256","nodeType":"ElementaryTypeName","src":"721:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2129,"initialValue":{"id":2128,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"736:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"721:20:16"},{"assignments":[2131],"declarations":[{"constant":false,"id":2131,"mutability":"mutable","name":"digits","nameLocation":"759:6:16","nodeType":"VariableDeclaration","scope":2189,"src":"751:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2130,"name":"uint256","nodeType":"ElementaryTypeName","src":"751:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2132,"nodeType":"VariableDeclarationStatement","src":"751:14:16"},{"body":{"id":2143,"nodeType":"Block","src":"793:57:16","statements":[{"expression":{"id":2137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"807:8:16","subExpression":{"id":2136,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"807:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2138,"nodeType":"ExpressionStatement","src":"807:8:16"},{"expression":{"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2139,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2127,"src":"829:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":2140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"837:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"829:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2142,"nodeType":"ExpressionStatement","src":"829:10:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2133,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2127,"src":"782:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"790:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"782:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2144,"nodeType":"WhileStatement","src":"775:75:16"},{"assignments":[2146],"declarations":[{"constant":false,"id":2146,"mutability":"mutable","name":"buffer","nameLocation":"872:6:16","nodeType":"VariableDeclaration","scope":2189,"src":"859:19:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2145,"name":"bytes","nodeType":"ElementaryTypeName","src":"859:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2151,"initialValue":{"arguments":[{"id":2149,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"891:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"881:9:16","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2147,"name":"bytes","nodeType":"ElementaryTypeName","src":"885:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"881:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"859:39:16"},{"body":{"id":2182,"nodeType":"Block","src":"927:131:16","statements":[{"expression":{"id":2157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2155,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"941:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"941:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2158,"nodeType":"ExpressionStatement","src":"941:11:16"},{"expression":{"id":2176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2159,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"966:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2161,"indexExpression":{"id":2160,"name":"digits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"973:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"966:14:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3438","id":2166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"996:2:16","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2169,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"1009:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"3130","id":2170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1017:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1009:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1001:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2167,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:16","typeDescriptions":{}}},"id":2172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1001:19:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"996:24:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"990:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2164,"name":"uint8","nodeType":"ElementaryTypeName","src":"990:5:16","typeDescriptions":{}}},"id":2174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"990:31:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"983:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2162,"name":"bytes1","nodeType":"ElementaryTypeName","src":"983:6:16","typeDescriptions":{}}},"id":2175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"983:39:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"966:56:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2177,"nodeType":"ExpressionStatement","src":"966:56:16"},{"expression":{"id":2180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2178,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"1036:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":2179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1045:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1036:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2181,"nodeType":"ExpressionStatement","src":"1036:11:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2152,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"915:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"924:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"915:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2183,"nodeType":"WhileStatement","src":"908:150:16"},{"expression":{"arguments":[{"id":2186,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"1081:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1074:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2184,"name":"string","nodeType":"ElementaryTypeName","src":"1074:6:16","typeDescriptions":{}}},"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1074:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2118,"id":2188,"nodeType":"Return","src":"1067:21:16"}]},"documentation":{"id":2112,"nodeType":"StructuredDocumentation","src":"297:90:16","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":2190,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"401:8:16","nodeType":"FunctionDefinition","parameters":{"id":2115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2114,"mutability":"mutable","name":"value","nameLocation":"418:5:16","nodeType":"VariableDeclaration","scope":2190,"src":"410:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2113,"name":"uint256","nodeType":"ElementaryTypeName","src":"410:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"409:15:16"},"returnParameters":{"id":2118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2190,"src":"448:13:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2116,"name":"string","nodeType":"ElementaryTypeName","src":"448:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"447:15:16"},"scope":2328,"src":"392:703:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2230,"nodeType":"Block","src":"1274:255:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2198,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2193,"src":"1288:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1288:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2204,"nodeType":"IfStatement","src":"1284:54:16","trueBody":{"id":2203,"nodeType":"Block","src":"1300:38:16","statements":[{"expression":{"hexValue":"30783030","id":2201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1321:6:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4","typeString":"literal_string \"0x00\""},"value":"0x00"},"functionReturnParameters":2197,"id":2202,"nodeType":"Return","src":"1314:13:16"}]}},{"assignments":[2206],"declarations":[{"constant":false,"id":2206,"mutability":"mutable","name":"temp","nameLocation":"1355:4:16","nodeType":"VariableDeclaration","scope":2230,"src":"1347:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2205,"name":"uint256","nodeType":"ElementaryTypeName","src":"1347:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2208,"initialValue":{"id":2207,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2193,"src":"1362:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1347:20:16"},{"assignments":[2210],"declarations":[{"constant":false,"id":2210,"mutability":"mutable","name":"length","nameLocation":"1385:6:16","nodeType":"VariableDeclaration","scope":2230,"src":"1377:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"1377:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2212,"initialValue":{"hexValue":"30","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1394:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1377:18:16"},{"body":{"id":2223,"nodeType":"Block","src":"1423:57:16","statements":[{"expression":{"id":2217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1437:8:16","subExpression":{"id":2216,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"1437:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2218,"nodeType":"ExpressionStatement","src":"1437:8:16"},{"expression":{"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2219,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"1459:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1468:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1459:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2222,"nodeType":"ExpressionStatement","src":"1459:10:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2213,"name":"temp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"1412:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1420:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1412:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2224,"nodeType":"WhileStatement","src":"1405:75:16"},{"expression":{"arguments":[{"id":2226,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2193,"src":"1508:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2227,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"1515:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2225,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2231,2307,2327],"referencedDeclaration":2307,"src":"1496:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1496:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2197,"id":2229,"nodeType":"Return","src":"1489:33:16"}]},"documentation":{"id":2191,"nodeType":"StructuredDocumentation","src":"1101:94:16","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":2231,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1209:11:16","nodeType":"FunctionDefinition","parameters":{"id":2194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2193,"mutability":"mutable","name":"value","nameLocation":"1229:5:16","nodeType":"VariableDeclaration","scope":2231,"src":"1221:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2192,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:15:16"},"returnParameters":{"id":2197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2196,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2231,"src":"1259:13:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2195,"name":"string","nodeType":"ElementaryTypeName","src":"1259:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1258:15:16"},"scope":2328,"src":"1200:329:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2306,"nodeType":"Block","src":"1742:351:16","statements":[{"assignments":[2242],"declarations":[{"constant":false,"id":2242,"mutability":"mutable","name":"buffer","nameLocation":"1765:6:16","nodeType":"VariableDeclaration","scope":2306,"src":"1752:19:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2241,"name":"bytes","nodeType":"ElementaryTypeName","src":"1752:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2251,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1784:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2246,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"1788:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1784:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":2248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1797:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1784:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1774:9:16","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2243,"name":"bytes","nodeType":"ElementaryTypeName","src":"1778:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1774:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1752:47:16"},{"expression":{"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2252,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"1809:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2254,"indexExpression":{"hexValue":"30","id":2253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1816:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1809:9:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1821:3:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1809:15:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2257,"nodeType":"ExpressionStatement","src":"1809:15:16"},{"expression":{"id":2262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2258,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"1834:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2260,"indexExpression":{"hexValue":"31","id":2259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1841:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1834:9:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1846:3:16","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"1834:15:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2263,"nodeType":"ExpressionStatement","src":"1834:15:16"},{"body":{"id":2292,"nodeType":"Block","src":"1904:87:16","statements":[{"expression":{"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2278,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"1918:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2280,"indexExpression":{"id":2279,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"1925:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1918:9:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2281,"name":"_HEX_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"1930:12:16","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":2285,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2282,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"1943:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":2283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1951:3:16","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"1943:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1930:25:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1918:37:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2287,"nodeType":"ExpressionStatement","src":"1918:37:16"},{"expression":{"id":2290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2288,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"1969:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1979:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1969:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2291,"nodeType":"ExpressionStatement","src":"1969:11:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2272,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"1892:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":2273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1896:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1892:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2293,"initializationExpression":{"assignments":[2265],"declarations":[{"constant":false,"id":2265,"mutability":"mutable","name":"i","nameLocation":"1872:1:16","nodeType":"VariableDeclaration","scope":2293,"src":"1864:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2264,"name":"uint256","nodeType":"ElementaryTypeName","src":"1864:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2271,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1876:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2267,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"1880:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1876:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1889:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1876:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1864:26:16"},"loopExpression":{"expression":{"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"1899:3:16","subExpression":{"id":2275,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"1901:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2277,"nodeType":"ExpressionStatement","src":"1899:3:16"},"nodeType":"ForStatement","src":"1859:132:16"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2295,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"2008:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2017:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2008:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":2298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2020:34:16","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":2294,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2000:7:16","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2000:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2300,"nodeType":"ExpressionStatement","src":"2000:55:16"},{"expression":{"arguments":[{"id":2303,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"2079:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2072:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2301,"name":"string","nodeType":"ElementaryTypeName","src":"2072:6:16","typeDescriptions":{}}},"id":2304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2072:14:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2240,"id":2305,"nodeType":"Return","src":"2065:21:16"}]},"documentation":{"id":2232,"nodeType":"StructuredDocumentation","src":"1535:112:16","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":2307,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1661:11:16","nodeType":"FunctionDefinition","parameters":{"id":2237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2234,"mutability":"mutable","name":"value","nameLocation":"1681:5:16","nodeType":"VariableDeclaration","scope":2307,"src":"1673:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2233,"name":"uint256","nodeType":"ElementaryTypeName","src":"1673:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2236,"mutability":"mutable","name":"length","nameLocation":"1696:6:16","nodeType":"VariableDeclaration","scope":2307,"src":"1688:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2235,"name":"uint256","nodeType":"ElementaryTypeName","src":"1688:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1672:31:16"},"returnParameters":{"id":2240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2307,"src":"1727:13:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2238,"name":"string","nodeType":"ElementaryTypeName","src":"1727:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1726:15:16"},"scope":2328,"src":"1652:441:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2326,"nodeType":"Block","src":"2318:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":2320,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"2363:4:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2355:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2318,"name":"uint160","nodeType":"ElementaryTypeName","src":"2355:7:16","typeDescriptions":{}}},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2355:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2347:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2316,"name":"uint256","nodeType":"ElementaryTypeName","src":"2347:7:16","typeDescriptions":{}}},"id":2322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2347:22:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2323,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"2371:15:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2315,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2231,2307,2327],"referencedDeclaration":2307,"src":"2335:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2335:52:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2314,"id":2325,"nodeType":"Return","src":"2328:59:16"}]},"documentation":{"id":2308,"nodeType":"StructuredDocumentation","src":"2099:141:16","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":2327,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2254:11:16","nodeType":"FunctionDefinition","parameters":{"id":2311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2310,"mutability":"mutable","name":"addr","nameLocation":"2274:4:16","nodeType":"VariableDeclaration","scope":2327,"src":"2266:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2309,"name":"address","nodeType":"ElementaryTypeName","src":"2266:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2265:14:16"},"returnParameters":{"id":2314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2327,"src":"2303:13:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2312,"name":"string","nodeType":"ElementaryTypeName","src":"2303:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2302:15:16"},"scope":2328,"src":"2245:149:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2329,"src":"161:2235:16","usedErrors":[]}],"src":"101:2296:16"},"id":16},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[2352],"IERC165":[2364]},"id":2353,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2330,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:17"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":2331,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2353,"sourceUnit":2365,"src":"124:23:17","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2333,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":2364,"src":"754:7:17"},"id":2334,"nodeType":"InheritanceSpecifier","src":"754:7:17"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":2332,"nodeType":"StructuredDocumentation","src":"149:576:17","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":2352,"linearizedBaseContracts":[2352,2364],"name":"ERC165","nameLocation":"744:6:17","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2363],"body":{"id":2350,"nodeType":"Block","src":"920:64:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2343,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"937:11:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2345,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"957:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2364_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2364_$","typeString":"type(contract IERC165)"}],"id":2344,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"952:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"952:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2364","typeString":"type(contract IERC165)"}},"id":2347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2342,"id":2349,"nodeType":"Return","src":"930:47:17"}]},"documentation":{"id":2335,"nodeType":"StructuredDocumentation","src":"768:56:17","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2351,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:17","nodeType":"FunctionDefinition","overrides":{"id":2339,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:17"},"parameters":{"id":2338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2337,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:17","nodeType":"VariableDeclaration","scope":2351,"src":"856:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2336,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:17"},"returnParameters":{"id":2342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2341,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2351,"src":"914:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2340,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:17"},"scope":2352,"src":"829:155:17","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":2353,"src":"726:260:17","usedErrors":[]}],"src":"99:888:17"},"id":17},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2364]},"id":2365,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2354,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:18"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2355,"nodeType":"StructuredDocumentation","src":"125:279:18","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":2364,"linearizedBaseContracts":[2364],"name":"IERC165","nameLocation":"415:7:18","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2356,"nodeType":"StructuredDocumentation","src":"429:340:18","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":2363,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:18","nodeType":"FunctionDefinition","parameters":{"id":2359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2358,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:18","nodeType":"VariableDeclaration","scope":2363,"src":"801:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2357,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:18","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:18"},"returnParameters":{"id":2362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2363,"src":"844:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2360,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:18"},"scope":2364,"src":"774:76:18","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2365,"src":"405:447:18","usedErrors":[]}],"src":"100:753:18"},"id":18},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[2868]},"id":2869,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2366,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:19"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":2367,"nodeType":"StructuredDocumentation","src":"128:73:19","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2868,"linearizedBaseContracts":[2868],"name":"Math","nameLocation":"210:4:19","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":2371,"members":[{"id":2368,"name":"Down","nameLocation":"245:4:19","nodeType":"EnumValue","src":"245:4:19"},{"id":2369,"name":"Up","nameLocation":"287:2:19","nodeType":"EnumValue","src":"287:2:19"},{"id":2370,"name":"Zero","nameLocation":"318:4:19","nodeType":"EnumValue","src":"318:4:19"}],"name":"Rounding","nameLocation":"226:8:19","nodeType":"EnumDefinition","src":"221:122:19"},{"body":{"id":2388,"nodeType":"Block","src":"480:38:19","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2381,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"497:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2382,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2376,"src":"502:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:6:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2385,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2376,"src":"510:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:14:19","trueExpression":{"id":2384,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2374,"src":"506:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2380,"id":2387,"nodeType":"Return","src":"490:21:19"}]},"documentation":{"id":2372,"nodeType":"StructuredDocumentation","src":"349:59:19","text":" @dev Returns the largest of two numbers."},"id":2389,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:19","nodeType":"FunctionDefinition","parameters":{"id":2377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2374,"mutability":"mutable","name":"a","nameLocation":"434:1:19","nodeType":"VariableDeclaration","scope":2389,"src":"426:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2373,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2376,"mutability":"mutable","name":"b","nameLocation":"445:1:19","nodeType":"VariableDeclaration","scope":2389,"src":"437:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2375,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:19"},"returnParameters":{"id":2380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2379,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2389,"src":"471:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2378,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:19"},"scope":2868,"src":"413:105:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2406,"nodeType":"Block","src":"656:37:19","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2399,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2392,"src":"673:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2400,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2394,"src":"677:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"673:5:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2403,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2394,"src":"685:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"673:13:19","trueExpression":{"id":2402,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2392,"src":"681:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2398,"id":2405,"nodeType":"Return","src":"666:20:19"}]},"documentation":{"id":2390,"nodeType":"StructuredDocumentation","src":"524:60:19","text":" @dev Returns the smallest of two numbers."},"id":2407,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"598:3:19","nodeType":"FunctionDefinition","parameters":{"id":2395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2392,"mutability":"mutable","name":"a","nameLocation":"610:1:19","nodeType":"VariableDeclaration","scope":2407,"src":"602:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2391,"name":"uint256","nodeType":"ElementaryTypeName","src":"602:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2394,"mutability":"mutable","name":"b","nameLocation":"621:1:19","nodeType":"VariableDeclaration","scope":2407,"src":"613:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2393,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"601:22:19"},"returnParameters":{"id":2398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2407,"src":"647:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2396,"name":"uint256","nodeType":"ElementaryTypeName","src":"647:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"646:9:19"},"scope":2868,"src":"589:104:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2429,"nodeType":"Block","src":"877:82:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2417,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2410,"src":"932:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2418,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"936:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"932:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2420,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"931:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2421,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2410,"src":"942:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2422,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"946:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"942:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"941:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":2425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"941:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2416,"id":2428,"nodeType":"Return","src":"924:28:19"}]},"documentation":{"id":2408,"nodeType":"StructuredDocumentation","src":"699:102:19","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":2430,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"815:7:19","nodeType":"FunctionDefinition","parameters":{"id":2413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2410,"mutability":"mutable","name":"a","nameLocation":"831:1:19","nodeType":"VariableDeclaration","scope":2430,"src":"823:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2409,"name":"uint256","nodeType":"ElementaryTypeName","src":"823:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2412,"mutability":"mutable","name":"b","nameLocation":"842:1:19","nodeType":"VariableDeclaration","scope":2430,"src":"834:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2411,"name":"uint256","nodeType":"ElementaryTypeName","src":"834:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"822:22:19"},"returnParameters":{"id":2416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2415,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2430,"src":"868:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2414,"name":"uint256","nodeType":"ElementaryTypeName","src":"868:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"867:9:19"},"scope":2868,"src":"806:153:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2454,"nodeType":"Block","src":"1229:123:19","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2440,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"1317:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1322:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1317:6:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"1331:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1335:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1331:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2447,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1330:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2448,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2435,"src":"1340:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1330:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1344:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1317:28:19","trueExpression":{"hexValue":"30","id":2443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1326:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2439,"id":2453,"nodeType":"Return","src":"1310:35:19"}]},"documentation":{"id":2431,"nodeType":"StructuredDocumentation","src":"965:188:19","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":2455,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1167:7:19","nodeType":"FunctionDefinition","parameters":{"id":2436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2433,"mutability":"mutable","name":"a","nameLocation":"1183:1:19","nodeType":"VariableDeclaration","scope":2455,"src":"1175:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2432,"name":"uint256","nodeType":"ElementaryTypeName","src":"1175:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2435,"mutability":"mutable","name":"b","nameLocation":"1194:1:19","nodeType":"VariableDeclaration","scope":2455,"src":"1186:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2434,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1174:22:19"},"returnParameters":{"id":2439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2455,"src":"1220:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2437,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:9:19"},"scope":2868,"src":"1158:194:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2576,"nodeType":"Block","src":"1796:3797:19","statements":[{"id":2575,"nodeType":"UncheckedBlock","src":"1806:3781:19","statements":[{"assignments":[2468],"declarations":[{"constant":false,"id":2468,"mutability":"mutable","name":"prod0","nameLocation":"2135:5:19","nodeType":"VariableDeclaration","scope":2575,"src":"2127:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2467,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2469,"nodeType":"VariableDeclarationStatement","src":"2127:13:19"},{"assignments":[2471],"declarations":[{"constant":false,"id":2471,"mutability":"mutable","name":"prod1","nameLocation":"2207:5:19","nodeType":"VariableDeclaration","scope":2575,"src":"2199:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2470,"name":"uint256","nodeType":"ElementaryTypeName","src":"2199:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2472,"nodeType":"VariableDeclarationStatement","src":"2199:13:19"},{"AST":{"nodeType":"YulBlock","src":"2279:157:19","statements":[{"nodeType":"YulVariableDeclaration","src":"2297:30:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2314:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"2317:1:19"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2324:1:19","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2320:3:19"},"nodeType":"YulFunctionCall","src":"2320:6:19"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2307:6:19"},"nodeType":"YulFunctionCall","src":"2307:20:19"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2301:2:19","type":""}]},{"nodeType":"YulAssignment","src":"2344:18:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2357:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"2360:1:19"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2353:3:19"},"nodeType":"YulFunctionCall","src":"2353:9:19"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2344:5:19"}]},{"nodeType":"YulAssignment","src":"2379:43:19","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2396:2:19"},{"name":"prod0","nodeType":"YulIdentifier","src":"2400:5:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2392:3:19"},"nodeType":"YulFunctionCall","src":"2392:14:19"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2411:2:19"},{"name":"prod0","nodeType":"YulIdentifier","src":"2415:5:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2408:2:19"},"nodeType":"YulFunctionCall","src":"2408:13:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2388:3:19"},"nodeType":"YulFunctionCall","src":"2388:34:19"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2379:5:19"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2468,"isOffset":false,"isSlot":false,"src":"2344:5:19","valueSize":1},{"declaration":2468,"isOffset":false,"isSlot":false,"src":"2400:5:19","valueSize":1},{"declaration":2468,"isOffset":false,"isSlot":false,"src":"2415:5:19","valueSize":1},{"declaration":2471,"isOffset":false,"isSlot":false,"src":"2379:5:19","valueSize":1},{"declaration":2458,"isOffset":false,"isSlot":false,"src":"2314:1:19","valueSize":1},{"declaration":2458,"isOffset":false,"isSlot":false,"src":"2357:1:19","valueSize":1},{"declaration":2460,"isOffset":false,"isSlot":false,"src":"2317:1:19","valueSize":1},{"declaration":2460,"isOffset":false,"isSlot":false,"src":"2360:1:19","valueSize":1}],"id":2473,"nodeType":"InlineAssembly","src":"2270:166:19"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2474,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"2517:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2526:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2517:10:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2482,"nodeType":"IfStatement","src":"2513:75:19","trueBody":{"id":2481,"nodeType":"Block","src":"2529:59:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2477,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"2554:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2478,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"2562:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2554:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2466,"id":2480,"nodeType":"Return","src":"2547:26:19"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2484,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"2698:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2485,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"2712:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2698:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2483,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2690:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2690:28:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2488,"nodeType":"ExpressionStatement","src":"2690:28:19"},{"assignments":[2490],"declarations":[{"constant":false,"id":2490,"mutability":"mutable","name":"remainder","nameLocation":"2982:9:19","nodeType":"VariableDeclaration","scope":2575,"src":"2974:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2974:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2491,"nodeType":"VariableDeclarationStatement","src":"2974:17:19"},{"AST":{"nodeType":"YulBlock","src":"3014:291:19","statements":[{"nodeType":"YulAssignment","src":"3083:38:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3103:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"3106:1:19"},{"name":"denominator","nodeType":"YulIdentifier","src":"3109:11:19"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3096:6:19"},"nodeType":"YulFunctionCall","src":"3096:25:19"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3083:9:19"}]},{"nodeType":"YulAssignment","src":"3203:41:19","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3216:5:19"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3226:9:19"},{"name":"prod0","nodeType":"YulIdentifier","src":"3237:5:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3223:2:19"},"nodeType":"YulFunctionCall","src":"3223:20:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3212:3:19"},"nodeType":"YulFunctionCall","src":"3212:32:19"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3203:5:19"}]},{"nodeType":"YulAssignment","src":"3261:30:19","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3274:5:19"},{"name":"remainder","nodeType":"YulIdentifier","src":"3281:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3270:3:19"},"nodeType":"YulFunctionCall","src":"3270:21:19"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3261:5:19"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2462,"isOffset":false,"isSlot":false,"src":"3109:11:19","valueSize":1},{"declaration":2468,"isOffset":false,"isSlot":false,"src":"3237:5:19","valueSize":1},{"declaration":2468,"isOffset":false,"isSlot":false,"src":"3261:5:19","valueSize":1},{"declaration":2468,"isOffset":false,"isSlot":false,"src":"3274:5:19","valueSize":1},{"declaration":2471,"isOffset":false,"isSlot":false,"src":"3203:5:19","valueSize":1},{"declaration":2471,"isOffset":false,"isSlot":false,"src":"3216:5:19","valueSize":1},{"declaration":2490,"isOffset":false,"isSlot":false,"src":"3083:9:19","valueSize":1},{"declaration":2490,"isOffset":false,"isSlot":false,"src":"3226:9:19","valueSize":1},{"declaration":2490,"isOffset":false,"isSlot":false,"src":"3281:9:19","valueSize":1},{"declaration":2458,"isOffset":false,"isSlot":false,"src":"3103:1:19","valueSize":1},{"declaration":2460,"isOffset":false,"isSlot":false,"src":"3106:1:19","valueSize":1}],"id":2492,"nodeType":"InlineAssembly","src":"3005:300:19"},{"assignments":[2494],"declarations":[{"constant":false,"id":2494,"mutability":"mutable","name":"twos","nameLocation":"3620:4:19","nodeType":"VariableDeclaration","scope":2575,"src":"3612:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2493,"name":"uint256","nodeType":"ElementaryTypeName","src":"3612:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2502,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2495,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"3627:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3642:12:19","subExpression":{"id":2496,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"3643:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3657:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3642:16:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3641:18:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3627:32:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3612:47:19"},{"AST":{"nodeType":"YulBlock","src":"3682:362:19","statements":[{"nodeType":"YulAssignment","src":"3747:37:19","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"3766:11:19"},{"name":"twos","nodeType":"YulIdentifier","src":"3779:4:19"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3762:3:19"},"nodeType":"YulFunctionCall","src":"3762:22:19"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"3747:11:19"}]},{"nodeType":"YulAssignment","src":"3851:25:19","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3864:5:19"},{"name":"twos","nodeType":"YulIdentifier","src":"3871:4:19"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3860:3:19"},"nodeType":"YulFunctionCall","src":"3860:16:19"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3851:5:19"}]},{"nodeType":"YulAssignment","src":"3991:39:19","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4011:1:19","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4014:4:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4007:3:19"},"nodeType":"YulFunctionCall","src":"4007:12:19"},{"name":"twos","nodeType":"YulIdentifier","src":"4021:4:19"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4003:3:19"},"nodeType":"YulFunctionCall","src":"4003:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"4028:1:19","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3999:3:19"},"nodeType":"YulFunctionCall","src":"3999:31:19"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"3991:4:19"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2462,"isOffset":false,"isSlot":false,"src":"3747:11:19","valueSize":1},{"declaration":2462,"isOffset":false,"isSlot":false,"src":"3766:11:19","valueSize":1},{"declaration":2468,"isOffset":false,"isSlot":false,"src":"3851:5:19","valueSize":1},{"declaration":2468,"isOffset":false,"isSlot":false,"src":"3864:5:19","valueSize":1},{"declaration":2494,"isOffset":false,"isSlot":false,"src":"3779:4:19","valueSize":1},{"declaration":2494,"isOffset":false,"isSlot":false,"src":"3871:4:19","valueSize":1},{"declaration":2494,"isOffset":false,"isSlot":false,"src":"3991:4:19","valueSize":1},{"declaration":2494,"isOffset":false,"isSlot":false,"src":"4014:4:19","valueSize":1},{"declaration":2494,"isOffset":false,"isSlot":false,"src":"4021:4:19","valueSize":1}],"id":2503,"nodeType":"InlineAssembly","src":"3673:371:19"},{"expression":{"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2504,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"4110:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2505,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"4119:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2506,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"4127:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4119:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4110:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2509,"nodeType":"ExpressionStatement","src":"4110:21:19"},{"assignments":[2511],"declarations":[{"constant":false,"id":2511,"mutability":"mutable","name":"inverse","nameLocation":"4457:7:19","nodeType":"VariableDeclaration","scope":2575,"src":"4449:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2510,"name":"uint256","nodeType":"ElementaryTypeName","src":"4449:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2518,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4468:1:19","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2513,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"4472:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4468:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2515,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4467:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":2516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4487:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4467:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4449:39:19"},{"expression":{"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2519,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"4705:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4716:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2521,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"4720:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2522,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"4734:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4720:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4716:25:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4705:36:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2526,"nodeType":"ExpressionStatement","src":"4705:36:19"},{"expression":{"id":2533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2527,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"4774:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4785:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2529,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"4789:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2530,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"4803:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4789:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4785:25:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4774:36:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2534,"nodeType":"ExpressionStatement","src":"4774:36:19"},{"expression":{"id":2541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2535,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"4844:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4855:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2537,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"4859:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2538,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"4873:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4859:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4855:25:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4844:36:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2542,"nodeType":"ExpressionStatement","src":"4844:36:19"},{"expression":{"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2543,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"4914:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4925:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2545,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"4929:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2546,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"4943:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4929:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:25:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4914:36:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2550,"nodeType":"ExpressionStatement","src":"4914:36:19"},{"expression":{"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2551,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"4984:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4995:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"4999:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2554,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"5013:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4999:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4995:25:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4984:36:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2558,"nodeType":"ExpressionStatement","src":"4984:36:19"},{"expression":{"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2559,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"5055:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5066:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2561,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"5070:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2562,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"5084:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5070:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5066:25:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5055:36:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2566,"nodeType":"ExpressionStatement","src":"5055:36:19"},{"expression":{"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2567,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2465,"src":"5525:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2568,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"5534:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2569,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2511,"src":"5542:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5534:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5525:24:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2572,"nodeType":"ExpressionStatement","src":"5525:24:19"},{"expression":{"id":2573,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2465,"src":"5570:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2466,"id":2574,"nodeType":"Return","src":"5563:13:19"}]}]},"documentation":{"id":2456,"nodeType":"StructuredDocumentation","src":"1358:305:19","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":2577,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1677:6:19","nodeType":"FunctionDefinition","parameters":{"id":2463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2458,"mutability":"mutable","name":"x","nameLocation":"1701:1:19","nodeType":"VariableDeclaration","scope":2577,"src":"1693:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2457,"name":"uint256","nodeType":"ElementaryTypeName","src":"1693:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2460,"mutability":"mutable","name":"y","nameLocation":"1720:1:19","nodeType":"VariableDeclaration","scope":2577,"src":"1712:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2459,"name":"uint256","nodeType":"ElementaryTypeName","src":"1712:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2462,"mutability":"mutable","name":"denominator","nameLocation":"1739:11:19","nodeType":"VariableDeclaration","scope":2577,"src":"1731:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2461,"name":"uint256","nodeType":"ElementaryTypeName","src":"1731:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1683:73:19"},"returnParameters":{"id":2466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2465,"mutability":"mutable","name":"result","nameLocation":"1788:6:19","nodeType":"VariableDeclaration","scope":2577,"src":"1780:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2464,"name":"uint256","nodeType":"ElementaryTypeName","src":"1780:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1779:16:19"},"scope":2868,"src":"1668:3925:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2620,"nodeType":"Block","src":"5873:189:19","statements":[{"assignments":[2593],"declarations":[{"constant":false,"id":2593,"mutability":"mutable","name":"result","nameLocation":"5891:6:19","nodeType":"VariableDeclaration","scope":2620,"src":"5883:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2592,"name":"uint256","nodeType":"ElementaryTypeName","src":"5883:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2599,"initialValue":{"arguments":[{"id":2595,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"5907:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2596,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"5910:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2597,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2584,"src":"5913:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2594,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[2577,2621],"referencedDeclaration":2577,"src":"5900:6:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5900:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5883:42:19"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"},"id":2603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2600,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2587,"src":"5939:8:19","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2601,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2371,"src":"5951:8:19","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2371_$","typeString":"type(enum Math.Rounding)"}},"id":2602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2369,"src":"5951:11:19","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"}},"src":"5939:23:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2605,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"5973:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2606,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"5976:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2607,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2584,"src":"5979:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2604,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"5966:6:19","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5966:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5994:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5966:29:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5939:56:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2617,"nodeType":"IfStatement","src":"5935:98:19","trueBody":{"id":2616,"nodeType":"Block","src":"5997:36:19","statements":[{"expression":{"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2612,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"6011:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6021:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6011:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2615,"nodeType":"ExpressionStatement","src":"6011:11:19"}]}},{"expression":{"id":2618,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"6049:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2591,"id":2619,"nodeType":"Return","src":"6042:13:19"}]},"documentation":{"id":2578,"nodeType":"StructuredDocumentation","src":"5599:121:19","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2621,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"5734:6:19","nodeType":"FunctionDefinition","parameters":{"id":2588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2580,"mutability":"mutable","name":"x","nameLocation":"5758:1:19","nodeType":"VariableDeclaration","scope":2621,"src":"5750:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2579,"name":"uint256","nodeType":"ElementaryTypeName","src":"5750:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2582,"mutability":"mutable","name":"y","nameLocation":"5777:1:19","nodeType":"VariableDeclaration","scope":2621,"src":"5769:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2581,"name":"uint256","nodeType":"ElementaryTypeName","src":"5769:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2584,"mutability":"mutable","name":"denominator","nameLocation":"5796:11:19","nodeType":"VariableDeclaration","scope":2621,"src":"5788:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2583,"name":"uint256","nodeType":"ElementaryTypeName","src":"5788:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2587,"mutability":"mutable","name":"rounding","nameLocation":"5826:8:19","nodeType":"VariableDeclaration","scope":2621,"src":"5817:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"},"typeName":{"id":2586,"nodeType":"UserDefinedTypeName","pathNode":{"id":2585,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":2371,"src":"5817:8:19"},"referencedDeclaration":2371,"src":"5817:8:19","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"5740:100:19"},"returnParameters":{"id":2591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2590,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2621,"src":"5864:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2589,"name":"uint256","nodeType":"ElementaryTypeName","src":"5864:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5863:9:19"},"scope":2868,"src":"5725:337:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2830,"nodeType":"Block","src":"6338:2149:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2629,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"6352:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6357:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6352:6:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2635,"nodeType":"IfStatement","src":"6348:45:19","trueBody":{"id":2634,"nodeType":"Block","src":"6360:33:19","statements":[{"expression":{"hexValue":"30","id":2632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6381:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2628,"id":2633,"nodeType":"Return","src":"6374:8:19"}]}},{"assignments":[2637],"declarations":[{"constant":false,"id":2637,"mutability":"mutable","name":"result","nameLocation":"7066:6:19","nodeType":"VariableDeclaration","scope":2830,"src":"7058:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2636,"name":"uint256","nodeType":"ElementaryTypeName","src":"7058:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2639,"initialValue":{"hexValue":"31","id":2638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7075:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"7058:18:19"},{"assignments":[2641],"declarations":[{"constant":false,"id":2641,"mutability":"mutable","name":"x","nameLocation":"7094:1:19","nodeType":"VariableDeclaration","scope":2830,"src":"7086:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2640,"name":"uint256","nodeType":"ElementaryTypeName","src":"7086:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2643,"initialValue":{"id":2642,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"7098:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7086:13:19"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2644,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7113:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7118:3:19","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"7113:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7124:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7113:12:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2658,"nodeType":"IfStatement","src":"7109:79:19","trueBody":{"id":2657,"nodeType":"Block","src":"7127:61:19","statements":[{"expression":{"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2649,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7141:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7147:3:19","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"7141:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2652,"nodeType":"ExpressionStatement","src":"7141:9:19"},{"expression":{"id":2655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2653,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"7164:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":2654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7175:2:19","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"7164:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2656,"nodeType":"ExpressionStatement","src":"7164:13:19"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2659,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7201:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7206:2:19","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"7201:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7211:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7201:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2673,"nodeType":"IfStatement","src":"7197:77:19","trueBody":{"id":2672,"nodeType":"Block","src":"7214:60:19","statements":[{"expression":{"id":2666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2664,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7228:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7234:2:19","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"7228:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2667,"nodeType":"ExpressionStatement","src":"7228:8:19"},{"expression":{"id":2670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2668,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"7250:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":2669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7261:2:19","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"7250:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2671,"nodeType":"ExpressionStatement","src":"7250:13:19"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2674,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7287:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7292:2:19","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"7287:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7297:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7287:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2688,"nodeType":"IfStatement","src":"7283:77:19","trueBody":{"id":2687,"nodeType":"Block","src":"7300:60:19","statements":[{"expression":{"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2679,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7314:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7320:2:19","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"7314:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2682,"nodeType":"ExpressionStatement","src":"7314:8:19"},{"expression":{"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2683,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"7336:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":2684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7347:2:19","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"7336:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2686,"nodeType":"ExpressionStatement","src":"7336:13:19"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2689,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7373:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7378:2:19","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"7373:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7383:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7373:11:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2703,"nodeType":"IfStatement","src":"7369:76:19","trueBody":{"id":2702,"nodeType":"Block","src":"7386:59:19","statements":[{"expression":{"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2694,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7400:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7406:2:19","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"7400:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2697,"nodeType":"ExpressionStatement","src":"7400:8:19"},{"expression":{"id":2700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2698,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"7422:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":2699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7433:1:19","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"7422:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2701,"nodeType":"ExpressionStatement","src":"7422:12:19"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2704,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7458:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7463:1:19","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"7458:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7467:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7458:10:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2718,"nodeType":"IfStatement","src":"7454:74:19","trueBody":{"id":2717,"nodeType":"Block","src":"7470:58:19","statements":[{"expression":{"id":2711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2709,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7484:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7490:1:19","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"7484:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2712,"nodeType":"ExpressionStatement","src":"7484:7:19"},{"expression":{"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2713,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"7505:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":2714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7516:1:19","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"7505:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2716,"nodeType":"ExpressionStatement","src":"7505:12:19"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2719,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7541:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7546:1:19","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"7541:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7550:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7541:10:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2733,"nodeType":"IfStatement","src":"7537:74:19","trueBody":{"id":2732,"nodeType":"Block","src":"7553:58:19","statements":[{"expression":{"id":2726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2724,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7567:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7573:1:19","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"7567:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2727,"nodeType":"ExpressionStatement","src":"7567:7:19"},{"expression":{"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2728,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"7588:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":2729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7599:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"7588:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2731,"nodeType":"ExpressionStatement","src":"7588:12:19"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2734,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2641,"src":"7624:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7629:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"7624:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7633:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7624:10:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2744,"nodeType":"IfStatement","src":"7620:53:19","trueBody":{"id":2743,"nodeType":"Block","src":"7636:37:19","statements":[{"expression":{"id":2741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2739,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"7650:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":2740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7661:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7650:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2742,"nodeType":"ExpressionStatement","src":"7650:12:19"}]}},{"id":2829,"nodeType":"UncheckedBlock","src":"8073:408:19","statements":[{"expression":{"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2745,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8097:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2746,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8107:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2747,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8116:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2748,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8120:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8116:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8107:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8106:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8131:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8106:26:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:35:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2755,"nodeType":"ExpressionStatement","src":"8097:35:19"},{"expression":{"id":2765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2756,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8146:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2757,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8156:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2758,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8165:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2759,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8169:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8165:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8156:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2762,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8155:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8180:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8155:26:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8146:35:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2766,"nodeType":"ExpressionStatement","src":"8146:35:19"},{"expression":{"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2767,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8195:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2768,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8205:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2769,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8214:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2770,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8218:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8214:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8205:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2773,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8204:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8229:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8204:26:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8195:35:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2777,"nodeType":"ExpressionStatement","src":"8195:35:19"},{"expression":{"id":2787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2778,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8244:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2779,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8254:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2780,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8263:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2781,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8267:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8263:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8254:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2784,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8253:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8278:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8253:26:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8244:35:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2788,"nodeType":"ExpressionStatement","src":"8244:35:19"},{"expression":{"id":2798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2789,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8293:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2790,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8303:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2791,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8312:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2792,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8316:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8312:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8303:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8302:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8327:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:26:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8293:35:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2799,"nodeType":"ExpressionStatement","src":"8293:35:19"},{"expression":{"id":2809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2800,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8342:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2801,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8352:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2802,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8361:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8365:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8361:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8352:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2806,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8351:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8376:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8351:26:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8342:35:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2810,"nodeType":"ExpressionStatement","src":"8342:35:19"},{"expression":{"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2811,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8391:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2812,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8401:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2813,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8410:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2814,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8414:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8410:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8401:19:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8400:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8425:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8400:26:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8391:35:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2821,"nodeType":"ExpressionStatement","src":"8391:35:19"},{"expression":{"arguments":[{"id":2823,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8451:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2824,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8459:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2825,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8463:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8459:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2822,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2407,"src":"8447:3:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8447:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2628,"id":2828,"nodeType":"Return","src":"8440:30:19"}]}]},"documentation":{"id":2622,"nodeType":"StructuredDocumentation","src":"6068:208:19","text":" @dev Returns the square root of a number. It 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":2831,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6290:4:19","nodeType":"FunctionDefinition","parameters":{"id":2625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2624,"mutability":"mutable","name":"a","nameLocation":"6303:1:19","nodeType":"VariableDeclaration","scope":2831,"src":"6295:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2623,"name":"uint256","nodeType":"ElementaryTypeName","src":"6295:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6294:11:19"},"returnParameters":{"id":2628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2831,"src":"6329:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2626,"name":"uint256","nodeType":"ElementaryTypeName","src":"6329:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6328:9:19"},"scope":2868,"src":"6281:2206:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2866,"nodeType":"Block","src":"8663:161:19","statements":[{"assignments":[2843],"declarations":[{"constant":false,"id":2843,"mutability":"mutable","name":"result","nameLocation":"8681:6:19","nodeType":"VariableDeclaration","scope":2866,"src":"8673:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2842,"name":"uint256","nodeType":"ElementaryTypeName","src":"8673:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2847,"initialValue":{"arguments":[{"id":2845,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"8695:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2844,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2831,2867],"referencedDeclaration":2831,"src":"8690:4:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8690:7:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8673:24:19"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2848,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"8711:8:19","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2849,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2371,"src":"8723:8:19","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2371_$","typeString":"type(enum Math.Rounding)"}},"id":2850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2369,"src":"8723:11:19","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"}},"src":"8711:23:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2852,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"8738:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"8747:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8738:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2855,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"8756:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8738:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8711:46:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2863,"nodeType":"IfStatement","src":"8707:88:19","trueBody":{"id":2862,"nodeType":"Block","src":"8759:36:19","statements":[{"expression":{"id":2860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2858,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"8773:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8783:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8773:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2861,"nodeType":"ExpressionStatement","src":"8773:11:19"}]}},{"expression":{"id":2864,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"8811:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2841,"id":2865,"nodeType":"Return","src":"8804:13:19"}]},"documentation":{"id":2832,"nodeType":"StructuredDocumentation","src":"8493:89:19","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":2867,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:19","nodeType":"FunctionDefinition","parameters":{"id":2838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2834,"mutability":"mutable","name":"a","nameLocation":"8609:1:19","nodeType":"VariableDeclaration","scope":2867,"src":"8601:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2837,"mutability":"mutable","name":"rounding","nameLocation":"8621:8:19","nodeType":"VariableDeclaration","scope":2867,"src":"8612:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"},"typeName":{"id":2836,"nodeType":"UserDefinedTypeName","pathNode":{"id":2835,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":2371,"src":"8612:8:19"},"referencedDeclaration":2371,"src":"8612:8:19","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2371","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8600:30:19"},"returnParameters":{"id":2841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2867,"src":"8654:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2839,"name":"uint256","nodeType":"ElementaryTypeName","src":"8654:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8653:9:19"},"scope":2868,"src":"8587:237:19","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2869,"src":"202:8624:19","usedErrors":[]}],"src":"103:8724:19"},"id":19},"@openzeppelin/contracts/utils/math/SafeMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeMath.sol","exportedSymbols":{"SafeMath":[3180]},"id":3181,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2870,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:20"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeMath","contractDependencies":[],"contractKind":"library","documentation":{"id":2871,"nodeType":"StructuredDocumentation","src":"285:196:20","text":" @dev Wrappers over Solidity's arithmetic operations.\n NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\n now has built in overflow checking."},"fullyImplemented":true,"id":3180,"linearizedBaseContracts":[3180],"name":"SafeMath","nameLocation":"490:8:20","nodeType":"ContractDefinition","nodes":[{"body":{"id":2902,"nodeType":"Block","src":"717:140:20","statements":[{"id":2901,"nodeType":"UncheckedBlock","src":"727:124:20","statements":[{"assignments":[2884],"declarations":[{"constant":false,"id":2884,"mutability":"mutable","name":"c","nameLocation":"759:1:20","nodeType":"VariableDeclaration","scope":2901,"src":"751:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2883,"name":"uint256","nodeType":"ElementaryTypeName","src":"751:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2888,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2885,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2874,"src":"763:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2886,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2876,"src":"767:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"763:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"751:17:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2889,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"786:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2890,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2874,"src":"790:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"786:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2896,"nodeType":"IfStatement","src":"782:28:20","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"801:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"808:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"800:10:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2882,"id":2895,"nodeType":"Return","src":"793:17:20"}},{"expression":{"components":[{"hexValue":"74727565","id":2897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"832:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2898,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"838:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2899,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"831:9:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2882,"id":2900,"nodeType":"Return","src":"824:16:20"}]}]},"documentation":{"id":2872,"nodeType":"StructuredDocumentation","src":"505:131:20","text":" @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":2903,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"650:6:20","nodeType":"FunctionDefinition","parameters":{"id":2877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2874,"mutability":"mutable","name":"a","nameLocation":"665:1:20","nodeType":"VariableDeclaration","scope":2903,"src":"657:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2873,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2876,"mutability":"mutable","name":"b","nameLocation":"676:1:20","nodeType":"VariableDeclaration","scope":2903,"src":"668:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2875,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"656:22:20"},"returnParameters":{"id":2882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2903,"src":"702:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2878,"name":"bool","nodeType":"ElementaryTypeName","src":"702:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2881,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2903,"src":"708:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2880,"name":"uint256","nodeType":"ElementaryTypeName","src":"708:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:15:20"},"scope":3180,"src":"641:216:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2930,"nodeType":"Block","src":"1078:113:20","statements":[{"id":2929,"nodeType":"UncheckedBlock","src":"1088:97:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2915,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"1116:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2916,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"1120:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1116:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2922,"nodeType":"IfStatement","src":"1112:28:20","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1131:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1138:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2920,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1130:10:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2914,"id":2921,"nodeType":"Return","src":"1123:17:20"}},{"expression":{"components":[{"hexValue":"74727565","id":2923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1162:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2924,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"1168:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2925,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"1172:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1168:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2927,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1161:13:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2914,"id":2928,"nodeType":"Return","src":"1154:20:20"}]}]},"documentation":{"id":2904,"nodeType":"StructuredDocumentation","src":"863:134:20","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":2931,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"1011:6:20","nodeType":"FunctionDefinition","parameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2906,"mutability":"mutable","name":"a","nameLocation":"1026:1:20","nodeType":"VariableDeclaration","scope":2931,"src":"1018:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2905,"name":"uint256","nodeType":"ElementaryTypeName","src":"1018:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"b","nameLocation":"1037:1:20","nodeType":"VariableDeclaration","scope":2931,"src":"1029:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2907,"name":"uint256","nodeType":"ElementaryTypeName","src":"1029:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1017:22:20"},"returnParameters":{"id":2914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2931,"src":"1063:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2910,"name":"bool","nodeType":"ElementaryTypeName","src":"1063:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2913,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2931,"src":"1069:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2912,"name":"uint256","nodeType":"ElementaryTypeName","src":"1069:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1062:15:20"},"scope":3180,"src":"1002:189:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2972,"nodeType":"Block","src":"1415:417:20","statements":[{"id":2971,"nodeType":"UncheckedBlock","src":"1425:401:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2943,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2934,"src":"1683:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1688:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1683:6:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2950,"nodeType":"IfStatement","src":"1679:28:20","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":2946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1699:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":2947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1705:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2948,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1698:9:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2942,"id":2949,"nodeType":"Return","src":"1691:16:20"}},{"assignments":[2952],"declarations":[{"constant":false,"id":2952,"mutability":"mutable","name":"c","nameLocation":"1729:1:20","nodeType":"VariableDeclaration","scope":2971,"src":"1721:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2951,"name":"uint256","nodeType":"ElementaryTypeName","src":"1721:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2956,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2953,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2934,"src":"1733:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2954,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2936,"src":"1737:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1733:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1721:17:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2957,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"1756:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2958,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2934,"src":"1760:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1756:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2960,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2936,"src":"1765:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1756:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2966,"nodeType":"IfStatement","src":"1752:33:20","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1776:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1783:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2964,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1775:10:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2942,"id":2965,"nodeType":"Return","src":"1768:17:20"}},{"expression":{"components":[{"hexValue":"74727565","id":2967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1807:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2968,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"1813:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2969,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1806:9:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2942,"id":2970,"nodeType":"Return","src":"1799:16:20"}]}]},"documentation":{"id":2932,"nodeType":"StructuredDocumentation","src":"1197:137:20","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":2973,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1348:6:20","nodeType":"FunctionDefinition","parameters":{"id":2937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2934,"mutability":"mutable","name":"a","nameLocation":"1363:1:20","nodeType":"VariableDeclaration","scope":2973,"src":"1355:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2933,"name":"uint256","nodeType":"ElementaryTypeName","src":"1355:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2936,"mutability":"mutable","name":"b","nameLocation":"1374:1:20","nodeType":"VariableDeclaration","scope":2973,"src":"1366:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2935,"name":"uint256","nodeType":"ElementaryTypeName","src":"1366:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1354:22:20"},"returnParameters":{"id":2942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2973,"src":"1400:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2938,"name":"bool","nodeType":"ElementaryTypeName","src":"1400:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2941,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2973,"src":"1406:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2940,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1399:15:20"},"scope":3180,"src":"1339:493:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3000,"nodeType":"Block","src":"2057:114:20","statements":[{"id":2999,"nodeType":"UncheckedBlock","src":"2067:98:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2985,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"2095:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2095:6:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2992,"nodeType":"IfStatement","src":"2091:29:20","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2111:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2118:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2990,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2110:10:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2984,"id":2991,"nodeType":"Return","src":"2103:17:20"}},{"expression":{"components":[{"hexValue":"74727565","id":2993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2142:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2994,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2976,"src":"2148:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2995,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"2152:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2148:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2997,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2141:13:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2984,"id":2998,"nodeType":"Return","src":"2134:20:20"}]}]},"documentation":{"id":2974,"nodeType":"StructuredDocumentation","src":"1838:138:20","text":" @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":3001,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1990:6:20","nodeType":"FunctionDefinition","parameters":{"id":2979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2976,"mutability":"mutable","name":"a","nameLocation":"2005:1:20","nodeType":"VariableDeclaration","scope":3001,"src":"1997:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2975,"name":"uint256","nodeType":"ElementaryTypeName","src":"1997:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2978,"mutability":"mutable","name":"b","nameLocation":"2016:1:20","nodeType":"VariableDeclaration","scope":3001,"src":"2008:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2977,"name":"uint256","nodeType":"ElementaryTypeName","src":"2008:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1996:22:20"},"returnParameters":{"id":2984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2981,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3001,"src":"2042:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2980,"name":"bool","nodeType":"ElementaryTypeName","src":"2042:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2983,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3001,"src":"2048:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2982,"name":"uint256","nodeType":"ElementaryTypeName","src":"2048:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2041:15:20"},"scope":3180,"src":"1981:190:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3028,"nodeType":"Block","src":"2406:114:20","statements":[{"id":3027,"nodeType":"UncheckedBlock","src":"2416:98:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3013,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"2444:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2449:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2444:6:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3020,"nodeType":"IfStatement","src":"2440:29:20","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":3016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2460:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2467:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3018,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2459:10:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3012,"id":3019,"nodeType":"Return","src":"2452:17:20"}},{"expression":{"components":[{"hexValue":"74727565","id":3021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2491:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3022,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"2497:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":3023,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"2501:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2497:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3025,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2490:13:20","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":3012,"id":3026,"nodeType":"Return","src":"2483:20:20"}]}]},"documentation":{"id":3002,"nodeType":"StructuredDocumentation","src":"2177:148:20","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":3029,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2339:6:20","nodeType":"FunctionDefinition","parameters":{"id":3007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3004,"mutability":"mutable","name":"a","nameLocation":"2354:1:20","nodeType":"VariableDeclaration","scope":3029,"src":"2346:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3003,"name":"uint256","nodeType":"ElementaryTypeName","src":"2346:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3006,"mutability":"mutable","name":"b","nameLocation":"2365:1:20","nodeType":"VariableDeclaration","scope":3029,"src":"2357:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3005,"name":"uint256","nodeType":"ElementaryTypeName","src":"2357:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2345:22:20"},"returnParameters":{"id":3012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3029,"src":"2391:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3008,"name":"bool","nodeType":"ElementaryTypeName","src":"2391:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3029,"src":"2397:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3010,"name":"uint256","nodeType":"ElementaryTypeName","src":"2397:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2390:15:20"},"scope":3180,"src":"2330:190:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3043,"nodeType":"Block","src":"2822:29:20","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3039,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"2839:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3040,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3034,"src":"2843:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2839:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3038,"id":3042,"nodeType":"Return","src":"2832:12:20"}]},"documentation":{"id":3030,"nodeType":"StructuredDocumentation","src":"2526:224:20","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":3044,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"2764:3:20","nodeType":"FunctionDefinition","parameters":{"id":3035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3032,"mutability":"mutable","name":"a","nameLocation":"2776:1:20","nodeType":"VariableDeclaration","scope":3044,"src":"2768:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3031,"name":"uint256","nodeType":"ElementaryTypeName","src":"2768:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3034,"mutability":"mutable","name":"b","nameLocation":"2787:1:20","nodeType":"VariableDeclaration","scope":3044,"src":"2779:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3033,"name":"uint256","nodeType":"ElementaryTypeName","src":"2779:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2767:22:20"},"returnParameters":{"id":3038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3037,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3044,"src":"2813:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3036,"name":"uint256","nodeType":"ElementaryTypeName","src":"2813:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2812:9:20"},"scope":3180,"src":"2755:96:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3058,"nodeType":"Block","src":"3189:29:20","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3054,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"3206:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3055,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3049,"src":"3210:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3206:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3053,"id":3057,"nodeType":"Return","src":"3199:12:20"}]},"documentation":{"id":3045,"nodeType":"StructuredDocumentation","src":"2857:260:20","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":3059,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nameLocation":"3131:3:20","nodeType":"FunctionDefinition","parameters":{"id":3050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3047,"mutability":"mutable","name":"a","nameLocation":"3143:1:20","nodeType":"VariableDeclaration","scope":3059,"src":"3135:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3046,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3049,"mutability":"mutable","name":"b","nameLocation":"3154:1:20","nodeType":"VariableDeclaration","scope":3059,"src":"3146:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3048,"name":"uint256","nodeType":"ElementaryTypeName","src":"3146:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3134:22:20"},"returnParameters":{"id":3053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3059,"src":"3180:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3051,"name":"uint256","nodeType":"ElementaryTypeName","src":"3180:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3179:9:20"},"scope":3180,"src":"3122:96:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3073,"nodeType":"Block","src":"3532:29:20","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3069,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3062,"src":"3549:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3070,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"3553:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3549:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3068,"id":3072,"nodeType":"Return","src":"3542:12:20"}]},"documentation":{"id":3060,"nodeType":"StructuredDocumentation","src":"3224:236:20","text":" @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."},"id":3074,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nameLocation":"3474:3:20","nodeType":"FunctionDefinition","parameters":{"id":3065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3062,"mutability":"mutable","name":"a","nameLocation":"3486:1:20","nodeType":"VariableDeclaration","scope":3074,"src":"3478:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3061,"name":"uint256","nodeType":"ElementaryTypeName","src":"3478:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3064,"mutability":"mutable","name":"b","nameLocation":"3497:1:20","nodeType":"VariableDeclaration","scope":3074,"src":"3489:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3063,"name":"uint256","nodeType":"ElementaryTypeName","src":"3489:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3477:22:20"},"returnParameters":{"id":3068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3067,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3074,"src":"3523:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3066,"name":"uint256","nodeType":"ElementaryTypeName","src":"3523:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3522:9:20"},"scope":3180,"src":"3465:96:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3088,"nodeType":"Block","src":"3917:29:20","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3084,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"3934:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3085,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3938:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3934:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3083,"id":3087,"nodeType":"Return","src":"3927:12:20"}]},"documentation":{"id":3075,"nodeType":"StructuredDocumentation","src":"3567:278:20","text":" @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator.\n Requirements:\n - The divisor cannot be zero."},"id":3089,"implemented":true,"kind":"function","modifiers":[],"name":"div","nameLocation":"3859:3:20","nodeType":"FunctionDefinition","parameters":{"id":3080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3077,"mutability":"mutable","name":"a","nameLocation":"3871:1:20","nodeType":"VariableDeclaration","scope":3089,"src":"3863:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3076,"name":"uint256","nodeType":"ElementaryTypeName","src":"3863:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3079,"mutability":"mutable","name":"b","nameLocation":"3882:1:20","nodeType":"VariableDeclaration","scope":3089,"src":"3874:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3078,"name":"uint256","nodeType":"ElementaryTypeName","src":"3874:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3862:22:20"},"returnParameters":{"id":3083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3089,"src":"3908:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3081,"name":"uint256","nodeType":"ElementaryTypeName","src":"3908:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3907:9:20"},"scope":3180,"src":"3850:96:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3103,"nodeType":"Block","src":"4466:29:20","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3099,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3092,"src":"4483:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":3100,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"4487:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4483:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3098,"id":3102,"nodeType":"Return","src":"4476:12:20"}]},"documentation":{"id":3090,"nodeType":"StructuredDocumentation","src":"3952:442:20","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":3104,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nameLocation":"4408:3:20","nodeType":"FunctionDefinition","parameters":{"id":3095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3092,"mutability":"mutable","name":"a","nameLocation":"4420:1:20","nodeType":"VariableDeclaration","scope":3104,"src":"4412:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3091,"name":"uint256","nodeType":"ElementaryTypeName","src":"4412:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3094,"mutability":"mutable","name":"b","nameLocation":"4431:1:20","nodeType":"VariableDeclaration","scope":3104,"src":"4423:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3093,"name":"uint256","nodeType":"ElementaryTypeName","src":"4423:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4411:22:20"},"returnParameters":{"id":3098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3104,"src":"4457:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3096,"name":"uint256","nodeType":"ElementaryTypeName","src":"4457:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4456:9:20"},"scope":3180,"src":"4399:96:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3128,"nodeType":"Block","src":"5084:106:20","statements":[{"id":3127,"nodeType":"UncheckedBlock","src":"5094:90:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3117,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"5126:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3118,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3107,"src":"5131:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5126:6:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3120,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"5134:12:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3116,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5118:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5118:29:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3122,"nodeType":"ExpressionStatement","src":"5118:29:20"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3123,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3107,"src":"5168:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3124,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"5172:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5168:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3115,"id":3126,"nodeType":"Return","src":"5161:12:20"}]}]},"documentation":{"id":3105,"nodeType":"StructuredDocumentation","src":"4501:453:20","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":3129,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nameLocation":"4968:3:20","nodeType":"FunctionDefinition","parameters":{"id":3112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3107,"mutability":"mutable","name":"a","nameLocation":"4989:1:20","nodeType":"VariableDeclaration","scope":3129,"src":"4981:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3106,"name":"uint256","nodeType":"ElementaryTypeName","src":"4981:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3109,"mutability":"mutable","name":"b","nameLocation":"5008:1:20","nodeType":"VariableDeclaration","scope":3129,"src":"5000:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3108,"name":"uint256","nodeType":"ElementaryTypeName","src":"5000:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3111,"mutability":"mutable","name":"errorMessage","nameLocation":"5033:12:20","nodeType":"VariableDeclaration","scope":3129,"src":"5019:26:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3110,"name":"string","nodeType":"ElementaryTypeName","src":"5019:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4971:80:20"},"returnParameters":{"id":3115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3114,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3129,"src":"5075:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3113,"name":"uint256","nodeType":"ElementaryTypeName","src":"5075:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5074:9:20"},"scope":3180,"src":"4959:231:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3153,"nodeType":"Block","src":"5799:105:20","statements":[{"id":3152,"nodeType":"UncheckedBlock","src":"5809:89:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3142,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3134,"src":"5841:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5845:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5841:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3145,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3136,"src":"5848:12:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3141,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5833:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5833:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3147,"nodeType":"ExpressionStatement","src":"5833:28:20"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3148,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3132,"src":"5882:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3149,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3134,"src":"5886:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5882:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3140,"id":3151,"nodeType":"Return","src":"5875:12:20"}]}]},"documentation":{"id":3130,"nodeType":"StructuredDocumentation","src":"5196:473:20","text":" @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":3154,"implemented":true,"kind":"function","modifiers":[],"name":"div","nameLocation":"5683:3:20","nodeType":"FunctionDefinition","parameters":{"id":3137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3132,"mutability":"mutable","name":"a","nameLocation":"5704:1:20","nodeType":"VariableDeclaration","scope":3154,"src":"5696:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3131,"name":"uint256","nodeType":"ElementaryTypeName","src":"5696:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3134,"mutability":"mutable","name":"b","nameLocation":"5723:1:20","nodeType":"VariableDeclaration","scope":3154,"src":"5715:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3133,"name":"uint256","nodeType":"ElementaryTypeName","src":"5715:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3136,"mutability":"mutable","name":"errorMessage","nameLocation":"5748:12:20","nodeType":"VariableDeclaration","scope":3154,"src":"5734:26:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3135,"name":"string","nodeType":"ElementaryTypeName","src":"5734:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5686:80:20"},"returnParameters":{"id":3140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3154,"src":"5790:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3138,"name":"uint256","nodeType":"ElementaryTypeName","src":"5790:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5789:9:20"},"scope":3180,"src":"5674:230:20","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3178,"nodeType":"Block","src":"6675:105:20","statements":[{"id":3177,"nodeType":"UncheckedBlock","src":"6685:89:20","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3167,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3159,"src":"6717:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6721:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6717:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3170,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3161,"src":"6724:12:20","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3166,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6709:7:20","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6709:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3172,"nodeType":"ExpressionStatement","src":"6709:28:20"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3173,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3157,"src":"6758:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":3174,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3159,"src":"6762:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6758:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3165,"id":3176,"nodeType":"Return","src":"6751:12:20"}]}]},"documentation":{"id":3155,"nodeType":"StructuredDocumentation","src":"5910:635:20","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":3179,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nameLocation":"6559:3:20","nodeType":"FunctionDefinition","parameters":{"id":3162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3157,"mutability":"mutable","name":"a","nameLocation":"6580:1:20","nodeType":"VariableDeclaration","scope":3179,"src":"6572:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3156,"name":"uint256","nodeType":"ElementaryTypeName","src":"6572:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3159,"mutability":"mutable","name":"b","nameLocation":"6599:1:20","nodeType":"VariableDeclaration","scope":3179,"src":"6591:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3158,"name":"uint256","nodeType":"ElementaryTypeName","src":"6591:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3161,"mutability":"mutable","name":"errorMessage","nameLocation":"6624:12:20","nodeType":"VariableDeclaration","scope":3179,"src":"6610:26:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3160,"name":"string","nodeType":"ElementaryTypeName","src":"6610:6:20","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6562:80:20"},"returnParameters":{"id":3165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3179,"src":"6666:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3163,"name":"uint256","nodeType":"ElementaryTypeName","src":"6666:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6665:9:20"},"scope":3180,"src":"6550:230:20","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3181,"src":"482:6300:20","usedErrors":[]}],"src":"107:6676:20"},"id":20},"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol":{"ast":{"absolutePath":"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol","exportedSymbols":{"IUniswapV2Router01":[3488]},"id":3489,"nodeType":"SourceUnit","nodes":[{"id":3182,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"0:24:21"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV2Router01","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3488,"linearizedBaseContracts":[3488],"name":"IUniswapV2Router01","nameLocation":"36:18:21","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c45a0155","id":3187,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nameLocation":"70:7:21","nodeType":"FunctionDefinition","parameters":{"id":3183,"nodeType":"ParameterList","parameters":[],"src":"77:2:21"},"returnParameters":{"id":3186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3187,"src":"103:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3184,"name":"address","nodeType":"ElementaryTypeName","src":"103:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"102:9:21"},"scope":3488,"src":"61:51:21","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"ad5c4648","id":3192,"implemented":false,"kind":"function","modifiers":[],"name":"WETH","nameLocation":"126:4:21","nodeType":"FunctionDefinition","parameters":{"id":3188,"nodeType":"ParameterList","parameters":[],"src":"130:2:21"},"returnParameters":{"id":3191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3190,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3192,"src":"156:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3189,"name":"address","nodeType":"ElementaryTypeName","src":"156:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"155:9:21"},"scope":3488,"src":"117:48:21","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"e8e33700","id":3217,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidity","nameLocation":"180:12:21","nodeType":"FunctionDefinition","parameters":{"id":3209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3194,"mutability":"mutable","name":"tokenA","nameLocation":"210:6:21","nodeType":"VariableDeclaration","scope":3217,"src":"202:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3193,"name":"address","nodeType":"ElementaryTypeName","src":"202:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3196,"mutability":"mutable","name":"tokenB","nameLocation":"234:6:21","nodeType":"VariableDeclaration","scope":3217,"src":"226:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3195,"name":"address","nodeType":"ElementaryTypeName","src":"226:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3198,"mutability":"mutable","name":"amountADesired","nameLocation":"255:14:21","nodeType":"VariableDeclaration","scope":3217,"src":"250:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3197,"name":"uint","nodeType":"ElementaryTypeName","src":"250:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3200,"mutability":"mutable","name":"amountBDesired","nameLocation":"284:14:21","nodeType":"VariableDeclaration","scope":3217,"src":"279:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3199,"name":"uint","nodeType":"ElementaryTypeName","src":"279:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3202,"mutability":"mutable","name":"amountAMin","nameLocation":"313:10:21","nodeType":"VariableDeclaration","scope":3217,"src":"308:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3201,"name":"uint","nodeType":"ElementaryTypeName","src":"308:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3204,"mutability":"mutable","name":"amountBMin","nameLocation":"338:10:21","nodeType":"VariableDeclaration","scope":3217,"src":"333:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3203,"name":"uint","nodeType":"ElementaryTypeName","src":"333:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3206,"mutability":"mutable","name":"to","nameLocation":"366:2:21","nodeType":"VariableDeclaration","scope":3217,"src":"358:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3205,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3208,"mutability":"mutable","name":"deadline","nameLocation":"383:8:21","nodeType":"VariableDeclaration","scope":3217,"src":"378:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3207,"name":"uint","nodeType":"ElementaryTypeName","src":"378:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"192:205:21"},"returnParameters":{"id":3216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3211,"mutability":"mutable","name":"amountA","nameLocation":"421:7:21","nodeType":"VariableDeclaration","scope":3217,"src":"416:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3210,"name":"uint","nodeType":"ElementaryTypeName","src":"416:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3213,"mutability":"mutable","name":"amountB","nameLocation":"435:7:21","nodeType":"VariableDeclaration","scope":3217,"src":"430:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3212,"name":"uint","nodeType":"ElementaryTypeName","src":"430:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3215,"mutability":"mutable","name":"liquidity","nameLocation":"449:9:21","nodeType":"VariableDeclaration","scope":3217,"src":"444:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3214,"name":"uint","nodeType":"ElementaryTypeName","src":"444:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"415:44:21"},"scope":3488,"src":"171:289:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f305d719","id":3238,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidityETH","nameLocation":"474:15:21","nodeType":"FunctionDefinition","parameters":{"id":3230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3219,"mutability":"mutable","name":"token","nameLocation":"507:5:21","nodeType":"VariableDeclaration","scope":3238,"src":"499:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3218,"name":"address","nodeType":"ElementaryTypeName","src":"499:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3221,"mutability":"mutable","name":"amountTokenDesired","nameLocation":"527:18:21","nodeType":"VariableDeclaration","scope":3238,"src":"522:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3220,"name":"uint","nodeType":"ElementaryTypeName","src":"522:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3223,"mutability":"mutable","name":"amountTokenMin","nameLocation":"560:14:21","nodeType":"VariableDeclaration","scope":3238,"src":"555:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3222,"name":"uint","nodeType":"ElementaryTypeName","src":"555:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3225,"mutability":"mutable","name":"amountETHMin","nameLocation":"589:12:21","nodeType":"VariableDeclaration","scope":3238,"src":"584:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3224,"name":"uint","nodeType":"ElementaryTypeName","src":"584:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3227,"mutability":"mutable","name":"to","nameLocation":"619:2:21","nodeType":"VariableDeclaration","scope":3238,"src":"611:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3226,"name":"address","nodeType":"ElementaryTypeName","src":"611:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3229,"mutability":"mutable","name":"deadline","nameLocation":"636:8:21","nodeType":"VariableDeclaration","scope":3238,"src":"631:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3228,"name":"uint","nodeType":"ElementaryTypeName","src":"631:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"489:161:21"},"returnParameters":{"id":3237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3232,"mutability":"mutable","name":"amountToken","nameLocation":"682:11:21","nodeType":"VariableDeclaration","scope":3238,"src":"677:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3231,"name":"uint","nodeType":"ElementaryTypeName","src":"677:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3234,"mutability":"mutable","name":"amountETH","nameLocation":"700:9:21","nodeType":"VariableDeclaration","scope":3238,"src":"695:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3233,"name":"uint","nodeType":"ElementaryTypeName","src":"695:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3236,"mutability":"mutable","name":"liquidity","nameLocation":"716:9:21","nodeType":"VariableDeclaration","scope":3238,"src":"711:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3235,"name":"uint","nodeType":"ElementaryTypeName","src":"711:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"676:50:21"},"scope":3488,"src":"465:262:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"baa2abde","id":3259,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidity","nameLocation":"741:15:21","nodeType":"FunctionDefinition","parameters":{"id":3253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3240,"mutability":"mutable","name":"tokenA","nameLocation":"774:6:21","nodeType":"VariableDeclaration","scope":3259,"src":"766:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3239,"name":"address","nodeType":"ElementaryTypeName","src":"766:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3242,"mutability":"mutable","name":"tokenB","nameLocation":"798:6:21","nodeType":"VariableDeclaration","scope":3259,"src":"790:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3241,"name":"address","nodeType":"ElementaryTypeName","src":"790:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3244,"mutability":"mutable","name":"liquidity","nameLocation":"819:9:21","nodeType":"VariableDeclaration","scope":3259,"src":"814:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3243,"name":"uint","nodeType":"ElementaryTypeName","src":"814:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3246,"mutability":"mutable","name":"amountAMin","nameLocation":"843:10:21","nodeType":"VariableDeclaration","scope":3259,"src":"838:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3245,"name":"uint","nodeType":"ElementaryTypeName","src":"838:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3248,"mutability":"mutable","name":"amountBMin","nameLocation":"868:10:21","nodeType":"VariableDeclaration","scope":3259,"src":"863:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3247,"name":"uint","nodeType":"ElementaryTypeName","src":"863:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3250,"mutability":"mutable","name":"to","nameLocation":"896:2:21","nodeType":"VariableDeclaration","scope":3259,"src":"888:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3249,"name":"address","nodeType":"ElementaryTypeName","src":"888:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3252,"mutability":"mutable","name":"deadline","nameLocation":"913:8:21","nodeType":"VariableDeclaration","scope":3259,"src":"908:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3251,"name":"uint","nodeType":"ElementaryTypeName","src":"908:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"756:171:21"},"returnParameters":{"id":3258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3255,"mutability":"mutable","name":"amountA","nameLocation":"951:7:21","nodeType":"VariableDeclaration","scope":3259,"src":"946:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3254,"name":"uint","nodeType":"ElementaryTypeName","src":"946:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3257,"mutability":"mutable","name":"amountB","nameLocation":"965:7:21","nodeType":"VariableDeclaration","scope":3259,"src":"960:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3256,"name":"uint","nodeType":"ElementaryTypeName","src":"960:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"945:28:21"},"scope":3488,"src":"732:242:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"02751cec","id":3278,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityETH","nameLocation":"988:18:21","nodeType":"FunctionDefinition","parameters":{"id":3272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3261,"mutability":"mutable","name":"token","nameLocation":"1024:5:21","nodeType":"VariableDeclaration","scope":3278,"src":"1016:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3260,"name":"address","nodeType":"ElementaryTypeName","src":"1016:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3263,"mutability":"mutable","name":"liquidity","nameLocation":"1044:9:21","nodeType":"VariableDeclaration","scope":3278,"src":"1039:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3262,"name":"uint","nodeType":"ElementaryTypeName","src":"1039:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3265,"mutability":"mutable","name":"amountTokenMin","nameLocation":"1068:14:21","nodeType":"VariableDeclaration","scope":3278,"src":"1063:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3264,"name":"uint","nodeType":"ElementaryTypeName","src":"1063:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3267,"mutability":"mutable","name":"amountETHMin","nameLocation":"1097:12:21","nodeType":"VariableDeclaration","scope":3278,"src":"1092:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3266,"name":"uint","nodeType":"ElementaryTypeName","src":"1092:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3269,"mutability":"mutable","name":"to","nameLocation":"1127:2:21","nodeType":"VariableDeclaration","scope":3278,"src":"1119:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3268,"name":"address","nodeType":"ElementaryTypeName","src":"1119:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3271,"mutability":"mutable","name":"deadline","nameLocation":"1144:8:21","nodeType":"VariableDeclaration","scope":3278,"src":"1139:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3270,"name":"uint","nodeType":"ElementaryTypeName","src":"1139:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1006:152:21"},"returnParameters":{"id":3277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3274,"mutability":"mutable","name":"amountToken","nameLocation":"1182:11:21","nodeType":"VariableDeclaration","scope":3278,"src":"1177:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3273,"name":"uint","nodeType":"ElementaryTypeName","src":"1177:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3276,"mutability":"mutable","name":"amountETH","nameLocation":"1200:9:21","nodeType":"VariableDeclaration","scope":3278,"src":"1195:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3275,"name":"uint","nodeType":"ElementaryTypeName","src":"1195:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1176:34:21"},"scope":3488,"src":"979:232:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2195995c","id":3307,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityWithPermit","nameLocation":"1225:25:21","nodeType":"FunctionDefinition","parameters":{"id":3301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3280,"mutability":"mutable","name":"tokenA","nameLocation":"1268:6:21","nodeType":"VariableDeclaration","scope":3307,"src":"1260:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3279,"name":"address","nodeType":"ElementaryTypeName","src":"1260:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3282,"mutability":"mutable","name":"tokenB","nameLocation":"1292:6:21","nodeType":"VariableDeclaration","scope":3307,"src":"1284:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3281,"name":"address","nodeType":"ElementaryTypeName","src":"1284:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3284,"mutability":"mutable","name":"liquidity","nameLocation":"1313:9:21","nodeType":"VariableDeclaration","scope":3307,"src":"1308:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3283,"name":"uint","nodeType":"ElementaryTypeName","src":"1308:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3286,"mutability":"mutable","name":"amountAMin","nameLocation":"1337:10:21","nodeType":"VariableDeclaration","scope":3307,"src":"1332:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3285,"name":"uint","nodeType":"ElementaryTypeName","src":"1332:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3288,"mutability":"mutable","name":"amountBMin","nameLocation":"1362:10:21","nodeType":"VariableDeclaration","scope":3307,"src":"1357:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3287,"name":"uint","nodeType":"ElementaryTypeName","src":"1357:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3290,"mutability":"mutable","name":"to","nameLocation":"1390:2:21","nodeType":"VariableDeclaration","scope":3307,"src":"1382:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3289,"name":"address","nodeType":"ElementaryTypeName","src":"1382:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3292,"mutability":"mutable","name":"deadline","nameLocation":"1407:8:21","nodeType":"VariableDeclaration","scope":3307,"src":"1402:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3291,"name":"uint","nodeType":"ElementaryTypeName","src":"1402:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3294,"mutability":"mutable","name":"approveMax","nameLocation":"1430:10:21","nodeType":"VariableDeclaration","scope":3307,"src":"1425:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3293,"name":"bool","nodeType":"ElementaryTypeName","src":"1425:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3296,"mutability":"mutable","name":"v","nameLocation":"1448:1:21","nodeType":"VariableDeclaration","scope":3307,"src":"1442:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3295,"name":"uint8","nodeType":"ElementaryTypeName","src":"1442:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3298,"mutability":"mutable","name":"r","nameLocation":"1459:1:21","nodeType":"VariableDeclaration","scope":3307,"src":"1451:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1451:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3300,"mutability":"mutable","name":"s","nameLocation":"1470:1:21","nodeType":"VariableDeclaration","scope":3307,"src":"1462:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3299,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1462:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1250:227:21"},"returnParameters":{"id":3306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3303,"mutability":"mutable","name":"amountA","nameLocation":"1501:7:21","nodeType":"VariableDeclaration","scope":3307,"src":"1496:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3302,"name":"uint","nodeType":"ElementaryTypeName","src":"1496:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3305,"mutability":"mutable","name":"amountB","nameLocation":"1515:7:21","nodeType":"VariableDeclaration","scope":3307,"src":"1510:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3304,"name":"uint","nodeType":"ElementaryTypeName","src":"1510:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1495:28:21"},"scope":3488,"src":"1216:308:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ded9382a","id":3334,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityETHWithPermit","nameLocation":"1538:28:21","nodeType":"FunctionDefinition","parameters":{"id":3328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3309,"mutability":"mutable","name":"token","nameLocation":"1584:5:21","nodeType":"VariableDeclaration","scope":3334,"src":"1576:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3308,"name":"address","nodeType":"ElementaryTypeName","src":"1576:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3311,"mutability":"mutable","name":"liquidity","nameLocation":"1604:9:21","nodeType":"VariableDeclaration","scope":3334,"src":"1599:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3310,"name":"uint","nodeType":"ElementaryTypeName","src":"1599:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3313,"mutability":"mutable","name":"amountTokenMin","nameLocation":"1628:14:21","nodeType":"VariableDeclaration","scope":3334,"src":"1623:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3312,"name":"uint","nodeType":"ElementaryTypeName","src":"1623:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3315,"mutability":"mutable","name":"amountETHMin","nameLocation":"1657:12:21","nodeType":"VariableDeclaration","scope":3334,"src":"1652:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3314,"name":"uint","nodeType":"ElementaryTypeName","src":"1652:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3317,"mutability":"mutable","name":"to","nameLocation":"1687:2:21","nodeType":"VariableDeclaration","scope":3334,"src":"1679:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3316,"name":"address","nodeType":"ElementaryTypeName","src":"1679:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3319,"mutability":"mutable","name":"deadline","nameLocation":"1704:8:21","nodeType":"VariableDeclaration","scope":3334,"src":"1699:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3318,"name":"uint","nodeType":"ElementaryTypeName","src":"1699:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3321,"mutability":"mutable","name":"approveMax","nameLocation":"1727:10:21","nodeType":"VariableDeclaration","scope":3334,"src":"1722:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3320,"name":"bool","nodeType":"ElementaryTypeName","src":"1722:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3323,"mutability":"mutable","name":"v","nameLocation":"1745:1:21","nodeType":"VariableDeclaration","scope":3334,"src":"1739:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3322,"name":"uint8","nodeType":"ElementaryTypeName","src":"1739:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3325,"mutability":"mutable","name":"r","nameLocation":"1756:1:21","nodeType":"VariableDeclaration","scope":3334,"src":"1748:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3324,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1748:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3327,"mutability":"mutable","name":"s","nameLocation":"1767:1:21","nodeType":"VariableDeclaration","scope":3334,"src":"1759:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3326,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1759:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1566:208:21"},"returnParameters":{"id":3333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3330,"mutability":"mutable","name":"amountToken","nameLocation":"1798:11:21","nodeType":"VariableDeclaration","scope":3334,"src":"1793:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3329,"name":"uint","nodeType":"ElementaryTypeName","src":"1793:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3332,"mutability":"mutable","name":"amountETH","nameLocation":"1816:9:21","nodeType":"VariableDeclaration","scope":3334,"src":"1811:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3331,"name":"uint","nodeType":"ElementaryTypeName","src":"1811:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1792:34:21"},"scope":3488,"src":"1529:298:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"38ed1739","id":3351,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactTokensForTokens","nameLocation":"1841:24:21","nodeType":"FunctionDefinition","parameters":{"id":3346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3336,"mutability":"mutable","name":"amountIn","nameLocation":"1880:8:21","nodeType":"VariableDeclaration","scope":3351,"src":"1875:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3335,"name":"uint","nodeType":"ElementaryTypeName","src":"1875:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3338,"mutability":"mutable","name":"amountOutMin","nameLocation":"1903:12:21","nodeType":"VariableDeclaration","scope":3351,"src":"1898:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3337,"name":"uint","nodeType":"ElementaryTypeName","src":"1898:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3341,"mutability":"mutable","name":"path","nameLocation":"1944:4:21","nodeType":"VariableDeclaration","scope":3351,"src":"1925:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3339,"name":"address","nodeType":"ElementaryTypeName","src":"1925:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3340,"nodeType":"ArrayTypeName","src":"1925:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3343,"mutability":"mutable","name":"to","nameLocation":"1966:2:21","nodeType":"VariableDeclaration","scope":3351,"src":"1958:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3342,"name":"address","nodeType":"ElementaryTypeName","src":"1958:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3345,"mutability":"mutable","name":"deadline","nameLocation":"1983:8:21","nodeType":"VariableDeclaration","scope":3351,"src":"1978:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3344,"name":"uint","nodeType":"ElementaryTypeName","src":"1978:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1865:132:21"},"returnParameters":{"id":3350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3349,"mutability":"mutable","name":"amounts","nameLocation":"2030:7:21","nodeType":"VariableDeclaration","scope":3351,"src":"2016:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3347,"name":"uint","nodeType":"ElementaryTypeName","src":"2016:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3348,"nodeType":"ArrayTypeName","src":"2016:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2015:23:21"},"scope":3488,"src":"1832:207:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8803dbee","id":3368,"implemented":false,"kind":"function","modifiers":[],"name":"swapTokensForExactTokens","nameLocation":"2053:24:21","nodeType":"FunctionDefinition","parameters":{"id":3363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3353,"mutability":"mutable","name":"amountOut","nameLocation":"2092:9:21","nodeType":"VariableDeclaration","scope":3368,"src":"2087:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3352,"name":"uint","nodeType":"ElementaryTypeName","src":"2087:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3355,"mutability":"mutable","name":"amountInMax","nameLocation":"2116:11:21","nodeType":"VariableDeclaration","scope":3368,"src":"2111:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3354,"name":"uint","nodeType":"ElementaryTypeName","src":"2111:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3358,"mutability":"mutable","name":"path","nameLocation":"2156:4:21","nodeType":"VariableDeclaration","scope":3368,"src":"2137:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3356,"name":"address","nodeType":"ElementaryTypeName","src":"2137:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3357,"nodeType":"ArrayTypeName","src":"2137:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3360,"mutability":"mutable","name":"to","nameLocation":"2178:2:21","nodeType":"VariableDeclaration","scope":3368,"src":"2170:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3359,"name":"address","nodeType":"ElementaryTypeName","src":"2170:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3362,"mutability":"mutable","name":"deadline","nameLocation":"2195:8:21","nodeType":"VariableDeclaration","scope":3368,"src":"2190:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3361,"name":"uint","nodeType":"ElementaryTypeName","src":"2190:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2077:132:21"},"returnParameters":{"id":3367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3366,"mutability":"mutable","name":"amounts","nameLocation":"2242:7:21","nodeType":"VariableDeclaration","scope":3368,"src":"2228:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3364,"name":"uint","nodeType":"ElementaryTypeName","src":"2228:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3365,"nodeType":"ArrayTypeName","src":"2228:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2227:23:21"},"scope":3488,"src":"2044:207:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"7ff36ab5","id":3383,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactETHForTokens","nameLocation":"2265:21:21","nodeType":"FunctionDefinition","parameters":{"id":3378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3370,"mutability":"mutable","name":"amountOutMin","nameLocation":"2292:12:21","nodeType":"VariableDeclaration","scope":3383,"src":"2287:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3369,"name":"uint","nodeType":"ElementaryTypeName","src":"2287:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3373,"mutability":"mutable","name":"path","nameLocation":"2325:4:21","nodeType":"VariableDeclaration","scope":3383,"src":"2306:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3371,"name":"address","nodeType":"ElementaryTypeName","src":"2306:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3372,"nodeType":"ArrayTypeName","src":"2306:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3375,"mutability":"mutable","name":"to","nameLocation":"2339:2:21","nodeType":"VariableDeclaration","scope":3383,"src":"2331:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3374,"name":"address","nodeType":"ElementaryTypeName","src":"2331:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3377,"mutability":"mutable","name":"deadline","nameLocation":"2348:8:21","nodeType":"VariableDeclaration","scope":3383,"src":"2343:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3376,"name":"uint","nodeType":"ElementaryTypeName","src":"2343:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2286:71:21"},"returnParameters":{"id":3382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3381,"mutability":"mutable","name":"amounts","nameLocation":"2422:7:21","nodeType":"VariableDeclaration","scope":3383,"src":"2408:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3379,"name":"uint","nodeType":"ElementaryTypeName","src":"2408:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3380,"nodeType":"ArrayTypeName","src":"2408:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2407:23:21"},"scope":3488,"src":"2256:175:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"4a25d94a","id":3400,"implemented":false,"kind":"function","modifiers":[],"name":"swapTokensForExactETH","nameLocation":"2445:21:21","nodeType":"FunctionDefinition","parameters":{"id":3395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3385,"mutability":"mutable","name":"amountOut","nameLocation":"2472:9:21","nodeType":"VariableDeclaration","scope":3400,"src":"2467:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3384,"name":"uint","nodeType":"ElementaryTypeName","src":"2467:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3387,"mutability":"mutable","name":"amountInMax","nameLocation":"2488:11:21","nodeType":"VariableDeclaration","scope":3400,"src":"2483:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3386,"name":"uint","nodeType":"ElementaryTypeName","src":"2483:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3390,"mutability":"mutable","name":"path","nameLocation":"2520:4:21","nodeType":"VariableDeclaration","scope":3400,"src":"2501:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3388,"name":"address","nodeType":"ElementaryTypeName","src":"2501:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3389,"nodeType":"ArrayTypeName","src":"2501:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3392,"mutability":"mutable","name":"to","nameLocation":"2534:2:21","nodeType":"VariableDeclaration","scope":3400,"src":"2526:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3391,"name":"address","nodeType":"ElementaryTypeName","src":"2526:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3394,"mutability":"mutable","name":"deadline","nameLocation":"2543:8:21","nodeType":"VariableDeclaration","scope":3400,"src":"2538:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3393,"name":"uint","nodeType":"ElementaryTypeName","src":"2538:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2466:86:21"},"returnParameters":{"id":3399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3398,"mutability":"mutable","name":"amounts","nameLocation":"2601:7:21","nodeType":"VariableDeclaration","scope":3400,"src":"2587:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3396,"name":"uint","nodeType":"ElementaryTypeName","src":"2587:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3397,"nodeType":"ArrayTypeName","src":"2587:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2586:23:21"},"scope":3488,"src":"2436:174:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"18cbafe5","id":3417,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactTokensForETH","nameLocation":"2624:21:21","nodeType":"FunctionDefinition","parameters":{"id":3412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3402,"mutability":"mutable","name":"amountIn","nameLocation":"2651:8:21","nodeType":"VariableDeclaration","scope":3417,"src":"2646:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3401,"name":"uint","nodeType":"ElementaryTypeName","src":"2646:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3404,"mutability":"mutable","name":"amountOutMin","nameLocation":"2666:12:21","nodeType":"VariableDeclaration","scope":3417,"src":"2661:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3403,"name":"uint","nodeType":"ElementaryTypeName","src":"2661:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3407,"mutability":"mutable","name":"path","nameLocation":"2699:4:21","nodeType":"VariableDeclaration","scope":3417,"src":"2680:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3405,"name":"address","nodeType":"ElementaryTypeName","src":"2680:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3406,"nodeType":"ArrayTypeName","src":"2680:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3409,"mutability":"mutable","name":"to","nameLocation":"2713:2:21","nodeType":"VariableDeclaration","scope":3417,"src":"2705:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3408,"name":"address","nodeType":"ElementaryTypeName","src":"2705:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3411,"mutability":"mutable","name":"deadline","nameLocation":"2722:8:21","nodeType":"VariableDeclaration","scope":3417,"src":"2717:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3410,"name":"uint","nodeType":"ElementaryTypeName","src":"2717:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2645:86:21"},"returnParameters":{"id":3416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3415,"mutability":"mutable","name":"amounts","nameLocation":"2780:7:21","nodeType":"VariableDeclaration","scope":3417,"src":"2766:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3413,"name":"uint","nodeType":"ElementaryTypeName","src":"2766:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3414,"nodeType":"ArrayTypeName","src":"2766:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2765:23:21"},"scope":3488,"src":"2615:174:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fb3bdb41","id":3432,"implemented":false,"kind":"function","modifiers":[],"name":"swapETHForExactTokens","nameLocation":"2803:21:21","nodeType":"FunctionDefinition","parameters":{"id":3427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3419,"mutability":"mutable","name":"amountOut","nameLocation":"2830:9:21","nodeType":"VariableDeclaration","scope":3432,"src":"2825:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3418,"name":"uint","nodeType":"ElementaryTypeName","src":"2825:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3422,"mutability":"mutable","name":"path","nameLocation":"2860:4:21","nodeType":"VariableDeclaration","scope":3432,"src":"2841:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3420,"name":"address","nodeType":"ElementaryTypeName","src":"2841:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3421,"nodeType":"ArrayTypeName","src":"2841:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3424,"mutability":"mutable","name":"to","nameLocation":"2874:2:21","nodeType":"VariableDeclaration","scope":3432,"src":"2866:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3423,"name":"address","nodeType":"ElementaryTypeName","src":"2866:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3426,"mutability":"mutable","name":"deadline","nameLocation":"2883:8:21","nodeType":"VariableDeclaration","scope":3432,"src":"2878:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3425,"name":"uint","nodeType":"ElementaryTypeName","src":"2878:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2824:68:21"},"returnParameters":{"id":3431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3430,"mutability":"mutable","name":"amounts","nameLocation":"2957:7:21","nodeType":"VariableDeclaration","scope":3432,"src":"2943:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3428,"name":"uint","nodeType":"ElementaryTypeName","src":"2943:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3429,"nodeType":"ArrayTypeName","src":"2943:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2942:23:21"},"scope":3488,"src":"2794:172:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"ad615dec","id":3443,"implemented":false,"kind":"function","modifiers":[],"name":"quote","nameLocation":"2981:5:21","nodeType":"FunctionDefinition","parameters":{"id":3439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3434,"mutability":"mutable","name":"amountA","nameLocation":"2992:7:21","nodeType":"VariableDeclaration","scope":3443,"src":"2987:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3433,"name":"uint","nodeType":"ElementaryTypeName","src":"2987:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3436,"mutability":"mutable","name":"reserveA","nameLocation":"3006:8:21","nodeType":"VariableDeclaration","scope":3443,"src":"3001:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3435,"name":"uint","nodeType":"ElementaryTypeName","src":"3001:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3438,"mutability":"mutable","name":"reserveB","nameLocation":"3021:8:21","nodeType":"VariableDeclaration","scope":3443,"src":"3016:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3437,"name":"uint","nodeType":"ElementaryTypeName","src":"3016:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2986:44:21"},"returnParameters":{"id":3442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3441,"mutability":"mutable","name":"amountB","nameLocation":"3059:7:21","nodeType":"VariableDeclaration","scope":3443,"src":"3054:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3440,"name":"uint","nodeType":"ElementaryTypeName","src":"3054:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3053:14:21"},"scope":3488,"src":"2972:96:21","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"054d50d4","id":3454,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountOut","nameLocation":"3082:12:21","nodeType":"FunctionDefinition","parameters":{"id":3450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3445,"mutability":"mutable","name":"amountIn","nameLocation":"3100:8:21","nodeType":"VariableDeclaration","scope":3454,"src":"3095:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3444,"name":"uint","nodeType":"ElementaryTypeName","src":"3095:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3447,"mutability":"mutable","name":"reserveIn","nameLocation":"3115:9:21","nodeType":"VariableDeclaration","scope":3454,"src":"3110:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3446,"name":"uint","nodeType":"ElementaryTypeName","src":"3110:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3449,"mutability":"mutable","name":"reserveOut","nameLocation":"3131:10:21","nodeType":"VariableDeclaration","scope":3454,"src":"3126:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3448,"name":"uint","nodeType":"ElementaryTypeName","src":"3126:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3094:48:21"},"returnParameters":{"id":3453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3452,"mutability":"mutable","name":"amountOut","nameLocation":"3171:9:21","nodeType":"VariableDeclaration","scope":3454,"src":"3166:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3451,"name":"uint","nodeType":"ElementaryTypeName","src":"3166:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3165:16:21"},"scope":3488,"src":"3073:109:21","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"85f8c259","id":3465,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountIn","nameLocation":"3196:11:21","nodeType":"FunctionDefinition","parameters":{"id":3461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3456,"mutability":"mutable","name":"amountOut","nameLocation":"3213:9:21","nodeType":"VariableDeclaration","scope":3465,"src":"3208:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3455,"name":"uint","nodeType":"ElementaryTypeName","src":"3208:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3458,"mutability":"mutable","name":"reserveIn","nameLocation":"3229:9:21","nodeType":"VariableDeclaration","scope":3465,"src":"3224:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3457,"name":"uint","nodeType":"ElementaryTypeName","src":"3224:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3460,"mutability":"mutable","name":"reserveOut","nameLocation":"3245:10:21","nodeType":"VariableDeclaration","scope":3465,"src":"3240:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3459,"name":"uint","nodeType":"ElementaryTypeName","src":"3240:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3207:49:21"},"returnParameters":{"id":3464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3463,"mutability":"mutable","name":"amountIn","nameLocation":"3285:8:21","nodeType":"VariableDeclaration","scope":3465,"src":"3280:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3462,"name":"uint","nodeType":"ElementaryTypeName","src":"3280:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3279:15:21"},"scope":3488,"src":"3187:108:21","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"d06ca61f","id":3476,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountsOut","nameLocation":"3309:13:21","nodeType":"FunctionDefinition","parameters":{"id":3471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3467,"mutability":"mutable","name":"amountIn","nameLocation":"3328:8:21","nodeType":"VariableDeclaration","scope":3476,"src":"3323:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3466,"name":"uint","nodeType":"ElementaryTypeName","src":"3323:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3470,"mutability":"mutable","name":"path","nameLocation":"3357:4:21","nodeType":"VariableDeclaration","scope":3476,"src":"3338:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3468,"name":"address","nodeType":"ElementaryTypeName","src":"3338:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3469,"nodeType":"ArrayTypeName","src":"3338:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3322:40:21"},"returnParameters":{"id":3475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3474,"mutability":"mutable","name":"amounts","nameLocation":"3400:7:21","nodeType":"VariableDeclaration","scope":3476,"src":"3386:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3472,"name":"uint","nodeType":"ElementaryTypeName","src":"3386:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3473,"nodeType":"ArrayTypeName","src":"3386:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3385:23:21"},"scope":3488,"src":"3300:109:21","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1f00ca74","id":3487,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountsIn","nameLocation":"3423:12:21","nodeType":"FunctionDefinition","parameters":{"id":3482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3478,"mutability":"mutable","name":"amountOut","nameLocation":"3441:9:21","nodeType":"VariableDeclaration","scope":3487,"src":"3436:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3477,"name":"uint","nodeType":"ElementaryTypeName","src":"3436:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3481,"mutability":"mutable","name":"path","nameLocation":"3471:4:21","nodeType":"VariableDeclaration","scope":3487,"src":"3452:23:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3479,"name":"address","nodeType":"ElementaryTypeName","src":"3452:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3480,"nodeType":"ArrayTypeName","src":"3452:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3435:41:21"},"returnParameters":{"id":3486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3485,"mutability":"mutable","name":"amounts","nameLocation":"3514:7:21","nodeType":"VariableDeclaration","scope":3487,"src":"3500:21:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3483,"name":"uint","nodeType":"ElementaryTypeName","src":"3500:4:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3484,"nodeType":"ArrayTypeName","src":"3500:6:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3499:23:21"},"scope":3488,"src":"3414:109:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3489,"src":"26:3499:21","usedErrors":[]}],"src":"0:3526:21"},"id":21},"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol":{"ast":{"absolutePath":"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol","exportedSymbols":{"IUniswapV2Router01":[3488],"IUniswapV2Router02":[3576]},"id":3577,"nodeType":"SourceUnit","nodes":[{"id":3490,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"0:24:22"},{"absolutePath":"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol","file":"./IUniswapV2Router01.sol","id":3491,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3577,"sourceUnit":3489,"src":"26:34:22","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3492,"name":"IUniswapV2Router01","nodeType":"IdentifierPath","referencedDeclaration":3488,"src":"94:18:22"},"id":3493,"nodeType":"InheritanceSpecifier","src":"94:18:22"}],"canonicalName":"IUniswapV2Router02","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3576,"linearizedBaseContracts":[3576,3488],"name":"IUniswapV2Router02","nameLocation":"72:18:22","nodeType":"ContractDefinition","nodes":[{"functionSelector":"af2979eb","id":3510,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","nameLocation":"128:47:22","nodeType":"FunctionDefinition","parameters":{"id":3506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3495,"mutability":"mutable","name":"token","nameLocation":"193:5:22","nodeType":"VariableDeclaration","scope":3510,"src":"185:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3494,"name":"address","nodeType":"ElementaryTypeName","src":"185:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3497,"mutability":"mutable","name":"liquidity","nameLocation":"213:9:22","nodeType":"VariableDeclaration","scope":3510,"src":"208:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3496,"name":"uint","nodeType":"ElementaryTypeName","src":"208:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3499,"mutability":"mutable","name":"amountTokenMin","nameLocation":"237:14:22","nodeType":"VariableDeclaration","scope":3510,"src":"232:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3498,"name":"uint","nodeType":"ElementaryTypeName","src":"232:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3501,"mutability":"mutable","name":"amountETHMin","nameLocation":"266:12:22","nodeType":"VariableDeclaration","scope":3510,"src":"261:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3500,"name":"uint","nodeType":"ElementaryTypeName","src":"261:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3503,"mutability":"mutable","name":"to","nameLocation":"296:2:22","nodeType":"VariableDeclaration","scope":3510,"src":"288:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3502,"name":"address","nodeType":"ElementaryTypeName","src":"288:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3505,"mutability":"mutable","name":"deadline","nameLocation":"313:8:22","nodeType":"VariableDeclaration","scope":3510,"src":"308:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3504,"name":"uint","nodeType":"ElementaryTypeName","src":"308:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"175:152:22"},"returnParameters":{"id":3509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3508,"mutability":"mutable","name":"amountETH","nameLocation":"351:9:22","nodeType":"VariableDeclaration","scope":3510,"src":"346:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3507,"name":"uint","nodeType":"ElementaryTypeName","src":"346:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"345:16:22"},"scope":3576,"src":"119:243:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5b0d5984","id":3535,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","nameLocation":"376:57:22","nodeType":"FunctionDefinition","parameters":{"id":3531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3512,"mutability":"mutable","name":"token","nameLocation":"451:5:22","nodeType":"VariableDeclaration","scope":3535,"src":"443:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3511,"name":"address","nodeType":"ElementaryTypeName","src":"443:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3514,"mutability":"mutable","name":"liquidity","nameLocation":"471:9:22","nodeType":"VariableDeclaration","scope":3535,"src":"466:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3513,"name":"uint","nodeType":"ElementaryTypeName","src":"466:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3516,"mutability":"mutable","name":"amountTokenMin","nameLocation":"495:14:22","nodeType":"VariableDeclaration","scope":3535,"src":"490:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3515,"name":"uint","nodeType":"ElementaryTypeName","src":"490:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3518,"mutability":"mutable","name":"amountETHMin","nameLocation":"524:12:22","nodeType":"VariableDeclaration","scope":3535,"src":"519:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3517,"name":"uint","nodeType":"ElementaryTypeName","src":"519:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3520,"mutability":"mutable","name":"to","nameLocation":"554:2:22","nodeType":"VariableDeclaration","scope":3535,"src":"546:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3519,"name":"address","nodeType":"ElementaryTypeName","src":"546:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3522,"mutability":"mutable","name":"deadline","nameLocation":"571:8:22","nodeType":"VariableDeclaration","scope":3535,"src":"566:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3521,"name":"uint","nodeType":"ElementaryTypeName","src":"566:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3524,"mutability":"mutable","name":"approveMax","nameLocation":"594:10:22","nodeType":"VariableDeclaration","scope":3535,"src":"589:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3523,"name":"bool","nodeType":"ElementaryTypeName","src":"589:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3526,"mutability":"mutable","name":"v","nameLocation":"612:1:22","nodeType":"VariableDeclaration","scope":3535,"src":"606:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3525,"name":"uint8","nodeType":"ElementaryTypeName","src":"606:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3528,"mutability":"mutable","name":"r","nameLocation":"623:1:22","nodeType":"VariableDeclaration","scope":3535,"src":"615:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3527,"name":"bytes32","nodeType":"ElementaryTypeName","src":"615:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3530,"mutability":"mutable","name":"s","nameLocation":"634:1:22","nodeType":"VariableDeclaration","scope":3535,"src":"626:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"626:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"433:208:22"},"returnParameters":{"id":3534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3533,"mutability":"mutable","name":"amountETH","nameLocation":"665:9:22","nodeType":"VariableDeclaration","scope":3535,"src":"660:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3532,"name":"uint","nodeType":"ElementaryTypeName","src":"660:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"659:16:22"},"scope":3576,"src":"367:309:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5c11d795","id":3549,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","nameLocation":"691:53:22","nodeType":"FunctionDefinition","parameters":{"id":3547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3537,"mutability":"mutable","name":"amountIn","nameLocation":"759:8:22","nodeType":"VariableDeclaration","scope":3549,"src":"754:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3536,"name":"uint","nodeType":"ElementaryTypeName","src":"754:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3539,"mutability":"mutable","name":"amountOutMin","nameLocation":"782:12:22","nodeType":"VariableDeclaration","scope":3549,"src":"777:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3538,"name":"uint","nodeType":"ElementaryTypeName","src":"777:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3542,"mutability":"mutable","name":"path","nameLocation":"823:4:22","nodeType":"VariableDeclaration","scope":3549,"src":"804:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3540,"name":"address","nodeType":"ElementaryTypeName","src":"804:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3541,"nodeType":"ArrayTypeName","src":"804:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3544,"mutability":"mutable","name":"to","nameLocation":"845:2:22","nodeType":"VariableDeclaration","scope":3549,"src":"837:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3543,"name":"address","nodeType":"ElementaryTypeName","src":"837:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3546,"mutability":"mutable","name":"deadline","nameLocation":"862:8:22","nodeType":"VariableDeclaration","scope":3549,"src":"857:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3545,"name":"uint","nodeType":"ElementaryTypeName","src":"857:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"744:132:22"},"returnParameters":{"id":3548,"nodeType":"ParameterList","parameters":[],"src":"885:0:22"},"scope":3576,"src":"682:204:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b6f9de95","id":3561,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","nameLocation":"900:50:22","nodeType":"FunctionDefinition","parameters":{"id":3559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3551,"mutability":"mutable","name":"amountOutMin","nameLocation":"965:12:22","nodeType":"VariableDeclaration","scope":3561,"src":"960:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3550,"name":"uint","nodeType":"ElementaryTypeName","src":"960:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3554,"mutability":"mutable","name":"path","nameLocation":"1006:4:22","nodeType":"VariableDeclaration","scope":3561,"src":"987:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3552,"name":"address","nodeType":"ElementaryTypeName","src":"987:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3553,"nodeType":"ArrayTypeName","src":"987:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3556,"mutability":"mutable","name":"to","nameLocation":"1028:2:22","nodeType":"VariableDeclaration","scope":3561,"src":"1020:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3555,"name":"address","nodeType":"ElementaryTypeName","src":"1020:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3558,"mutability":"mutable","name":"deadline","nameLocation":"1045:8:22","nodeType":"VariableDeclaration","scope":3561,"src":"1040:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3557,"name":"uint","nodeType":"ElementaryTypeName","src":"1040:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"950:109:22"},"returnParameters":{"id":3560,"nodeType":"ParameterList","parameters":[],"src":"1076:0:22"},"scope":3576,"src":"891:186:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"791ac947","id":3575,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","nameLocation":"1091:50:22","nodeType":"FunctionDefinition","parameters":{"id":3573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3563,"mutability":"mutable","name":"amountIn","nameLocation":"1156:8:22","nodeType":"VariableDeclaration","scope":3575,"src":"1151:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3562,"name":"uint","nodeType":"ElementaryTypeName","src":"1151:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3565,"mutability":"mutable","name":"amountOutMin","nameLocation":"1179:12:22","nodeType":"VariableDeclaration","scope":3575,"src":"1174:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3564,"name":"uint","nodeType":"ElementaryTypeName","src":"1174:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3568,"mutability":"mutable","name":"path","nameLocation":"1220:4:22","nodeType":"VariableDeclaration","scope":3575,"src":"1201:23:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3566,"name":"address","nodeType":"ElementaryTypeName","src":"1201:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3567,"nodeType":"ArrayTypeName","src":"1201:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3570,"mutability":"mutable","name":"to","nameLocation":"1242:2:22","nodeType":"VariableDeclaration","scope":3575,"src":"1234:10:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3569,"name":"address","nodeType":"ElementaryTypeName","src":"1234:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3572,"mutability":"mutable","name":"deadline","nameLocation":"1259:8:22","nodeType":"VariableDeclaration","scope":3575,"src":"1254:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3571,"name":"uint","nodeType":"ElementaryTypeName","src":"1254:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1141:132:22"},"returnParameters":{"id":3574,"nodeType":"ParameterList","parameters":[],"src":"1282:0:22"},"scope":3576,"src":"1082:201:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3577,"src":"62:1223:22","usedErrors":[]}],"src":"0:1286:22"},"id":22},"contracts/TokenPaymaster.sol":{"ast":{"absolutePath":"contracts/TokenPaymaster.sol","exportedSymbols":{"BasePaymaster":[199],"Context":[2102],"GsnEip712Library":[1306],"GsnTypes":[1334],"GsnUtils":[1381],"IERC20":[2080],"IForwarder":[388],"IPaymaster":[461],"IRelayHub":[737],"IRelayRecipient":[766],"IStakeManager":[930],"IUniswapV2Router01":[3488],"IUniswapV2Router02":[3576],"Math":[2868],"MinLibBytes":[1496],"Ownable":[2002],"SafeMath":[3180],"TokenPaymaster":[4184]},"id":4185,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3578,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"31:23:23"},{"id":3579,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"55:33:23"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3580,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4185,"sourceUnit":2081,"src":"90:56:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/forwarder/IForwarder.sol","file":"@opengsn/contracts/src/forwarder/IForwarder.sol","id":3581,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4185,"sourceUnit":389,"src":"148:57:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/BasePaymaster.sol","file":"@opengsn/contracts/src/BasePaymaster.sol","id":3582,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4185,"sourceUnit":200,"src":"206:50:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@opengsn/contracts/src/utils/GsnTypes.sol","file":"@opengsn/contracts/src/utils/GsnTypes.sol","id":3583,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4185,"sourceUnit":1335,"src":"257:51:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":3584,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4185,"sourceUnit":2869,"src":"310:53:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol","file":"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol","id":3585,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4185,"sourceUnit":3577,"src":"365:75:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3587,"name":"BasePaymaster","nodeType":"IdentifierPath","referencedDeclaration":199,"src":"758:13:23"},"id":3588,"nodeType":"InheritanceSpecifier","src":"758:13:23"}],"canonicalName":"TokenPaymaster","contractDependencies":[],"contractKind":"contract","documentation":{"id":3586,"nodeType":"StructuredDocumentation","src":"444:286:23","text":" A Token-based paymaster.\n - each request is paid for by the caller.\n - acceptRelayedCall - verify the caller can pay for the request in tokens.\n - preRelayedCall - pre-pay the maximum possible price for the tx\n - postRelayedCall - refund the caller for the unused gas"},"fullyImplemented":true,"id":4184,"linearizedBaseContracts":[4184,199,2002,2102,461],"name":"TokenPaymaster","nameLocation":"740:14:23","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[460],"body":{"id":3596,"nodeType":"Block","src":"861:56:23","statements":[{"expression":{"hexValue":"322e322e302b6f70656e67736e2e746f6b656e2e697061796d6173746572","id":3594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"878:32:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_fbf017b3cd9e8fa1cbe86db0550c33e3df6ab29d8594dc69bbf3f604cb864136","typeString":"literal_string \"2.2.0+opengsn.token.ipaymaster\""},"value":"2.2.0+opengsn.token.ipaymaster"},"functionReturnParameters":3593,"id":3595,"nodeType":"Return","src":"871:39:23"}]},"functionSelector":"921276ea","id":3597,"implemented":true,"kind":"function","modifiers":[],"name":"versionPaymaster","nameLocation":"788:16:23","nodeType":"FunctionDefinition","overrides":{"id":3590,"nodeType":"OverrideSpecifier","overrides":[],"src":"816:8:23"},"parameters":{"id":3589,"nodeType":"ParameterList","parameters":[],"src":"804:2:23"},"returnParameters":{"id":3593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3597,"src":"847:13:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3591,"name":"string","nodeType":"ElementaryTypeName","src":"847:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"846:15:23"},"scope":4184,"src":"779:138:23","stateMutability":"view","virtual":true,"visibility":"external"},{"constant":false,"functionSelector":"ad12e50e","id":3600,"mutability":"mutable","name":"gasUsedByPost","nameLocation":"985:13:23","nodeType":"VariableDeclaration","scope":4184,"src":"970:36:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3598,"name":"uint256","nodeType":"ElementaryTypeName","src":"970:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3830303030","id":3599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1001:5:23","typeDescriptions":{"typeIdentifier":"t_rational_80000_by_1","typeString":"int_const 80000"},"value":"80000"},"visibility":"public"},{"constant":false,"functionSelector":"be37757a","id":3603,"mutability":"mutable","name":"minGas","nameLocation":"1058:6:23","nodeType":"VariableDeclaration","scope":4184,"src":"1043:30:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3601,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343030303030","id":3602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1067:6:23","typeDescriptions":{"typeIdentifier":"t_rational_400000_by_1","typeString":"int_const 400000"},"value":"400000"},"visibility":"public"},{"constant":false,"functionSelector":"c5bb8758","id":3606,"mutability":"mutable","name":"minBalance","nameLocation":"1094:10:23","nodeType":"VariableDeclaration","scope":4184,"src":"1079:37:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3604,"name":"uint256","nodeType":"ElementaryTypeName","src":"1079:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e38","id":3605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1107:9:23","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_800000000000000000_by_1","typeString":"int_const 800000000000000000"},"value":"0.8"},"visibility":"public"},{"constant":false,"id":3608,"mutability":"mutable","name":"_fee","nameLocation":"1138:4:23","nodeType":"VariableDeclaration","scope":4184,"src":"1122:20:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3607,"name":"uint256","nodeType":"ElementaryTypeName","src":"1122:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"functionSelector":"d4b83992","id":3610,"mutability":"mutable","name":"target","nameLocation":"1163:6:23","nodeType":"VariableDeclaration","scope":4184,"src":"1148:21:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3609,"name":"address","nodeType":"ElementaryTypeName","src":"1148:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"id":3612,"mutability":"mutable","name":"_paymentToken","nameLocation":"1191:13:23","nodeType":"VariableDeclaration","scope":4184,"src":"1175:29:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3611,"name":"address","nodeType":"ElementaryTypeName","src":"1175:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":3614,"mutability":"mutable","name":"_pause","nameLocation":"1224:6:23","nodeType":"VariableDeclaration","scope":4184,"src":"1211:19:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3613,"name":"bool","nodeType":"ElementaryTypeName","src":"1211:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"constant":false,"id":3617,"mutability":"immutable","name":"_router","nameLocation":"1274:7:23","nodeType":"VariableDeclaration","scope":4184,"src":"1237:44:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"},"typeName":{"id":3616,"nodeType":"UserDefinedTypeName","pathNode":{"id":3615,"name":"IUniswapV2Router02","nodeType":"IdentifierPath","referencedDeclaration":3576,"src":"1237:18:23"},"referencedDeclaration":3576,"src":"1237:18:23","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"visibility":"private"},{"constant":false,"id":3621,"mutability":"mutable","name":"_isTokenWhitelisted","nameLocation":"1320:19:23","nodeType":"VariableDeclaration","scope":4184,"src":"1287:52:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3620,"keyType":{"id":3618,"name":"address","nodeType":"ElementaryTypeName","src":"1295:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1287:24:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":3619,"name":"bool","nodeType":"ElementaryTypeName","src":"1306:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"body":{"id":3657,"nodeType":"Block","src":"1498:184:23","statements":[{"expression":{"id":3639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3635,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"1508:7:23","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3637,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"1537:13:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3636,"name":"IUniswapV2Router02","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"1518:18:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUniswapV2Router02_$3576_$","typeString":"type(contract IUniswapV2Router02)"}},"id":3638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1518:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"src":"1508:43:23","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"id":3640,"nodeType":"ExpressionStatement","src":"1508:43:23"},{"expression":{"id":3643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3641,"name":"_paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"1561:13:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3642,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3627,"src":"1577:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1561:28:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3644,"nodeType":"ExpressionStatement","src":"1561:28:23"},{"expression":{"id":3647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3645,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3608,"src":"1599:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3646,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"1606:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1599:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3648,"nodeType":"ExpressionStatement","src":"1599:10:23"},{"expression":{"arguments":[{"id":3650,"name":"forwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"1639:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3649,"name":"setTrustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126,"src":"1619:19:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1619:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3652,"nodeType":"ExpressionStatement","src":"1619:30:23"},{"expression":{"arguments":[{"id":3654,"name":"hub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3632,"src":"1671:3:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}],"id":3653,"name":"setRelayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"1659:11:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IRelayHub_$737_$returns$__$","typeString":"function (contract IRelayHub)"}},"id":3655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1659:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3656,"nodeType":"ExpressionStatement","src":"1659:16:23"}]},"id":3658,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3623,"mutability":"mutable","name":"uniswapRouter","nameLocation":"1375:13:23","nodeType":"VariableDeclaration","scope":3658,"src":"1367:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3622,"name":"address","nodeType":"ElementaryTypeName","src":"1367:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3625,"mutability":"mutable","name":"forwarder","nameLocation":"1407:9:23","nodeType":"VariableDeclaration","scope":3658,"src":"1399:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3624,"name":"address","nodeType":"ElementaryTypeName","src":"1399:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3627,"mutability":"mutable","name":"paymentToken","nameLocation":"1435:12:23","nodeType":"VariableDeclaration","scope":3658,"src":"1427:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3626,"name":"address","nodeType":"ElementaryTypeName","src":"1427:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3629,"mutability":"mutable","name":"fee","nameLocation":"1465:3:23","nodeType":"VariableDeclaration","scope":3658,"src":"1457:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3628,"name":"uint256","nodeType":"ElementaryTypeName","src":"1457:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3632,"mutability":"mutable","name":"hub","nameLocation":"1488:3:23","nodeType":"VariableDeclaration","scope":3658,"src":"1478:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"},"typeName":{"id":3631,"nodeType":"UserDefinedTypeName","pathNode":{"id":3630,"name":"IRelayHub","nodeType":"IdentifierPath","referencedDeclaration":737,"src":"1478:9:23"},"referencedDeclaration":737,"src":"1478:9:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"visibility":"internal"}],"src":"1357:140:23"},"returnParameters":{"id":3634,"nodeType":"ParameterList","parameters":[],"src":"1498:0:23"},"scope":4184,"src":"1346:336:23","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":3676,"nodeType":"Block","src":"1751:96:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3666,"name":"_minBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"1769:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1783:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1769:15:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57726f6e67206d696e2062616c616e6365","id":3669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1786:19:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c","typeString":"literal_string \"Wrong min balance\""},"value":"Wrong min balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c","typeString":"literal_string \"Wrong min balance\""}],"id":3665,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1761:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1761:45:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3671,"nodeType":"ExpressionStatement","src":"1761:45:23"},{"expression":{"id":3674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3672,"name":"minBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3606,"src":"1816:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3673,"name":"_minBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"1829:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1816:24:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3675,"nodeType":"ExpressionStatement","src":"1816:24:23"}]},"functionSelector":"c91d956c","id":3677,"implemented":true,"kind":"function","modifiers":[{"id":3663,"kind":"modifierInvocation","modifierName":{"id":3662,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"1741:9:23"},"nodeType":"ModifierInvocation","src":"1741:9:23"}],"name":"setMinBalance","nameLocation":"1697:13:23","nodeType":"FunctionDefinition","parameters":{"id":3661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3660,"mutability":"mutable","name":"_minBalance","nameLocation":"1719:11:23","nodeType":"VariableDeclaration","scope":3677,"src":"1711:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3659,"name":"uint256","nodeType":"ElementaryTypeName","src":"1711:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1710:21:23"},"returnParameters":{"id":3664,"nodeType":"ParameterList","parameters":[],"src":"1751:0:23"},"scope":4184,"src":"1688:159:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3698,"nodeType":"Block","src":"1919:113:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3685,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3679,"src":"1937:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1961:1:23","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":3687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1953:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3686,"name":"address","nodeType":"ElementaryTypeName","src":"1953:7:23","typeDescriptions":{}}},"id":3689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1953:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1937:26:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57726f6e67205061796d656e7420546f6b656e","id":3691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1965:21:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a","typeString":"literal_string \"Wrong Payment Token\""},"value":"Wrong Payment Token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a","typeString":"literal_string \"Wrong Payment Token\""}],"id":3684,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1929:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1929:58:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3693,"nodeType":"ExpressionStatement","src":"1929:58:23"},{"expression":{"id":3696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3694,"name":"_paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"1997:13:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3695,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3679,"src":"2013:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1997:28:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3697,"nodeType":"ExpressionStatement","src":"1997:28:23"}]},"functionSelector":"6a326ab1","id":3699,"implemented":true,"kind":"function","modifiers":[{"id":3682,"kind":"modifierInvocation","modifierName":{"id":3681,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"1909:9:23"},"nodeType":"ModifierInvocation","src":"1909:9:23"}],"name":"setPaymentToken","nameLocation":"1862:15:23","nodeType":"FunctionDefinition","parameters":{"id":3680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3679,"mutability":"mutable","name":"paymentToken","nameLocation":"1886:12:23","nodeType":"VariableDeclaration","scope":3699,"src":"1878:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3678,"name":"address","nodeType":"ElementaryTypeName","src":"1878:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1877:22:23"},"returnParameters":{"id":3683,"nodeType":"ParameterList","parameters":[],"src":"1919:0:23"},"scope":4184,"src":"1853:179:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3710,"nodeType":"Block","src":"2086:27:23","statements":[{"expression":{"id":3708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3706,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3608,"src":"2096:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3707,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3701,"src":"2103:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2096:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3709,"nodeType":"ExpressionStatement","src":"2096:10:23"}]},"functionSelector":"69fe0e2d","id":3711,"implemented":true,"kind":"function","modifiers":[{"id":3704,"kind":"modifierInvocation","modifierName":{"id":3703,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2076:9:23"},"nodeType":"ModifierInvocation","src":"2076:9:23"}],"name":"setFee","nameLocation":"2047:6:23","nodeType":"FunctionDefinition","parameters":{"id":3702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3701,"mutability":"mutable","name":"fee","nameLocation":"2062:3:23","nodeType":"VariableDeclaration","scope":3711,"src":"2054:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3700,"name":"uint256","nodeType":"ElementaryTypeName","src":"2054:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2053:13:23"},"returnParameters":{"id":3705,"nodeType":"ParameterList","parameters":[],"src":"2086:0:23"},"scope":4184,"src":"2038:75:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3736,"nodeType":"Block","src":"2193:115:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3721,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"2211:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2228:1:23","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":3723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2220:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3722,"name":"address","nodeType":"ElementaryTypeName","src":"2220:7:23","typeDescriptions":{}}},"id":3725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2220:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2211:19:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e20616464726573732069732030","id":3727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2232:20:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08","typeString":"literal_string \"Token address is 0\""},"value":"Token address is 0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08","typeString":"literal_string \"Token address is 0\""}],"id":3720,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2203:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2203:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3729,"nodeType":"ExpressionStatement","src":"2203:50:23"},{"expression":{"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3730,"name":"_isTokenWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"2263:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3732,"indexExpression":{"id":3731,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"2283:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2263:26:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3733,"name":"whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3715,"src":"2292:9:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2263:38:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3735,"nodeType":"ExpressionStatement","src":"2263:38:23"}]},"functionSelector":"0ffb1d8b","id":3737,"implemented":true,"kind":"function","modifiers":[{"id":3718,"kind":"modifierInvocation","modifierName":{"id":3717,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2183:9:23"},"nodeType":"ModifierInvocation","src":"2183:9:23"}],"name":"whitelistToken","nameLocation":"2128:14:23","nodeType":"FunctionDefinition","parameters":{"id":3716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3713,"mutability":"mutable","name":"token","nameLocation":"2151:5:23","nodeType":"VariableDeclaration","scope":3737,"src":"2143:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3712,"name":"address","nodeType":"ElementaryTypeName","src":"2143:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3715,"mutability":"mutable","name":"whitelist","nameLocation":"2163:9:23","nodeType":"VariableDeclaration","scope":3737,"src":"2158:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3714,"name":"bool","nodeType":"ElementaryTypeName","src":"2158:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2142:31:23"},"returnParameters":{"id":3719,"nodeType":"ParameterList","parameters":[],"src":"2193:0:23"},"scope":4184,"src":"2119:189:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3748,"nodeType":"Block","src":"2385:50:23","statements":[{"expression":{"baseExpression":{"id":3744,"name":"_isTokenWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"2402:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3746,"indexExpression":{"id":3745,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"2422:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2402:26:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3743,"id":3747,"nodeType":"Return","src":"2395:33:23"}]},"functionSelector":"b5af090f","id":3749,"implemented":true,"kind":"function","modifiers":[],"name":"isTokenWhitelisted","nameLocation":"2323:18:23","nodeType":"FunctionDefinition","parameters":{"id":3740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3739,"mutability":"mutable","name":"token","nameLocation":"2350:5:23","nodeType":"VariableDeclaration","scope":3749,"src":"2342:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3738,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2341:15:23"},"returnParameters":{"id":3743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3742,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3749,"src":"2379:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3741,"name":"bool","nodeType":"ElementaryTypeName","src":"2379:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2378:6:23"},"scope":4184,"src":"2314:121:23","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":3760,"nodeType":"Block","src":"2510:47:23","statements":[{"expression":{"id":3758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3756,"name":"gasUsedByPost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3600,"src":"2520:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3757,"name":"_gasUsedByPost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3751,"src":"2536:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2520:30:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3759,"nodeType":"ExpressionStatement","src":"2520:30:23"}]},"functionSelector":"ae4f51cb","id":3761,"implemented":true,"kind":"function","modifiers":[{"id":3754,"kind":"modifierInvocation","modifierName":{"id":3753,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2500:9:23"},"nodeType":"ModifierInvocation","src":"2500:9:23"}],"name":"setGasUsedByPost","nameLocation":"2450:16:23","nodeType":"FunctionDefinition","parameters":{"id":3752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3751,"mutability":"mutable","name":"_gasUsedByPost","nameLocation":"2475:14:23","nodeType":"VariableDeclaration","scope":3761,"src":"2467:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3750,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2466:24:23"},"returnParameters":{"id":3755,"nodeType":"ParameterList","parameters":[],"src":"2510:0:23"},"scope":4184,"src":"2441:116:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3772,"nodeType":"Block","src":"2618:33:23","statements":[{"expression":{"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3768,"name":"minGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3603,"src":"2628:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3769,"name":"_minGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3763,"src":"2637:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2628:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3771,"nodeType":"ExpressionStatement","src":"2628:16:23"}]},"functionSelector":"ad80e451","id":3773,"implemented":true,"kind":"function","modifiers":[{"id":3766,"kind":"modifierInvocation","modifierName":{"id":3765,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2608:9:23"},"nodeType":"ModifierInvocation","src":"2608:9:23"}],"name":"setMinGas","nameLocation":"2572:9:23","nodeType":"FunctionDefinition","parameters":{"id":3764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3763,"mutability":"mutable","name":"_minGas","nameLocation":"2590:7:23","nodeType":"VariableDeclaration","scope":3773,"src":"2582:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3762,"name":"uint256","nodeType":"ElementaryTypeName","src":"2582:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2581:17:23"},"returnParameters":{"id":3767,"nodeType":"ParameterList","parameters":[],"src":"2618:0:23"},"scope":4184,"src":"2563:88:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3784,"nodeType":"Block","src":"2712:33:23","statements":[{"expression":{"id":3782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3780,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"2722:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3781,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3775,"src":"2731:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2722:16:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3783,"nodeType":"ExpressionStatement","src":"2722:16:23"}]},"functionSelector":"776d1a01","id":3785,"implemented":true,"kind":"function","modifiers":[{"id":3778,"kind":"modifierInvocation","modifierName":{"id":3777,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2702:9:23"},"nodeType":"ModifierInvocation","src":"2702:9:23"}],"name":"setTarget","nameLocation":"2666:9:23","nodeType":"FunctionDefinition","parameters":{"id":3776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3775,"mutability":"mutable","name":"_target","nameLocation":"2684:7:23","nodeType":"VariableDeclaration","scope":3785,"src":"2676:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3774,"name":"address","nodeType":"ElementaryTypeName","src":"2676:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2675:17:23"},"returnParameters":{"id":3779,"nodeType":"ParameterList","parameters":[],"src":"2712:0:23"},"scope":4184,"src":"2657:88:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3795,"nodeType":"Block","src":"2793:33:23","statements":[{"expression":{"id":3793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3790,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3614,"src":"2803:6:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2812:7:23","subExpression":{"id":3791,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3614,"src":"2813:6:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2803:16:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3794,"nodeType":"ExpressionStatement","src":"2803:16:23"}]},"functionSelector":"c4ae3168","id":3796,"implemented":true,"kind":"function","modifiers":[{"id":3788,"kind":"modifierInvocation","modifierName":{"id":3787,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2783:9:23"},"nodeType":"ModifierInvocation","src":"2783:9:23"}],"name":"togglePause","nameLocation":"2760:11:23","nodeType":"FunctionDefinition","parameters":{"id":3786,"nodeType":"ParameterList","parameters":[],"src":"2771:2:23"},"returnParameters":{"id":3789,"nodeType":"ParameterList","parameters":[],"src":"2793:0:23"},"scope":4184,"src":"2751:75:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3818,"nodeType":"Block","src":"2932:103:23","statements":[{"assignments":[3807],"declarations":[{"constant":false,"id":3807,"mutability":"mutable","name":"amountOut","nameLocation":"2950:9:23","nodeType":"VariableDeclaration","scope":3818,"src":"2942:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3806,"name":"uint256","nodeType":"ElementaryTypeName","src":"2942:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3815,"initialValue":{"baseExpression":{"arguments":[{"id":3810,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3798,"src":"2984:8:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3811,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3801,"src":"2994:4:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"id":3808,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"2962:7:23","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"id":3809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsOut","nodeType":"MemberAccess","referencedDeclaration":3476,"src":"2962:21:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256,address[] memory) view external returns (uint256[] memory)"}},"id":3812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2962:37:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3814,"indexExpression":{"hexValue":"31","id":3813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3000:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2962:40:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2942:60:23"},{"expression":{"id":3816,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"3019:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3805,"id":3817,"nodeType":"Return","src":"3012:16:23"}]},"functionSelector":"6a829418","id":3819,"implemented":true,"kind":"function","modifiers":[],"name":"getTokenToEthOutput","nameLocation":"2841:19:23","nodeType":"FunctionDefinition","parameters":{"id":3802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3798,"mutability":"mutable","name":"amountIn","nameLocation":"2869:8:23","nodeType":"VariableDeclaration","scope":3819,"src":"2861:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3797,"name":"uint256","nodeType":"ElementaryTypeName","src":"2861:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3801,"mutability":"mutable","name":"path","nameLocation":"2896:4:23","nodeType":"VariableDeclaration","scope":3819,"src":"2879:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3799,"name":"address","nodeType":"ElementaryTypeName","src":"2879:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3800,"nodeType":"ArrayTypeName","src":"2879:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2860:41:23"},"returnParameters":{"id":3805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3819,"src":"2923:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3803,"name":"uint256","nodeType":"ElementaryTypeName","src":"2923:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2922:9:23"},"scope":4184,"src":"2832:203:23","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3849,"nodeType":"Block","src":"3135:92:23","statements":[{"expression":{"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3829,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"3145:4:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"32","id":3833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3166:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":3832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3152:13:23","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":3830,"name":"address","nodeType":"ElementaryTypeName","src":"3156:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3831,"nodeType":"ArrayTypeName","src":"3156:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":3834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3152:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"3145:23:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3836,"nodeType":"ExpressionStatement","src":"3145:23:23"},{"expression":{"id":3841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3837,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"3178:4:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3839,"indexExpression":{"hexValue":"30","id":3838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3183: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":"3178:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3840,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"3188:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3178:16:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3842,"nodeType":"ExpressionStatement","src":"3178:16:23"},{"expression":{"id":3847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3843,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"3204:4:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3845,"indexExpression":{"hexValue":"31","id":3844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3209: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":"3204:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3846,"name":"token2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3823,"src":"3214:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3204:16:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3848,"nodeType":"ExpressionStatement","src":"3204:16:23"}]},"id":3850,"implemented":true,"kind":"function","modifiers":[],"name":"_getPath","nameLocation":"3050:8:23","nodeType":"FunctionDefinition","parameters":{"id":3824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3821,"mutability":"mutable","name":"token1","nameLocation":"3067:6:23","nodeType":"VariableDeclaration","scope":3850,"src":"3059:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3820,"name":"address","nodeType":"ElementaryTypeName","src":"3059:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3823,"mutability":"mutable","name":"token2","nameLocation":"3083:6:23","nodeType":"VariableDeclaration","scope":3850,"src":"3075:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3822,"name":"address","nodeType":"ElementaryTypeName","src":"3075:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3058:32:23"},"returnParameters":{"id":3828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3827,"mutability":"mutable","name":"path","nameLocation":"3129:4:23","nodeType":"VariableDeclaration","scope":3850,"src":"3112:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3825,"name":"address","nodeType":"ElementaryTypeName","src":"3112:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3826,"nodeType":"ArrayTypeName","src":"3112:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3111:23:23"},"scope":4184,"src":"3041:186:23","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":3861,"nodeType":"Block","src":"3299:45:23","statements":[{"expression":{"components":[{"id":3857,"name":"_paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"3317:13:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3858,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3608,"src":"3332:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3859,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3316:21:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":3856,"id":3860,"nodeType":"Return","src":"3309:28:23"}]},"functionSelector":"ad02b07d","id":3862,"implemented":true,"kind":"function","modifiers":[],"name":"getPaymentData","nameLocation":"3242:14:23","nodeType":"FunctionDefinition","parameters":{"id":3851,"nodeType":"ParameterList","parameters":[],"src":"3256:2:23"},"returnParameters":{"id":3856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3862,"src":"3281:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3852,"name":"address","nodeType":"ElementaryTypeName","src":"3281:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3862,"src":"3290:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3854,"name":"uint256","nodeType":"ElementaryTypeName","src":"3290:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3280:18:23"},"scope":4184,"src":"3233:111:23","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[442],"body":{"id":4081,"nodeType":"Block","src":"3648:1684:23","statements":[{"expression":{"arguments":[{"id":3880,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"3675:12:23","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}],"id":3879,"name":"_verifyForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"3658:16:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_RelayRequest_$1333_calldata_ptr_$returns$__$","typeString":"function (struct GsnTypes.RelayRequest calldata) view"}},"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3658:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3882,"nodeType":"ExpressionStatement","src":"3658:30:23"},{"expression":{"arguments":[{"id":3885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3706:7:23","subExpression":{"id":3884,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3614,"src":"3707:6:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5377617020706175736564","id":3886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3715:13:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e","typeString":"literal_string \"Swap paused\""},"value":"Swap paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e","typeString":"literal_string \"Swap paused\""}],"id":3883,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3698:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3698:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3888,"nodeType":"ExpressionStatement","src":"3698:31:23"},{"assignments":[3893],"declarations":[{"constant":false,"id":3893,"mutability":"mutable","name":"request","nameLocation":"3774:7:23","nodeType":"VariableDeclaration","scope":4081,"src":"3739:42:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest"},"typeName":{"id":3892,"nodeType":"UserDefinedTypeName","pathNode":{"id":3891,"name":"IForwarder.ForwardRequest","nodeType":"IdentifierPath","referencedDeclaration":318,"src":"3739:25:23"},"referencedDeclaration":318,"src":"3739:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_storage_ptr","typeString":"struct IForwarder.ForwardRequest"}},"visibility":"internal"}],"id":3896,"initialValue":{"expression":{"id":3894,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"3784:12:23","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":3895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"request","nodeType":"MemberAccess","referencedDeclaration":1329,"src":"3784:20:23","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"}},"nodeType":"VariableDeclarationStatement","src":"3739:65:23"},{"assignments":[3901],"declarations":[{"constant":false,"id":3901,"mutability":"mutable","name":"relayData","nameLocation":"3840:9:23","nodeType":"VariableDeclaration","scope":4081,"src":"3814:35:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_memory_ptr","typeString":"struct GsnTypes.RelayData"},"typeName":{"id":3900,"nodeType":"UserDefinedTypeName","pathNode":{"id":3899,"name":"GsnTypes.RelayData","nodeType":"IdentifierPath","referencedDeclaration":1326,"src":"3814:18:23"},"referencedDeclaration":1326,"src":"3814:18:23","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_storage_ptr","typeString":"struct GsnTypes.RelayData"}},"visibility":"internal"}],"id":3904,"initialValue":{"expression":{"id":3902,"name":"relayRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"3852:12:23","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest calldata"}},"id":3903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"relayData","nodeType":"MemberAccess","referencedDeclaration":1332,"src":"3852:22:23","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}},"nodeType":"VariableDeclarationStatement","src":"3814:60:23"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3906,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3893,"src":"3893:7:23","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"}},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":307,"src":"3893:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3908,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"3907:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3893:20:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e6b6e6f776e20746172676574","id":3910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3915:16:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189","typeString":"literal_string \"Unknown target\""},"value":"Unknown target"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189","typeString":"literal_string \"Unknown target\""}],"id":3905,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3885:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3885:47:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3912,"nodeType":"ExpressionStatement","src":"3885:47:23"},{"assignments":[3914,3916],"declarations":[{"constant":false,"id":3914,"mutability":"mutable","name":"tokenAddress","nameLocation":"3952:12:23","nodeType":"VariableDeclaration","scope":4081,"src":"3944:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3913,"name":"address","nodeType":"ElementaryTypeName","src":"3944:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3916,"mutability":"mutable","name":"amount","nameLocation":"3974:6:23","nodeType":"VariableDeclaration","scope":4081,"src":"3966:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3915,"name":"uint256","nodeType":"ElementaryTypeName","src":"3966:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3929,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":3919,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3893,"src":"3995:7:23","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"}},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","referencedDeclaration":315,"src":"3995:12:23","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"3995:16:23","startExpression":{"hexValue":"34","id":3921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4008:1:23","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":3924,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4014:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3923,"name":"address","nodeType":"ElementaryTypeName","src":"4014:7:23","typeDescriptions":{}}},{"id":3926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4023:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3925,"name":"uint256","nodeType":"ElementaryTypeName","src":"4023:7:23","typeDescriptions":{}}}],"id":3927,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4013:18:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256))"}],"expression":{"id":3917,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3984:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3984:10:23","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":3928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3984:48:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$","typeString":"tuple(address payable,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3943:89:23"},{"expression":{"arguments":[{"baseExpression":{"id":3931,"name":"_isTokenWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"4050:19:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3933,"indexExpression":{"id":3932,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"4070:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4050:33:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e206e6f742077686974656c6973746564","id":3934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4085:23:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312","typeString":"literal_string \"Token not whitelisted\""},"value":"Token not whitelisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312","typeString":"literal_string \"Token not whitelisted\""}],"id":3930,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4042:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4042:67:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3936,"nodeType":"ExpressionStatement","src":"4042:67:23"},{"assignments":[3938],"declarations":[{"constant":false,"id":3938,"mutability":"mutable","name":"payer","nameLocation":"4128:5:23","nodeType":"VariableDeclaration","scope":4081,"src":"4120:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3937,"name":"address","nodeType":"ElementaryTypeName","src":"4120:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3941,"initialValue":{"expression":{"id":3939,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3893,"src":"4136:7:23","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"}},"id":3940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":305,"src":"4136:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4120:28:23"},{"assignments":[3944],"declarations":[{"constant":false,"id":3944,"mutability":"mutable","name":"paymentToken","nameLocation":"4166:12:23","nodeType":"VariableDeclaration","scope":4081,"src":"4159:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"},"typeName":{"id":3943,"nodeType":"UserDefinedTypeName","pathNode":{"id":3942,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":2080,"src":"4159:6:23"},"referencedDeclaration":2080,"src":"4159:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"visibility":"internal"}],"id":3948,"initialValue":{"arguments":[{"id":3946,"name":"_paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"4188:13:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3945,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"4181:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2080_$","typeString":"type(contract IERC20)"}},"id":3947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4181:21:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"4159:43:23"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3949,"name":"_paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"4216:13:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3950,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"4233:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4216:29:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4027,"nodeType":"Block","src":"4480:416:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3981,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"4525:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3982,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"4532:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3979,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"4502:12:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"id":3980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2057,"src":"4502:22:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":3983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4502:37:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3984,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3608,"src":"4543:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4502:45:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4665653a204e6f7420656e6f75676820616c6c6f77616e6365","id":3986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4549:27:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0","typeString":"literal_string \"Fee: Not enough allowance\""},"value":"Fee: Not enough allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0","typeString":"literal_string \"Fee: Not enough allowance\""}],"id":3978,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4494:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4494:83:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3988,"nodeType":"ExpressionStatement","src":"4494:83:23"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3992,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"4622:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3990,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"4599:12:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"id":3991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2037,"src":"4599:22:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4599:29:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3994,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3608,"src":"4632:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4599:37:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4665653a204e6f7420656e6f7567682062616c616e6365","id":3996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4638:25:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf","typeString":"literal_string \"Fee: Not enough balance\""},"value":"Fee: Not enough balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf","typeString":"literal_string \"Fee: Not enough balance\""}],"id":3989,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4591:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4591:73:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3998,"nodeType":"ExpressionStatement","src":"4591:73:23"},{"assignments":[4001],"declarations":[{"constant":false,"id":4001,"mutability":"mutable","name":"token","nameLocation":"4686:5:23","nodeType":"VariableDeclaration","scope":4027,"src":"4679:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"},"typeName":{"id":4000,"nodeType":"UserDefinedTypeName","pathNode":{"id":3999,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":2080,"src":"4679:6:23"},"referencedDeclaration":2080,"src":"4679:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"visibility":"internal"}],"id":4005,"initialValue":{"arguments":[{"id":4003,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"4701:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4002,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"4694:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2080_$","typeString":"type(contract IERC20)"}},"id":4004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4694:20:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"4679:35:23"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4009,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"4752:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4010,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"4759:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4007,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4001,"src":"4736:5:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"id":4008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2057,"src":"4736:15:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":4011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4736:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4012,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3916,"src":"4770:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4736:40:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7420656e6f75676820616c6c6f77616e6365","id":4014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4778:22:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc","typeString":"literal_string \"Not enough allowance\""},"value":"Not enough allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc","typeString":"literal_string \"Not enough allowance\""}],"id":4006,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4728:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4728:73:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4016,"nodeType":"ExpressionStatement","src":"4728:73:23"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4020,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"4846:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4018,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"4823:12:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"id":4019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2037,"src":"4823:22:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4823:29:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4022,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3916,"src":"4856:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4823:39:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7420656e6f7567682062616c616e6365","id":4024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4864:20:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad","typeString":"literal_string \"Not enough balance\""},"value":"Not enough balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad","typeString":"literal_string \"Not enough balance\""}],"id":4017,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4815:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4815:70:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4026,"nodeType":"ExpressionStatement","src":"4815:70:23"}]},"id":4028,"nodeType":"IfStatement","src":"4213:683:23","trueBody":{"id":3977,"nodeType":"Block","src":"4247:227:23","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3955,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"4292:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3956,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"4299:6:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3953,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"4269:12:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"id":3954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2057,"src":"4269:22:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":3957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4269:37:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3958,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3608,"src":"4310:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3959,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3916,"src":"4317:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4310:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4269:54:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4665652b616d6f756e743a204e6f7420656e6f75676820616c6c6f77616e6365","id":3962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4325:34:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d","typeString":"literal_string \"Fee+amount: Not enough allowance\""},"value":"Fee+amount: Not enough allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d","typeString":"literal_string \"Fee+amount: Not enough allowance\""}],"id":3952,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4261:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4261:99:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3964,"nodeType":"ExpressionStatement","src":"4261:99:23"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3968,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3938,"src":"4405:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3966,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"4382:12:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"id":3967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2037,"src":"4382:22:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4382:29:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3970,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3608,"src":"4415:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3971,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3916,"src":"4422:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4415:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4382:46:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4665652b616d6f756e743a204e6f7420656e6f7567682062616c616e6365","id":3974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4430:32:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2","typeString":"literal_string \"Fee+amount: Not enough balance\""},"value":"Fee+amount: Not enough balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2","typeString":"literal_string \"Fee+amount: Not enough balance\""}],"id":3965,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4374:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4374:89:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3976,"nodeType":"ExpressionStatement","src":"4374:89:23"}]}},{"assignments":[4033],"declarations":[{"constant":false,"id":4033,"mutability":"mutable","name":"path","nameLocation":"4923:4:23","nodeType":"VariableDeclaration","scope":4081,"src":"4906:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4031,"name":"address","nodeType":"ElementaryTypeName","src":"4906:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4032,"nodeType":"ArrayTypeName","src":"4906:9:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":4040,"initialValue":{"arguments":[{"id":4035,"name":"tokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"4939:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4036,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"4953:7:23","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"id":4037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"WETH","nodeType":"MemberAccess","referencedDeclaration":3192,"src":"4953:12:23","typeDescriptions":{"typeIdentifier":"t_function_external_pure$__$returns$_t_address_$","typeString":"function () pure external returns (address)"}},"id":4038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4953:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4034,"name":"_getPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3850,"src":"4930:8:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address,address) pure returns (address[] memory)"}},"id":4039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4930:38:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4906:62:23"},{"assignments":[4042],"declarations":[{"constant":false,"id":4042,"mutability":"mutable","name":"amountOut","nameLocation":"4986:9:23","nodeType":"VariableDeclaration","scope":4081,"src":"4978:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4041,"name":"uint256","nodeType":"ElementaryTypeName","src":"4978:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4047,"initialValue":{"arguments":[{"id":4044,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3916,"src":"5018:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4045,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4033,"src":"5026:4:23","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":4043,"name":"getTokenToEthOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3819,"src":"4998:19:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,address[] memory) view returns (uint256)"}},"id":4046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4998:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4978:53:23"},{"assignments":[4049],"declarations":[{"constant":false,"id":4049,"mutability":"mutable","name":"ethPrecharge","nameLocation":"5050:12:23","nodeType":"VariableDeclaration","scope":4081,"src":"5042:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4048,"name":"uint256","nodeType":"ElementaryTypeName","src":"5042:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4055,"initialValue":{"arguments":[{"id":4052,"name":"maxPossibleGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3871,"src":"5090:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4053,"name":"relayData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"5106:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_memory_ptr","typeString":"struct GsnTypes.RelayData memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_RelayData_$1326_memory_ptr","typeString":"struct GsnTypes.RelayData memory"}],"expression":{"id":4050,"name":"relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"5065:8:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"id":4051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"calculateCharge","nodeType":"MemberAccess","referencedDeclaration":665,"src":"5065:24:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_struct$_RelayData_$1326_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,struct GsnTypes.RelayData memory) view external returns (uint256)"}},"id":4054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5065:51:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5042:74:23"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4057,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4042,"src":"5139:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4058,"name":"ethPrecharge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4049,"src":"5151:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5139:24:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7420656e6f75676820746f2070617920666f72207478","id":4060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5165:26:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e","typeString":"literal_string \"Not enough to pay for tx\""},"value":"Not enough to pay for tx"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e","typeString":"literal_string \"Not enough to pay for tx\""}],"id":4056,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5131:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5131:61:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4062,"nodeType":"ExpressionStatement","src":"5131:61:23"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4064,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3893,"src":"5211:7:23","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"}},"id":4065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gas","nodeType":"MemberAccess","referencedDeclaration":311,"src":"5211:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4066,"name":"minGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3603,"src":"5226:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5211:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f7420656e6f75676820676173","id":4068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5234:16:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665","typeString":"literal_string \"Not enough gas\""},"value":"Not enough gas"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665","typeString":"literal_string \"Not enough gas\""}],"id":4063,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5203:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5203:48:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4070,"nodeType":"ExpressionStatement","src":"5203:48:23"},{"expression":{"components":[{"arguments":[{"expression":{"id":4073,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3893,"src":"5280:7:23","typeDescriptions":{"typeIdentifier":"t_struct$_ForwardRequest_$318_calldata_ptr","typeString":"struct IForwarder.ForwardRequest calldata"}},"id":4074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":305,"src":"5280:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4075,"name":"ethPrecharge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4049,"src":"5294:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4076,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4042,"src":"5308:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4071,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5269:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5269:10:23","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5269:49:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"74727565","id":4078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5320:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"id":4079,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5268:57:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bool_$","typeString":"tuple(bytes memory,bool)"}},"functionReturnParameters":3878,"id":4080,"nodeType":"Return","src":"5261:64:23"}]},"functionSelector":"00be5dd4","id":4082,"implemented":true,"kind":"function","modifiers":[],"name":"preRelayedCall","nameLocation":"3360:14:23","nodeType":"FunctionDefinition","overrides":{"id":3873,"nodeType":"OverrideSpecifier","overrides":[],"src":"3562:8:23"},"parameters":{"id":3872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3865,"mutability":"mutable","name":"relayRequest","nameLocation":"3415:12:23","nodeType":"VariableDeclaration","scope":4082,"src":"3384:43:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_calldata_ptr","typeString":"struct GsnTypes.RelayRequest"},"typeName":{"id":3864,"nodeType":"UserDefinedTypeName","pathNode":{"id":3863,"name":"GsnTypes.RelayRequest","nodeType":"IdentifierPath","referencedDeclaration":1333,"src":"3384:21:23"},"referencedDeclaration":1333,"src":"3384:21:23","typeDescriptions":{"typeIdentifier":"t_struct$_RelayRequest_$1333_storage_ptr","typeString":"struct GsnTypes.RelayRequest"}},"visibility":"internal"},{"constant":false,"id":3867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4082,"src":"3437:14:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3866,"name":"bytes","nodeType":"ElementaryTypeName","src":"3437:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4082,"src":"3475:14:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3868,"name":"bytes","nodeType":"ElementaryTypeName","src":"3475:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3871,"mutability":"mutable","name":"maxPossibleGas","nameLocation":"3524:14:23","nodeType":"VariableDeclaration","scope":4082,"src":"3516:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3870,"name":"uint256","nodeType":"ElementaryTypeName","src":"3516:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3374:170:23"},"returnParameters":{"id":3878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3875,"mutability":"mutable","name":"context","nameLocation":"3609:7:23","nodeType":"VariableDeclaration","scope":4082,"src":"3596:20:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3874,"name":"bytes","nodeType":"ElementaryTypeName","src":"3596:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3877,"mutability":"mutable","name":"revertOnRecipientRevert","nameLocation":"3623:23:23","nodeType":"VariableDeclaration","scope":4082,"src":"3618:28:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3876,"name":"bool","nodeType":"ElementaryTypeName","src":"3618:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3595:52:23"},"scope":4184,"src":"3351:1981:23","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[455],"body":{"id":4182,"nodeType":"Block","src":"5560:677:23","statements":[{"expression":{"arguments":[{"id":4098,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4086,"src":"5587:7:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f2073756363657373","id":4099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5596:12:23","typeDescriptions":{"typeIdentifier":"t_stringliteral_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23","typeString":"literal_string \"No success\""},"value":"No success"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23","typeString":"literal_string \"No success\""}],"id":4097,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5579:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5579:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4101,"nodeType":"ExpressionStatement","src":"5579:30:23"},{"assignments":[4103,4105,4107],"declarations":[{"constant":false,"id":4103,"mutability":"mutable","name":"payer","nameLocation":"5628:5:23","nodeType":"VariableDeclaration","scope":4182,"src":"5620:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4102,"name":"address","nodeType":"ElementaryTypeName","src":"5620:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4105,"mutability":"mutable","name":"ethPrecharge","nameLocation":"5643:12:23","nodeType":"VariableDeclaration","scope":4182,"src":"5635:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4104,"name":"uint256","nodeType":"ElementaryTypeName","src":"5635:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4107,"mutability":"mutable","name":"amountOut","nameLocation":"5665:9:23","nodeType":"VariableDeclaration","scope":4182,"src":"5657:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4106,"name":"uint256","nodeType":"ElementaryTypeName","src":"5657:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4119,"initialValue":{"arguments":[{"id":4110,"name":"context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4084,"src":"5689:7:23","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":4112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5699:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4111,"name":"address","nodeType":"ElementaryTypeName","src":"5699:7:23","typeDescriptions":{}}},{"id":4114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5708:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4113,"name":"uint256","nodeType":"ElementaryTypeName","src":"5708:7:23","typeDescriptions":{}}},{"id":4116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5717:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4115,"name":"uint256","nodeType":"ElementaryTypeName","src":"5717:7:23","typeDescriptions":{}}}],"id":4117,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5698:27:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(address),type(uint256),type(uint256))"}],"expression":{"id":4108,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5678:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"5678:10:23","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":4118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5678:48:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_uint256_$_t_uint256_$","typeString":"tuple(address payable,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5619:107:23"},{"assignments":[4122],"declarations":[{"constant":false,"id":4122,"mutability":"mutable","name":"_relayHub","nameLocation":"5746:9:23","nodeType":"VariableDeclaration","scope":4182,"src":"5736:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"},"typeName":{"id":4121,"nodeType":"UserDefinedTypeName","pathNode":{"id":4120,"name":"IRelayHub","nodeType":"IdentifierPath","referencedDeclaration":737,"src":"5736:9:23"},"referencedDeclaration":737,"src":"5736:9:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"visibility":"internal"}],"id":4124,"initialValue":{"id":4123,"name":"relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"5758:8:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"nodeType":"VariableDeclarationStatement","src":"5736:30:23"},{"assignments":[4126],"declarations":[{"constant":false,"id":4126,"mutability":"mutable","name":"ethActualCharge","nameLocation":"5784:15:23","nodeType":"VariableDeclaration","scope":4182,"src":"5776:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4125,"name":"uint256","nodeType":"ElementaryTypeName","src":"5776:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4134,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4129,"name":"gasUseWithoutPost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4088,"src":"5828:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4130,"name":"gasUsedByPost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3600,"src":"5848:13:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5828:33:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4132,"name":"relayData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4091,"src":"5863:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData calldata"}],"expression":{"id":4127,"name":"_relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"5802:9:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"calculateCharge","nodeType":"MemberAccess","referencedDeclaration":665,"src":"5802:25:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_struct$_RelayData_$1326_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,struct GsnTypes.RelayData memory) view external returns (uint256)"}},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5802:71:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5776:97:23"},{"assignments":[4136],"declarations":[{"constant":false,"id":4136,"mutability":"mutable","name":"hubBalance","nameLocation":"5891:10:23","nodeType":"VariableDeclaration","scope":4182,"src":"5883:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4135,"name":"uint256","nodeType":"ElementaryTypeName","src":"5883:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4144,"initialValue":{"arguments":[{"arguments":[{"id":4141,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5931:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"}],"id":4140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5923:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4139,"name":"address","nodeType":"ElementaryTypeName","src":"5923:7:23","typeDescriptions":{}}},"id":4142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5923:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4137,"name":"relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"5904:8:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"id":4138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":701,"src":"5904:18:23","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":4143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5904:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5883:54:23"},{"assignments":[4146],"declarations":[{"constant":false,"id":4146,"mutability":"mutable","name":"totalCharge","nameLocation":"5956:11:23","nodeType":"VariableDeclaration","scope":4182,"src":"5948:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4145,"name":"uint256","nodeType":"ElementaryTypeName","src":"5948:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4148,"initialValue":{"id":4147,"name":"ethActualCharge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4126,"src":"5970:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5948:37:23"},{"assignments":[4150],"declarations":[{"constant":false,"id":4150,"mutability":"mutable","name":"refund","nameLocation":"6003:6:23","nodeType":"VariableDeclaration","scope":4182,"src":"5995:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4149,"name":"uint256","nodeType":"ElementaryTypeName","src":"5995:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4154,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4151,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4107,"src":"6012:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4152,"name":"totalCharge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4146,"src":"6024:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6012:23:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5995:40:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4155,"name":"hubBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"6048:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4156,"name":"refund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4150,"src":"6061:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6048:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4158,"name":"minBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3606,"src":"6070:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6048:32:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4171,"nodeType":"IfStatement","src":"6045:134:23","trueBody":{"id":4170,"nodeType":"Block","src":"6082:97:23","statements":[{"expression":{"id":4162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4160,"name":"totalCharge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4146,"src":"6096:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4161,"name":"ethPrecharge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4105,"src":"6110:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6096:26:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4163,"nodeType":"ExpressionStatement","src":"6096:26:23"},{"expression":{"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4164,"name":"refund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4150,"src":"6136:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4165,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4107,"src":"6145:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4166,"name":"totalCharge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4146,"src":"6157:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6145:23:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6136:32:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4169,"nodeType":"ExpressionStatement","src":"6136:32:23"}]}},{"expression":{"arguments":[{"id":4175,"name":"refund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4150,"src":"6207:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":4178,"name":"payer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4103,"src":"6223:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6215:8:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":4176,"name":"address","nodeType":"ElementaryTypeName","src":"6215:8:23","stateMutability":"payable","typeDescriptions":{}}},"id":4179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6215:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":4172,"name":"_relayHub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"6188:9:23","typeDescriptions":{"typeIdentifier":"t_contract$_IRelayHub_$737","typeString":"contract IRelayHub"}},"id":4174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":617,"src":"6188:18:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_payable_$returns$__$","typeString":"function (uint256,address payable) external"}},"id":4180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6188:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4181,"nodeType":"ExpressionStatement","src":"6188:42:23"}]},"functionSelector":"76fa01c3","id":4183,"implemented":true,"kind":"function","modifiers":[{"id":4095,"kind":"modifierInvocation","modifierName":{"id":4094,"name":"relayHubOnly","nodeType":"IdentifierPath","referencedDeclaration":101,"src":"5547:12:23"},"nodeType":"ModifierInvocation","src":"5547:12:23"}],"name":"postRelayedCall","nameLocation":"5347:15:23","nodeType":"FunctionDefinition","overrides":{"id":4093,"nodeType":"OverrideSpecifier","overrides":[],"src":"5522:8:23"},"parameters":{"id":4092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4084,"mutability":"mutable","name":"context","nameLocation":"5387:7:23","nodeType":"VariableDeclaration","scope":4183,"src":"5372:22:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4083,"name":"bytes","nodeType":"ElementaryTypeName","src":"5372:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4086,"mutability":"mutable","name":"success","nameLocation":"5409:7:23","nodeType":"VariableDeclaration","scope":4183,"src":"5404:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4085,"name":"bool","nodeType":"ElementaryTypeName","src":"5404:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4088,"mutability":"mutable","name":"gasUseWithoutPost","nameLocation":"5434:17:23","nodeType":"VariableDeclaration","scope":4183,"src":"5426:25:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4087,"name":"uint256","nodeType":"ElementaryTypeName","src":"5426:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4091,"mutability":"mutable","name":"relayData","nameLocation":"5489:9:23","nodeType":"VariableDeclaration","scope":4183,"src":"5461:37:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_calldata_ptr","typeString":"struct GsnTypes.RelayData"},"typeName":{"id":4090,"nodeType":"UserDefinedTypeName","pathNode":{"id":4089,"name":"GsnTypes.RelayData","nodeType":"IdentifierPath","referencedDeclaration":1326,"src":"5461:18:23"},"referencedDeclaration":1326,"src":"5461:18:23","typeDescriptions":{"typeIdentifier":"t_struct$_RelayData_$1326_storage_ptr","typeString":"struct GsnTypes.RelayData"}},"visibility":"internal"}],"src":"5362:142:23"},"returnParameters":{"id":4096,"nodeType":"ParameterList","parameters":[],"src":"5560:0:23"},"scope":4184,"src":"5338:899:23","stateMutability":"nonpayable","virtual":true,"visibility":"external"}],"scope":4185,"src":"731:5509:23","usedErrors":[]}],"src":"31:6210:23"},"id":23},"contracts/TokenSwap.sol":{"ast":{"absolutePath":"contracts/TokenSwap.sol","exportedSymbols":{"AccessControl":[1816],"BasePaymaster":[199],"BaseRelayRecipient":[300],"Context":[2102],"ERC165":[2352],"GsnEip712Library":[1306],"GsnTypes":[1334],"GsnUtils":[1381],"IAccessControl":[1889],"IERC165":[2364],"IERC20":[2080],"IForwarder":[388],"IPaymaster":[461],"IRelayHub":[737],"IRelayRecipient":[766],"IStakeManager":[930],"IUniswapV2Router01":[3488],"IUniswapV2Router02":[3576],"Math":[2868],"MinLibBytes":[1496],"Ownable":[2002],"SafeMath":[3180],"Strings":[2328],"TokenPaymaster":[4184],"TokenSwap":[4409]},"id":4410,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4186,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"101:24:24"},{"absolutePath":"@opengsn/contracts/src/BaseRelayRecipient.sol","file":"@opengsn/contracts/src/BaseRelayRecipient.sol","id":4187,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4410,"sourceUnit":301,"src":"127:55:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":4188,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4410,"sourceUnit":2081,"src":"184:56:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","file":"@openzeppelin/contracts/access/AccessControl.sol","id":4189,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4410,"sourceUnit":1817,"src":"241:58:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol","file":"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol","id":4190,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4410,"sourceUnit":3577,"src":"301:75:24","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/TokenPaymaster.sol","file":"./TokenPaymaster.sol","id":4191,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4410,"sourceUnit":4185,"src":"379:30:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4192,"name":"BaseRelayRecipient","nodeType":"IdentifierPath","referencedDeclaration":300,"src":"433:18:24"},"id":4193,"nodeType":"InheritanceSpecifier","src":"433:18:24"}],"canonicalName":"TokenSwap","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4409,"linearizedBaseContracts":[4409,300,766],"name":"TokenSwap","nameLocation":"420:9:24","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"8863e458255c600ae3e61be347822f3ee57088c8538b68b5dd2357e682e59e19","id":4199,"name":"Received","nameLocation":"463:8:24","nodeType":"EventDefinition","parameters":{"id":4198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4195,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"480:5:24","nodeType":"VariableDeclaration","scope":4199,"src":"472:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4194,"name":"uint256","nodeType":"ElementaryTypeName","src":"472:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4197,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"495:6:24","nodeType":"VariableDeclaration","scope":4199,"src":"487:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4196,"name":"address","nodeType":"ElementaryTypeName","src":"487:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"471:31:24"},"src":"457:46:24"},{"constant":false,"id":4202,"mutability":"immutable","name":"_router","nameLocation":"545:7:24","nodeType":"VariableDeclaration","scope":4409,"src":"507:45:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"},"typeName":{"id":4201,"nodeType":"UserDefinedTypeName","pathNode":{"id":4200,"name":"IUniswapV2Router02","nodeType":"IdentifierPath","referencedDeclaration":3576,"src":"507:18:24"},"referencedDeclaration":3576,"src":"507:18:24","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"visibility":"internal"},{"constant":false,"id":4205,"mutability":"mutable","name":"_paymaster","nameLocation":"580:10:24","nodeType":"VariableDeclaration","scope":4409,"src":"556:34:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"},"typeName":{"id":4204,"nodeType":"UserDefinedTypeName","pathNode":{"id":4203,"name":"TokenPaymaster","nodeType":"IdentifierPath","referencedDeclaration":4184,"src":"556:14:24"},"referencedDeclaration":4184,"src":"556:14:24","typeDescriptions":{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"}},"visibility":"internal"},{"constant":false,"id":4207,"mutability":"mutable","name":"_sender","nameLocation":"611:7:24","nodeType":"VariableDeclaration","scope":4409,"src":"595:23:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4206,"name":"address","nodeType":"ElementaryTypeName","src":"595:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":4209,"mutability":"mutable","name":"onSwap","nameLocation":"628:6:24","nodeType":"VariableDeclaration","scope":4409,"src":"623:11:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4208,"name":"bool","nodeType":"ElementaryTypeName","src":"623:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"body":{"id":4228,"nodeType":"Block","src":"661:176:24","statements":[{"expression":{"arguments":[{"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"675:7:24","subExpression":{"id":4212,"name":"onSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"676:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e2073776170","id":4214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"684:9:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652","typeString":"literal_string \"On swap\""},"value":"On swap"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652","typeString":"literal_string \"On swap\""}],"id":4211,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"667:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"667:27:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4216,"nodeType":"ExpressionStatement","src":"667:27:24"},{"expression":{"id":4219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4217,"name":"onSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"700:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"709:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"700:13:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4220,"nodeType":"ExpressionStatement","src":"700:13:24"},{"expression":{"id":4225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4221,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4207,"src":"784:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4222,"name":"BaseRelayRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"794:18:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRelayRecipient_$300_$","typeString":"type(contract BaseRelayRecipient)"}},"id":4223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_msgSender","nodeType":"MemberAccess","referencedDeclaration":265,"src":"794:29:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"794:31:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"784:41:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4226,"nodeType":"ExpressionStatement","src":"784:41:24"},{"id":4227,"nodeType":"PlaceholderStatement","src":"831:1:24"}]},"id":4229,"name":"updateSender","nameLocation":"648:12:24","nodeType":"ModifierDefinition","parameters":{"id":4210,"nodeType":"ParameterList","parameters":[],"src":"661:0:24"},"src":"639:198:24","virtual":false,"visibility":"internal"},{"body":{"id":4254,"nodeType":"Block","src":"930:141:24","statements":[{"expression":{"arguments":[{"id":4239,"name":"_forwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"957:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4238,"name":"_setTrustedForwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"936:20:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"936:32:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4241,"nodeType":"ExpressionStatement","src":"936:32:24"},{"expression":{"id":4246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4242,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"974:7:24","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4244,"name":"uniswapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4233,"src":"1003:13:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4243,"name":"IUniswapV2Router02","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"984:18:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUniswapV2Router02_$3576_$","typeString":"type(contract IUniswapV2Router02)"}},"id":4245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"984:33:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"src":"974:43:24","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"id":4247,"nodeType":"ExpressionStatement","src":"974:43:24"},{"expression":{"id":4252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4248,"name":"_paymaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"1023:10:24","typeDescriptions":{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4250,"name":"tokenPaymaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"1051:14:24","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":4249,"name":"TokenPaymaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"1036:14:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TokenPaymaster_$4184_$","typeString":"type(contract TokenPaymaster)"}},"id":4251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1036:30:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"}},"src":"1023:43:24","typeDescriptions":{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"}},"id":4253,"nodeType":"ExpressionStatement","src":"1023:43:24"}]},"id":4255,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4231,"mutability":"mutable","name":"_forwarder","nameLocation":"863:10:24","nodeType":"VariableDeclaration","scope":4255,"src":"855:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4230,"name":"address","nodeType":"ElementaryTypeName","src":"855:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4233,"mutability":"mutable","name":"uniswapRouter","nameLocation":"883:13:24","nodeType":"VariableDeclaration","scope":4255,"src":"875:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4232,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4235,"mutability":"mutable","name":"tokenPaymaster","nameLocation":"914:14:24","nodeType":"VariableDeclaration","scope":4255,"src":"898:30:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":4234,"name":"address","nodeType":"ElementaryTypeName","src":"898:15:24","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"854:75:24"},"returnParameters":{"id":4237,"nodeType":"ParameterList","parameters":[],"src":"930:0:24"},"scope":4409,"src":"843:228:24","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4285,"nodeType":"Block","src":"1169:78:24","statements":[{"expression":{"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4265,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4263,"src":"1175:4:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"32","id":4269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1196:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":4268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1182:13:24","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":4266,"name":"address","nodeType":"ElementaryTypeName","src":"1186:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4267,"nodeType":"ArrayTypeName","src":"1186:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":4270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1182:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"1175:23:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4272,"nodeType":"ExpressionStatement","src":"1175:23:24"},{"expression":{"id":4277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4273,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4263,"src":"1204:4:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4275,"indexExpression":{"hexValue":"30","id":4274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1209:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1204:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4276,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"1214:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1204:16:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4278,"nodeType":"ExpressionStatement","src":"1204:16:24"},{"expression":{"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4279,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4263,"src":"1226:4:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4281,"indexExpression":{"hexValue":"31","id":4280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1231:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1226:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4282,"name":"token2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4259,"src":"1236:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1226:16:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4284,"nodeType":"ExpressionStatement","src":"1226:16:24"}]},"id":4286,"implemented":true,"kind":"function","modifiers":[],"name":"_getPath","nameLocation":"1084:8:24","nodeType":"FunctionDefinition","parameters":{"id":4260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4257,"mutability":"mutable","name":"token1","nameLocation":"1101:6:24","nodeType":"VariableDeclaration","scope":4286,"src":"1093:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4256,"name":"address","nodeType":"ElementaryTypeName","src":"1093:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4259,"mutability":"mutable","name":"token2","nameLocation":"1117:6:24","nodeType":"VariableDeclaration","scope":4286,"src":"1109:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4258,"name":"address","nodeType":"ElementaryTypeName","src":"1109:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1092:32:24"},"returnParameters":{"id":4264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4263,"mutability":"mutable","name":"path","nameLocation":"1163:4:24","nodeType":"VariableDeclaration","scope":4286,"src":"1146:21:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4261,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4262,"nodeType":"ArrayTypeName","src":"1146:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1145:23:24"},"scope":4409,"src":"1075:172:24","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":4362,"nodeType":"Block","src":"1332:471:24","statements":[{"assignments":[4297],"declarations":[{"constant":false,"id":4297,"mutability":"mutable","name":"erc20","nameLocation":"1346:5:24","nodeType":"VariableDeclaration","scope":4362,"src":"1339:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"},"typeName":{"id":4296,"nodeType":"UserDefinedTypeName","pathNode":{"id":4295,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":2080,"src":"1339:6:24"},"referencedDeclaration":2080,"src":"1339:6:24","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"visibility":"internal"}],"id":4301,"initialValue":{"arguments":[{"id":4299,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4288,"src":"1361:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4298,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"1354:6:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2080_$","typeString":"type(contract IERC20)"}},"id":4300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1354:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1339:28:24"},{"expression":{"arguments":[{"id":4305,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4207,"src":"1392:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4308,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1409:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_TokenSwap_$4409","typeString":"contract TokenSwap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TokenSwap_$4409","typeString":"contract TokenSwap"}],"id":4307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1401:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4306,"name":"address","nodeType":"ElementaryTypeName","src":"1401:7:24","typeDescriptions":{}}},"id":4309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1401:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4310,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4290,"src":"1416:8:24","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":4302,"name":"erc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4297,"src":"1373:5:24","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2079,"src":"1373:18:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":4311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1373:52:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4312,"nodeType":"ExpressionStatement","src":"1373:52:24"},{"expression":{"arguments":[{"arguments":[{"id":4318,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"1453:7:24","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}],"id":4317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1445:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4316,"name":"address","nodeType":"ElementaryTypeName","src":"1445:7:24","typeDescriptions":{}}},"id":4319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1445:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4320,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4290,"src":"1463:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4313,"name":"erc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4297,"src":"1431:5:24","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2067,"src":"1431:13:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1431:41:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4322,"nodeType":"ExpressionStatement","src":"1431:41:24"},{"expression":{"arguments":[{"id":4326,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4290,"src":"1545:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":4327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1561:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"id":4329,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4288,"src":"1579:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4330,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"1586:7:24","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"WETH","nodeType":"MemberAccess","referencedDeclaration":3192,"src":"1586:12:24","typeDescriptions":{"typeIdentifier":"t_function_external_pure$__$returns$_t_address_$","typeString":"function () pure external returns (address)"}},"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1586:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4328,"name":"_getPath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"1570:8:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address,address) pure returns (address[] memory)"}},"id":4333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1570:31:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"arguments":[{"id":4336,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1617:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_TokenSwap_$4409","typeString":"contract TokenSwap"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TokenSwap_$4409","typeString":"contract TokenSwap"}],"id":4335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1609:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4334,"name":"address","nodeType":"ElementaryTypeName","src":"1609:7:24","typeDescriptions":{}}},"id":4337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1609:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4338,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1630:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1630:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4323,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"1479:7:24","typeDescriptions":{"typeIdentifier":"t_contract$_IUniswapV2Router02_$3576","typeString":"contract IUniswapV2Router02"}},"id":4325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swapExactTokensForETHSupportingFeeOnTransferTokens","nodeType":"MemberAccess","referencedDeclaration":3575,"src":"1479:58:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,address[] memory,address,uint256) external"}},"id":4340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:172:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4341,"nodeType":"ExpressionStatement","src":"1479:172:24"},{"assignments":[4343,4345],"declarations":[{"constant":false,"id":4343,"mutability":"mutable","name":"paymentToken","nameLocation":"1667:12:24","nodeType":"VariableDeclaration","scope":4362,"src":"1659:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4342,"name":"address","nodeType":"ElementaryTypeName","src":"1659:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4345,"mutability":"mutable","name":"fee","nameLocation":"1689:3:24","nodeType":"VariableDeclaration","scope":4362,"src":"1681:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4344,"name":"uint256","nodeType":"ElementaryTypeName","src":"1681:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4349,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4346,"name":"_paymaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"1696:10:24","typeDescriptions":{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"}},"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPaymentData","nodeType":"MemberAccess","referencedDeclaration":3862,"src":"1696:25:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$_t_uint256_$","typeString":"function () view external returns (address,uint256)"}},"id":4348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1696:27:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1658:65:24"},{"expression":{"arguments":[{"id":4354,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4207,"src":"1763:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"307864656164","id":4357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1780:6:24","typeDescriptions":{"typeIdentifier":"t_rational_57005_by_1","typeString":"int_const 57005"},"value":"0xdead"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57005_by_1","typeString":"int_const 57005"}],"id":4356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1772:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4355,"name":"address","nodeType":"ElementaryTypeName","src":"1772:7:24","typeDescriptions":{}}},"id":4358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1772:15:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4359,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4345,"src":"1789:3:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4351,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"1736:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4350,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"1729:6:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2080_$","typeString":"type(contract IERC20)"}},"id":4352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1729:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2080","typeString":"contract IERC20"}},"id":4353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2079,"src":"1729:33:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":4360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1729:64:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4361,"nodeType":"ExpressionStatement","src":"1729:64:24"}]},"functionSelector":"56feb11b","id":4363,"implemented":true,"kind":"function","modifiers":[{"id":4293,"kind":"modifierInvocation","modifierName":{"id":4292,"name":"updateSender","nodeType":"IdentifierPath","referencedDeclaration":4229,"src":"1319:12:24"},"nodeType":"ModifierInvocation","src":"1319:12:24"}],"name":"swapTokensForEth","nameLocation":"1260:16:24","nodeType":"FunctionDefinition","parameters":{"id":4291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4288,"mutability":"mutable","name":"token","nameLocation":"1285:5:24","nodeType":"VariableDeclaration","scope":4363,"src":"1277:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4287,"name":"address","nodeType":"ElementaryTypeName","src":"1277:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4290,"mutability":"mutable","name":"amountIn","nameLocation":"1300:8:24","nodeType":"VariableDeclaration","scope":4363,"src":"1292:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4289,"name":"uint256","nodeType":"ElementaryTypeName","src":"1292:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1276:33:24"},"returnParameters":{"id":4294,"nodeType":"ParameterList","parameters":[],"src":"1332:0:24"},"scope":4409,"src":"1251:552:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[765],"body":{"id":4371,"nodeType":"Block","src":"1883:54:24","statements":[{"expression":{"hexValue":"322e322e302b6f70656e67736e2e737761702e6972656c6179726563697069656e74","id":4369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1896:36:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_31497665510ccc910b2d05402515797f1c48ab38689a9dff5867e38258591725","typeString":"literal_string \"2.2.0+opengsn.swap.irelayrecipient\""},"value":"2.2.0+opengsn.swap.irelayrecipient"},"functionReturnParameters":4368,"id":4370,"nodeType":"Return","src":"1889:43:24"}]},"functionSelector":"486ff0cd","id":4372,"implemented":true,"kind":"function","modifiers":[],"name":"versionRecipient","nameLocation":"1818:16:24","nodeType":"FunctionDefinition","overrides":{"id":4365,"nodeType":"OverrideSpecifier","overrides":[],"src":"1846:8:24"},"parameters":{"id":4364,"nodeType":"ParameterList","parameters":[],"src":"1834:2:24"},"returnParameters":{"id":4368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4372,"src":"1868:13:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4366,"name":"string","nodeType":"ElementaryTypeName","src":"1868:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1867:15:24"},"scope":4409,"src":"1809:128:24","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":4407,"nodeType":"Block","src":"1968:202:24","statements":[{"assignments":[4376],"declarations":[{"constant":false,"id":4376,"mutability":"mutable","name":"value","nameLocation":"1982:5:24","nodeType":"VariableDeclaration","scope":4407,"src":"1974:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4375,"name":"uint256","nodeType":"ElementaryTypeName","src":"1974:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4379,"initialValue":{"expression":{"id":4377,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1990:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1990:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1974:25:24"},{"assignments":[4381,null],"declarations":[{"constant":false,"id":4381,"mutability":"mutable","name":"sent","nameLocation":"2011:4:24","nodeType":"VariableDeclaration","scope":4407,"src":"2006:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4380,"name":"bool","nodeType":"ElementaryTypeName","src":"2006:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":4391,"initialValue":{"arguments":[{"hexValue":"","id":4389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2060:2:24","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":{"arguments":[{"id":4384,"name":"_paymaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"2029:10:24","typeDescriptions":{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TokenPaymaster_$4184","typeString":"contract TokenPaymaster"}],"id":4383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2021:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4382,"name":"address","nodeType":"ElementaryTypeName","src":"2021:7:24","typeDescriptions":{}}},"id":4385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2021:19:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2021:24:24","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":4388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":4387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"2053:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2021:38:24","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":4390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2021:42:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2005:58:24"},{"expression":{"arguments":[{"id":4393,"name":"sent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4381,"src":"2077:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4661696c656420746f2073656e64204574686572","id":4394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2083:22:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb","typeString":"literal_string \"Failed to send Ether\""},"value":"Failed to send Ether"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb","typeString":"literal_string \"Failed to send Ether\""}],"id":4392,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2069:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2069:37:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4396,"nodeType":"ExpressionStatement","src":"2069:37:24"},{"eventCall":{"arguments":[{"expression":{"id":4398,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2126:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"2126:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4400,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4207,"src":"2137:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4397,"name":"Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"2117:8:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":4401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2117:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4402,"nodeType":"EmitStatement","src":"2112:33:24"},{"expression":{"id":4405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4403,"name":"onSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"2151:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":4404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2160:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2151:14:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4406,"nodeType":"ExpressionStatement","src":"2151:14:24"}]},"id":4408,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4373,"nodeType":"ParameterList","parameters":[],"src":"1948:2:24"},"returnParameters":{"id":4374,"nodeType":"ParameterList","parameters":[],"src":"1968:0:24"},"scope":4409,"src":"1941:229:24","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":4410,"src":"411:1762:24","usedErrors":[]}],"src":"101:2073:24"},"id":24}},"contracts":{"@opengsn/contracts/src/BasePaymaster.sol":{"BasePaymaster":{"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":"CALLDATA_SIZE_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FORWARDER_HUB_OVERHEAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAYMASTER_ACCEPTANCE_BUDGET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POST_RELAYED_CALL_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRE_RELAYED_CALL_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"validUntil","type":"uint256"}],"internalType":"struct IForwarder.ForwardRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"internalType":"struct GsnTypes.RelayRequest","name":"relayRequest","type":"tuple"}],"name":"_verifyForwarder","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGasAndDataLimits","outputs":[{"components":[{"internalType":"uint256","name":"acceptanceBudget","type":"uint256"},{"internalType":"uint256","name":"preRelayedCallGasLimit","type":"uint256"},{"internalType":"uint256","name":"postRelayedCallGasLimit","type":"uint256"},{"internalType":"uint256","name":"calldataSizeLimit","type":"uint256"}],"internalType":"struct IPaymaster.GasAndDataLimits","name":"limits","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHubAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelayHubDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"context","type":"bytes"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256","name":"gasUseWithoutPost","type":"uint256"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"name":"postRelayedCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"validUntil","type":"uint256"}],"internalType":"struct IForwarder.ForwardRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"internalType":"struct GsnTypes.RelayRequest","name":"relayRequest","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"approvalData","type":"bytes"},{"internalType":"uint256","name":"maxPossibleGas","type":"uint256"}],"name":"preRelayedCall","outputs":[{"internalType":"bytes","name":"context","type":"bytes"},{"internalType":"bool","name":"rejectOnRecipientRevert","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRelayHub","name":"hub","type":"address"}],"name":"setRelayHub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionPaymaster","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"target","type":"address"}],"name":"withdrawRelayHubDepositTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"CALLDATA_SIZE_LIMIT()":"5c5e3db1","FORWARDER_HUB_OVERHEAD()":"b90b41cf","PAYMASTER_ACCEPTANCE_BUDGET()":"df463a66","POST_RELAYED_CALL_GAS_LIMIT()":"bbdaa3c9","PRE_RELAYED_CALL_GAS_LIMIT()":"f9c002f7","_verifyForwarder(((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)))":"a5dcd07b","getGasAndDataLimits()":"b039a88f","getHubAddr()":"74e861d6","getRelayHubDeposit()":"2afe31c1","owner()":"8da5cb5b","postRelayedCall(bytes,bool,uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))":"76fa01c3","preRelayedCall(((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)":"00be5dd4","renounceOwnership()":"715018a6","setRelayHub(address)":"7bb05264","setTrustedForwarder(address)":"da742228","transferOwnership(address)":"f2fde38b","trustedForwarder()":"7da0a877","versionPaymaster()":"921276ea","withdrawRelayHubDepositTo(uint256,address)":"2d14c4b7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":\"CALLDATA_SIZE_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FORWARDER_HUB_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAYMASTER_ACCEPTANCE_BUDGET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POST_RELAYED_CALL_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRE_RELAYED_CALL_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"internalType\":\"struct IForwarder.ForwardRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"internalType\":\"struct GsnTypes.RelayRequest\",\"name\":\"relayRequest\",\"type\":\"tuple\"}],\"name\":\"_verifyForwarder\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGasAndDataLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"acceptanceBudget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preRelayedCallGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"postRelayedCallGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"calldataSizeLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaymaster.GasAndDataLimits\",\"name\":\"limits\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHubAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelayHubDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasUseWithoutPost\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"postRelayedCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"internalType\":\"struct IForwarder.ForwardRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"internalType\":\"struct GsnTypes.RelayRequest\",\"name\":\"relayRequest\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"approvalData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"maxPossibleGas\",\"type\":\"uint256\"}],\"name\":\"preRelayedCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"rejectOnRecipientRevert\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRelayHub\",\"name\":\"hub\",\"type\":\"address\"}],\"name\":\"setRelayHub\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"setTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionPaymaster\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"withdrawRelayHubDepositTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"postRelayedCall(bytes,bool,uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))\":{\"params\":{\"context\":\"- the call context, as returned by the preRelayedCall\",\"gasUseWithoutPost\":\"- the actual amount of gas used by the entire transaction, EXCEPT        the gas used by the postRelayedCall itself.\",\"relayData\":\"- the relay params of the request. can be used by relayHub.calculateCharge() Revert in this functions causes a revert of the client's relayed call (and preRelayedCall(), but the Paymaster is still committed to pay the relay for the entire transaction.\",\"success\":\"- true if the relayed call succeeded, false if it reverted\"}},\"preRelayedCall(((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)\":{\"params\":{\"approvalData\":\"- extra dapp-specific data (e.g. signature from trusted party)\",\"maxPossibleGas\":\"- based on values returned from {@link getGasAndDataLimits},         the RelayHub will calculate the maximum possible amount of gas the user may be charged for.         In order to convert this value to wei, the Paymaster has to call \\\"relayHub.calculateCharge()\\\"  return:      a context to be passed to postRelayedCall      rejectOnRecipientRevert - TRUE if paymaster want to reject the TX if the recipient reverts.          FALSE means that rejects by the recipient will be completed on chain, and paid by the paymaster.          (note that in the latter case, the preRelayedCall and postRelayedCall are not reverted).\",\"relayRequest\":\"- the full relay request structure\",\"signature\":\"- user's EIP712-compatible signature of the {@link relayRequest}.              Note that in most cases the paymaster shouldn't try use it at all. It is always checked              by the forwarder immediately after preRelayedCall returns.\"}},\"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\":{\"getGasAndDataLimits()\":{\"notice\":\"Return the Gas Limits and msg.data max size constants used by the Paymaster.\"},\"getHubAddr()\":{\"notice\":\"return the relayHub of this contract.\"},\"getRelayHubDeposit()\":{\"notice\":\"check current deposit on relay hub.\"},\"postRelayedCall(bytes,bool,uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))\":{\"notice\":\"This method is called after the actual relayed function call. It may be used to record the transaction (e.g. charge the caller by some contract logic) for this call. MUST be protected with relayHubOnly() in case it modifies state.\"},\"preRelayedCall(((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)\":{\"notice\":\"Called by Relay (and RelayHub), to validate if the paymaster agrees to pay for this call. MUST be protected with relayHubOnly() in case it modifies state. The Paymaster rejects by the following \\\"revert\\\" operations  - preRelayedCall() method reverts  - the forwarder reverts because of nonce or signature error  - the paymaster returned \\\"rejectOnRecipientRevert\\\", and the recipient contract reverted. In any of the above cases, all paymaster calls (and recipient call) are reverted. In any other case, the paymaster agrees to pay for the gas cost of the transaction (note  that this includes also postRelayedCall revert) The rejectOnRecipientRevert flag means the Paymaster \\\"delegate\\\" the rejection to the recipient  code.  It also means the Paymaster trust the recipient to reject fast: both preRelayedCall,  forwarder check and receipient checks must fit into the GasLimits.acceptanceBudget,  otherwise the TX is paid by the Paymaster.\"},\"withdrawRelayHubDepositTo(uint256,address)\":{\"notice\":\"withdraw deposit from relayHub\"}},\"notice\":\"Abstract base class to be inherited by a concrete Paymaster A subclass must implement:  - preRelayedCall  - postRelayedCall\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/BasePaymaster.sol\":\"BasePaymaster\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/BasePaymaster.sol\":{\"keccak256\":\"0x037963afa348ba25ed25d26f07a1b3545534e5447262eac8218f92246797569e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://482ab51f9c7a4fc86d3d1540a2465b1f5bf0a7244cc61de186233321dddbcdee\",\"dweb:/ipfs/QmY4geP56GPzkHADJ5xdks1ztrtFeVHqMu2SabHn8E3uuB\"]},\"@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0xca05fe8ee1d0bbdd9edd83f16b8481fa67704f0ed5a42d5c0f76c8a3a47d73f4\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e42577c586894c9fc9e11a3281c0e2d4183121714fd1101380b6b2b66c144ba3\",\"dweb:/ipfs/QmPQphvUxhvnYGXtNRbU7WcmbEP2N7mMDgC5R8R9AqC9xG\"]},\"@opengsn/contracts/src/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x9c717edb87debd2e6d3a7291ae1b2ec3248776617f20dbc2cbba66c7f1bf749c\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://ef2ce174df7e8dd8ac15c112768028bd89a517e21c354d5d35aa071f923e721d\",\"dweb:/ipfs/QmYHFK3FzfiiDRWhM8Q6KdT6YKmaA5JfDNKj6am7EymJU3\"]},\"@opengsn/contracts/src/interfaces/IRelayHub.sol\":{\"keccak256\":\"0x3497133a7147174c498d2feeb2569b973396a8c2c220b5876fd9eb3b59841c85\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://32bb285a0f675310ee87647d00717e2dee9dbc7179e5455a3e1d7a2e121b6bf7\",\"dweb:/ipfs/QmZABWeS7pi5KfhoDUKyZHEvwqiAL4sYvjr3UcWZ7SvqCX\"]},\"@opengsn/contracts/src/interfaces/IRelayRecipient.sol\":{\"keccak256\":\"0x199e82e0a2833a97213b5c16ac9b4e2b1814f2e90a4c4916855cbc21e710ad5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92112fc87990f2d55c538946266c48f43e6ca442186ef3b8172eb4632deb0db3\",\"dweb:/ipfs/QmU6pqFXYT8fYfyhw7viRA775eBH4W7PAd589DVFGtSgxo\"]},\"@opengsn/contracts/src/interfaces/IStakeManager.sol\":{\"keccak256\":\"0x834859879435b9032dc629a03baaa0d7ce645c184997985a7b8da944086753bb\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://08ac05ead3b791dc42287fdfb3ac1a3734876ed19971ddfedc904910dc88ee72\",\"dweb:/ipfs/QmSPBuZtdr8QtLWQSzX7eQo754bxzR2wnxoeWJxGWzK8Qb\"]},\"@opengsn/contracts/src/utils/GsnEip712Library.sol\":{\"keccak256\":\"0x329a0634ba63c397bde0cf2b003b577cacf1bfbab9616bbf415781de243730d3\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a6e52a2b8598d3478272f8791be1493645a14d850fac70c8a7180d72f00a45d2\",\"dweb:/ipfs/QmQmbSNNBU1LEgxEmhpVqhbts3RjEn9Zavwv5PmQJEdfoZ\"]},\"@opengsn/contracts/src/utils/GsnTypes.sol\":{\"keccak256\":\"0x632b33731c279b0a14b00ceeaaed067e0570881bf31ef383b6970cb595566269\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://c4ef0205cbfd132c978dac437b361749caecd2e69ae339b5826cb65a086bdbc1\",\"dweb:/ipfs/Qme5emF1fkmqfTWydJ4S97CbTidEx72VYvKLzTbapH3nGB\"]},\"@opengsn/contracts/src/utils/GsnUtils.sol\":{\"keccak256\":\"0x93465757df9b5721f0dde979be1675f82296b8f3cd196c6eee29d828698cb0de\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b9a5628093b0cffc70f851a64aef968e4a379b98d60a7855fa9afce102dad052\",\"dweb:/ipfs/QmaQZXC9vxMrhwXXsr8C6fNpYPQx1PfiAbfmweL3aHZCy5\"]},\"@opengsn/contracts/src/utils/MinLibBytes.sol\":{\"keccak256\":\"0x8063af8e0f134be3d794ad39bdc0041f33a16c91a4ee7abb968d4c15c8d10c54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c56adf5ddc717546e922b5f0cdb1d2bf084b070d2256b684a746d535cefdfa23\",\"dweb:/ipfs/QmbGgdbkpg4fz79c8tgKFJB4afXHRYgL3iMRf9KBQSVkWu\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]}},\"version\":1}"}},"@opengsn/contracts/src/BaseRelayRecipient.sol":{"BaseRelayRecipient":{"abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionRecipient","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isTrustedForwarder(address)":"572b6c05","trustedForwarder()":"7da0a877","versionRecipient()":"486ff0cd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionRecipient\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isTrustedForwarder(address)\":{\"notice\":\"return if the forwarder is trusted to forward relayed transactions to us. the forwarder is required to verify the sender's signature, and verify the call is not a replay.\"}},\"notice\":\"A base contract to be inherited by any contract that want to receive relayed transactions A subclass must use \\\"_msgSender()\\\" instead of \\\"msg.sender\\\"\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/BaseRelayRecipient.sol\":\"BaseRelayRecipient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/BaseRelayRecipient.sol\":{\"keccak256\":\"0xce3168b37fc87ec34a18b56b4b16a06432119c07fd2e1d864b871dcf40372ebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99b6d76e111f18169a6c3f9043a843f188a02b5737dc35e6c6535ee04858f1c7\",\"dweb:/ipfs/QmeibhmsicNMWMw1gggSknJsbm1WUtZgGokGnzd4CCZzTw\"]},\"@opengsn/contracts/src/interfaces/IRelayRecipient.sol\":{\"keccak256\":\"0x199e82e0a2833a97213b5c16ac9b4e2b1814f2e90a4c4916855cbc21e710ad5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92112fc87990f2d55c538946266c48f43e6ca442186ef3b8172eb4632deb0db3\",\"dweb:/ipfs/QmU6pqFXYT8fYfyhw7viRA775eBH4W7PAd589DVFGtSgxo\"]}},\"version\":1}"}},"@opengsn/contracts/src/forwarder/IForwarder.sol":{"IForwarder":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"domainValue","type":"bytes"}],"name":"DomainRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"typeHash","type":"bytes32"},{"indexed":false,"internalType":"string","name":"typeStr","type":"string"}],"name":"RequestTypeRegistered","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"validUntil","type":"uint256"}],"internalType":"struct IForwarder.ForwardRequest","name":"forwardRequest","type":"tuple"},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"internalType":"bytes32","name":"requestTypeHash","type":"bytes32"},{"internalType":"bytes","name":"suffixData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"ret","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"}],"name":"registerDomainSeparator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"typeName","type":"string"},{"internalType":"string","name":"typeSuffix","type":"string"}],"name":"registerRequestType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"validUntil","type":"uint256"}],"internalType":"struct IForwarder.ForwardRequest","name":"forwardRequest","type":"tuple"},{"internalType":"bytes32","name":"domainSeparator","type":"bytes32"},{"internalType":"bytes32","name":"requestTypeHash","type":"bytes32"},{"internalType":"bytes","name":"suffixData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"execute((address,address,uint256,uint256,uint256,bytes,uint256),bytes32,bytes32,bytes,bytes)":"e024dc7f","getNonce(address)":"2d0335ab","registerDomainSeparator(string,string)":"9c7b4592","registerRequestType(string,string)":"d9210be5","verify((address,address,uint256,uint256,uint256,bytes,uint256),bytes32,bytes32,bytes,bytes)":"ad9f99c7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"domainValue\",\"type\":\"bytes\"}],\"name\":\"DomainRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"typeHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"typeStr\",\"type\":\"string\"}],\"name\":\"RequestTypeRegistered\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"internalType\":\"struct IForwarder.ForwardRequest\",\"name\":\"forwardRequest\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"requestTypeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"suffixData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"ret\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"name\":\"registerDomainSeparator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"typeName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"typeSuffix\",\"type\":\"string\"}],\"name\":\"registerRequestType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"internalType\":\"struct IForwarder.ForwardRequest\",\"name\":\"forwardRequest\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"requestTypeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"suffixData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"execute((address,address,uint256,uint256,uint256,bytes,uint256),bytes32,bytes32,bytes,bytes)\":{\"params\":{\"domainSeparator\":\"- domain used when signing this request\",\"forwardRequest\":\"- all transaction parameters\",\"requestTypeHash\":\"- request type used when signing this request.\",\"signature\":\"- signature to validate. the transaction is verified, and then executed. the success and ret of \\\"call\\\" are returned. This method would revert only verification errors. target errors are reported using the returned \\\"success\\\" and ret string\",\"suffixData\":\"- the extension data used when signing this request.\"}},\"registerDomainSeparator(string,string)\":{\"params\":{\"name\":\"the domain's display name\",\"version\":\"the domain/protocol version\"}},\"registerRequestType(string,string)\":{\"params\":{\"typeName\":\"- the name of the request type.\",\"typeSuffix\":\"- any extra data after the generic params.  (must add at least one param. The generic ForwardRequest type is always registered by the constructor)\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"execute((address,address,uint256,uint256,uint256,bytes,uint256),bytes32,bytes32,bytes,bytes)\":{\"notice\":\"execute a transaction\"},\"registerDomainSeparator(string,string)\":{\"notice\":\"Register a new domain separator. The domain separator must have the following fields: name,version,chainId, verifyingContract. the chainId is the current network's chainId, and the verifyingContract is this forwarder. This method is given the domain name and version to create and register the domain separator value.\"},\"registerRequestType(string,string)\":{\"notice\":\"Register a new Request typehash.\"},\"verify((address,address,uint256,uint256,uint256,bytes,uint256),bytes32,bytes32,bytes,bytes)\":{\"notice\":\"verify the transaction would execute. validate the signature and the nonce of the request. revert if either signature or nonce are incorrect. also revert if domainSeparator or requestTypeHash are not registered.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/forwarder/IForwarder.sol\":\"IForwarder\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0xca05fe8ee1d0bbdd9edd83f16b8481fa67704f0ed5a42d5c0f76c8a3a47d73f4\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e42577c586894c9fc9e11a3281c0e2d4183121714fd1101380b6b2b66c144ba3\",\"dweb:/ipfs/QmPQphvUxhvnYGXtNRbU7WcmbEP2N7mMDgC5R8R9AqC9xG\"]}},\"version\":1}"}},"@opengsn/contracts/src/interfaces/IPaymaster.sol":{"IPaymaster":{"abi":[{"inputs":[],"name":"getGasAndDataLimits","outputs":[{"components":[{"internalType":"uint256","name":"acceptanceBudget","type":"uint256"},{"internalType":"uint256","name":"preRelayedCallGasLimit","type":"uint256"},{"internalType":"uint256","name":"postRelayedCallGasLimit","type":"uint256"},{"internalType":"uint256","name":"calldataSizeLimit","type":"uint256"}],"internalType":"struct IPaymaster.GasAndDataLimits","name":"limits","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHubAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelayHubDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"context","type":"bytes"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256","name":"gasUseWithoutPost","type":"uint256"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"name":"postRelayedCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"validUntil","type":"uint256"}],"internalType":"struct IForwarder.ForwardRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"internalType":"struct GsnTypes.RelayRequest","name":"relayRequest","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"approvalData","type":"bytes"},{"internalType":"uint256","name":"maxPossibleGas","type":"uint256"}],"name":"preRelayedCall","outputs":[{"internalType":"bytes","name":"context","type":"bytes"},{"internalType":"bool","name":"rejectOnRecipientRevert","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionPaymaster","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getGasAndDataLimits()":"b039a88f","getHubAddr()":"74e861d6","getRelayHubDeposit()":"2afe31c1","postRelayedCall(bytes,bool,uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))":"76fa01c3","preRelayedCall(((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)":"00be5dd4","trustedForwarder()":"7da0a877","versionPaymaster()":"921276ea"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getGasAndDataLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"acceptanceBudget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preRelayedCallGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"postRelayedCallGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"calldataSizeLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaymaster.GasAndDataLimits\",\"name\":\"limits\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHubAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelayHubDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasUseWithoutPost\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"postRelayedCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"internalType\":\"struct IForwarder.ForwardRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"internalType\":\"struct GsnTypes.RelayRequest\",\"name\":\"relayRequest\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"approvalData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"maxPossibleGas\",\"type\":\"uint256\"}],\"name\":\"preRelayedCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"rejectOnRecipientRevert\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionPaymaster\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRelayHubDeposit()\":{\"returns\":{\"_0\":\"the paymaster's deposit in the RelayHub.\"}},\"postRelayedCall(bytes,bool,uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))\":{\"params\":{\"context\":\"- the call context, as returned by the preRelayedCall\",\"gasUseWithoutPost\":\"- the actual amount of gas used by the entire transaction, EXCEPT        the gas used by the postRelayedCall itself.\",\"relayData\":\"- the relay params of the request. can be used by relayHub.calculateCharge() Revert in this functions causes a revert of the client's relayed call (and preRelayedCall(), but the Paymaster is still committed to pay the relay for the entire transaction.\",\"success\":\"- true if the relayed call succeeded, false if it reverted\"}},\"preRelayedCall(((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)\":{\"params\":{\"approvalData\":\"- extra dapp-specific data (e.g. signature from trusted party)\",\"maxPossibleGas\":\"- based on values returned from {@link getGasAndDataLimits},         the RelayHub will calculate the maximum possible amount of gas the user may be charged for.         In order to convert this value to wei, the Paymaster has to call \\\"relayHub.calculateCharge()\\\"  return:      a context to be passed to postRelayedCall      rejectOnRecipientRevert - TRUE if paymaster want to reject the TX if the recipient reverts.          FALSE means that rejects by the recipient will be completed on chain, and paid by the paymaster.          (note that in the latter case, the preRelayedCall and postRelayedCall are not reverted).\",\"relayRequest\":\"- the full relay request structure\",\"signature\":\"- user's EIP712-compatible signature of the {@link relayRequest}.              Note that in most cases the paymaster shouldn't try use it at all. It is always checked              by the forwarder immediately after preRelayedCall returns.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getGasAndDataLimits()\":{\"notice\":\"Return the Gas Limits and msg.data max size constants used by the Paymaster.\"},\"getHubAddr()\":{\"notice\":\"return the relayHub of this contract.\"},\"getRelayHubDeposit()\":{\"notice\":\"Can be used to determine if the contract can pay for incoming calls before making any.\"},\"postRelayedCall(bytes,bool,uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))\":{\"notice\":\"This method is called after the actual relayed function call. It may be used to record the transaction (e.g. charge the caller by some contract logic) for this call. MUST be protected with relayHubOnly() in case it modifies state.\"},\"preRelayedCall(((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)\":{\"notice\":\"Called by Relay (and RelayHub), to validate if the paymaster agrees to pay for this call. MUST be protected with relayHubOnly() in case it modifies state. The Paymaster rejects by the following \\\"revert\\\" operations  - preRelayedCall() method reverts  - the forwarder reverts because of nonce or signature error  - the paymaster returned \\\"rejectOnRecipientRevert\\\", and the recipient contract reverted. In any of the above cases, all paymaster calls (and recipient call) are reverted. In any other case, the paymaster agrees to pay for the gas cost of the transaction (note  that this includes also postRelayedCall revert) The rejectOnRecipientRevert flag means the Paymaster \\\"delegate\\\" the rejection to the recipient  code.  It also means the Paymaster trust the recipient to reject fast: both preRelayedCall,  forwarder check and receipient checks must fit into the GasLimits.acceptanceBudget,  otherwise the TX is paid by the Paymaster.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/interfaces/IPaymaster.sol\":\"IPaymaster\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0xca05fe8ee1d0bbdd9edd83f16b8481fa67704f0ed5a42d5c0f76c8a3a47d73f4\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e42577c586894c9fc9e11a3281c0e2d4183121714fd1101380b6b2b66c144ba3\",\"dweb:/ipfs/QmPQphvUxhvnYGXtNRbU7WcmbEP2N7mMDgC5R8R9AqC9xG\"]},\"@opengsn/contracts/src/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x9c717edb87debd2e6d3a7291ae1b2ec3248776617f20dbc2cbba66c7f1bf749c\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://ef2ce174df7e8dd8ac15c112768028bd89a517e21c354d5d35aa071f923e721d\",\"dweb:/ipfs/QmYHFK3FzfiiDRWhM8Q6KdT6YKmaA5JfDNKj6am7EymJU3\"]},\"@opengsn/contracts/src/utils/GsnTypes.sol\":{\"keccak256\":\"0x632b33731c279b0a14b00ceeaaed067e0570881bf31ef383b6970cb595566269\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://c4ef0205cbfd132c978dac437b361749caecd2e69ae339b5826cb65a086bdbc1\",\"dweb:/ipfs/Qme5emF1fkmqfTWydJ4S97CbTidEx72VYvKLzTbapH3nGB\"]}},\"version\":1}"}},"@opengsn/contracts/src/interfaces/IRelayHub.sol":{"IRelayHub":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"paymaster","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fromBlock","type":"uint256"}],"name":"HubDeprecated","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"maxWorkerCount","type":"uint256"},{"internalType":"uint256","name":"gasReserve","type":"uint256"},{"internalType":"uint256","name":"postOverhead","type":"uint256"},{"internalType":"uint256","name":"gasOverhead","type":"uint256"},{"internalType":"uint256","name":"maximumRecipientDeposit","type":"uint256"},{"internalType":"uint256","name":"minimumUnstakeDelay","type":"uint256"},{"internalType":"uint256","name":"minimumStake","type":"uint256"},{"internalType":"uint256","name":"dataGasCostPerByte","type":"uint256"},{"internalType":"uint256","name":"externalCallDataCostOverhead","type":"uint256"}],"indexed":false,"internalType":"struct IRelayHub.RelayHubConfig","name":"config","type":"tuple"}],"name":"RelayHubConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":false,"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"indexed":false,"internalType":"string","name":"relayUrl","type":"string"}],"name":"RelayServerRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":false,"internalType":"address[]","name":"newRelayWorkers","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"workersCount","type":"uint256"}],"name":"RelayWorkersAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":true,"internalType":"address","name":"paymaster","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"relayWorker","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"uint256","name":"innerGasUsed","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"TransactionRejectedByPaymaster","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":true,"internalType":"address","name":"relayWorker","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"paymaster","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"enum IRelayHub.RelayCallStatus","name":"status","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"charge","type":"uint256"}],"name":"TransactionRelayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"enum IRelayHub.RelayCallStatus","name":"status","type":"uint8"},{"indexed":false,"internalType":"bytes","name":"returnValue","type":"bytes"}],"name":"TransactionResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"dest","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address[]","name":"newRelayWorkers","type":"address[]"}],"name":"addRelayWorkers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"name":"calculateCharge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"calldataGasCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"depositFor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromBlock","type":"uint256"}],"name":"deprecateHub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deprecationBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getConfiguration","outputs":[{"components":[{"internalType":"uint256","name":"maxWorkerCount","type":"uint256"},{"internalType":"uint256","name":"gasReserve","type":"uint256"},{"internalType":"uint256","name":"postOverhead","type":"uint256"},{"internalType":"uint256","name":"gasOverhead","type":"uint256"},{"internalType":"uint256","name":"maximumRecipientDeposit","type":"uint256"},{"internalType":"uint256","name":"minimumUnstakeDelay","type":"uint256"},{"internalType":"uint256","name":"minimumStake","type":"uint256"},{"internalType":"uint256","name":"dataGasCostPerByte","type":"uint256"},{"internalType":"uint256","name":"externalCallDataCostOverhead","type":"uint256"}],"internalType":"struct IRelayHub.RelayHubConfig","name":"config","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDeprecated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"relayManager","type":"address"}],"name":"isRelayManagerStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address payable","name":"beneficiary","type":"address"}],"name":"penalize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"penalizer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"string","name":"url","type":"string"}],"name":"registerRelayServer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxAcceptanceBudget","type":"uint256"},{"components":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"validUntil","type":"uint256"}],"internalType":"struct IForwarder.ForwardRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"internalType":"struct GsnTypes.RelayRequest","name":"relayRequest","type":"tuple"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"approvalData","type":"bytes"},{"internalType":"uint256","name":"externalGasLimit","type":"uint256"}],"name":"relayCall","outputs":[{"internalType":"bool","name":"paymasterAccepted","type":"bool"},{"internalType":"bytes","name":"returnValue","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"maxWorkerCount","type":"uint256"},{"internalType":"uint256","name":"gasReserve","type":"uint256"},{"internalType":"uint256","name":"postOverhead","type":"uint256"},{"internalType":"uint256","name":"gasOverhead","type":"uint256"},{"internalType":"uint256","name":"maximumRecipientDeposit","type":"uint256"},{"internalType":"uint256","name":"minimumUnstakeDelay","type":"uint256"},{"internalType":"uint256","name":"minimumStake","type":"uint256"},{"internalType":"uint256","name":"dataGasCostPerByte","type":"uint256"},{"internalType":"uint256","name":"externalCallDataCostOverhead","type":"uint256"}],"internalType":"struct IRelayHub.RelayHubConfig","name":"_config","type":"tuple"}],"name":"setConfiguration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeManager","outputs":[{"internalType":"contract IStakeManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionHub","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"dest","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"workerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"worker","type":"address"}],"name":"workerToManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addRelayWorkers(address[])":"c2da0786","balanceOf(address)":"70a08231","calculateCharge(uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))":"8e53548b","calldataGasCost(uint256)":"26595b9d","depositFor(address)":"aa67c919","deprecateHub(uint256)":"af595dfc","deprecationBlock()":"d6a71c0d","getConfiguration()":"6bd50cef","isDeprecated()":"c7178230","isRelayManagerStaked(address)":"2ad311b5","penalize(address,address)":"ebcd31ac","penalizer()":"c4775a68","registerRelayServer(uint256,uint256,string)":"83b71871","relayCall(uint256,((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)":"10c45431","setConfiguration((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"c651bce8","stakeManager()":"7542ff95","versionHub()":"d904c732","withdraw(uint256,address)":"00f714ce","workerCount(address)":"194ac307","workerToManager(address)":"ca998f56"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"}],\"name\":\"HubDeprecated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxWorkerCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"postOverhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumRecipientDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumUnstakeDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataGasCostPerByte\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"externalCallDataCostOverhead\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IRelayHub.RelayHubConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"RelayHubConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"relayUrl\",\"type\":\"string\"}],\"name\":\"RelayServerRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"newRelayWorkers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"workersCount\",\"type\":\"uint256\"}],\"name\":\"RelayWorkersAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"innerGasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TransactionRejectedByPaymaster\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"enum IRelayHub.RelayCallStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"charge\",\"type\":\"uint256\"}],\"name\":\"TransactionRelayed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"enum IRelayHub.RelayCallStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"returnValue\",\"type\":\"bytes\"}],\"name\":\"TransactionResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dest\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"newRelayWorkers\",\"type\":\"address[]\"}],\"name\":\"addRelayWorkers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"calculateCharge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"calldataGasCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fromBlock\",\"type\":\"uint256\"}],\"name\":\"deprecateHub\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deprecationBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxWorkerCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"postOverhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumRecipientDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumUnstakeDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataGasCostPerByte\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"externalCallDataCostOverhead\",\"type\":\"uint256\"}],\"internalType\":\"struct IRelayHub.RelayHubConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDeprecated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"}],\"name\":\"isRelayManagerStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"penalize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"penalizer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"registerRelayServer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAcceptanceBudget\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"internalType\":\"struct IForwarder.ForwardRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"internalType\":\"struct GsnTypes.RelayRequest\",\"name\":\"relayRequest\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"approvalData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"externalGasLimit\",\"type\":\"uint256\"}],\"name\":\"relayCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paymasterAccepted\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnValue\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxWorkerCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasReserve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"postOverhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumRecipientDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumUnstakeDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataGasCostPerByte\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"externalCallDataCostOverhead\",\"type\":\"uint256\"}],\"internalType\":\"struct IRelayHub.RelayHubConfig\",\"name\":\"_config\",\"type\":\"tuple\"}],\"name\":\"setConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakeManager\",\"outputs\":[{\"internalType\":\"contract IStakeManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionHub\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"dest\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"workerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"worker\",\"type\":\"address\"}],\"name\":\"workerToManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"TransactionRejectedByPaymaster(address,address,address,address,address,bytes4,uint256,bytes)\":{\"params\":{\"reason\":\"contains a revert reason returned from preRelayedCall or forwarder.\"}}},\"kind\":\"dev\",\"methods\":{\"isRelayManagerStaked(address)\":{\"returns\":{\"_0\":\"true if stake size and delay satisfy all requirements\"}},\"relayCall(uint256,((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)\":{\"params\":{\"approvalData\":\": dapp-specific data forwarded to preRelayedCall.        This value is *not* verified by the Hub. For example, it can be used to pass a signature to the Paymaster\",\"externalGasLimit\":\"- the value passed as gasLimit to the transaction. Emits a TransactionRelayed event.\",\"maxAcceptanceBudget\":\"- max valid value for paymaster.getGasLimits().acceptanceBudget\",\"relayRequest\":\"- all details of the requested relayed call\",\"signature\":\"- client's EIP-712 signature over the relayRequest struct\"}},\"versionHub()\":{\"returns\":{\"_0\":\"a SemVer-compliant version of the hub contract\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Deposited(address,address,uint256)\":{\"notice\":\"Emitted when depositFor is called, including the amount and account that was funded.\"},\"RelayServerRegistered(address,uint256,uint256,string)\":{\"notice\":\"Emitted when a relay server registers or updates its details Looking at these events lets a client discover relay servers\"},\"RelayWorkersAdded(address,address[],uint256)\":{\"notice\":\"Emitted when relays are added by a relayManager\"},\"TransactionRejectedByPaymaster(address,address,address,address,address,bytes4,uint256,bytes)\":{\"notice\":\"Emitted when an attempt to relay a call fails and Paymaster does not accept the transaction. The actual relayed call was not executed, and the recipient not charged.\"},\"TransactionRelayed(address,address,address,address,address,bytes4,uint8,uint256)\":{\"notice\":\"Emitted when a transaction is relayed. Note that the actual encoded function might be reverted: this will be indicated in the status field. Useful when monitoring a relay's operation and relayed calls to a contract. Charge is the ether value deducted from the recipient's balance, paid to the relay's manager.\"},\"Withdrawn(address,address,uint256)\":{\"notice\":\"Emitted when an account withdraws funds from RelayHub.\"}},\"kind\":\"user\",\"methods\":{\"addRelayWorkers(address[])\":{\"notice\":\"Add new worker addresses controlled by sender who must be a staked Relay Manager address. Emits a RelayWorkersAdded event. This function can be called multiple times, emitting new events\"},\"balanceOf(address)\":{\"notice\":\"Returns an account's deposits. It can be either a deposit of a paymaster, or a revenue of a relay manager.\"},\"calculateCharge(uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))\":{\"notice\":\"The fee is expressed as a base fee in wei plus percentage on actual charge. E.g. a value of 40 stands for a 40% fee, so the recipient will be charged for 1.4 times the spent amount.\"},\"depositFor(address)\":{\"notice\":\"Deposits ether for a contract, so that it can receive (and pay for) relayed transactions. Unused balance can only be withdrawn by the contract itself, by calling withdraw. Emits a Deposited event.\"},\"getConfiguration()\":{\"notice\":\"Returns the whole hub configuration\"},\"isRelayManagerStaked(address)\":{\"notice\":\"Uses StakeManager info to decide if the Relay Manager can be considered staked\"},\"relayCall(uint256,((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)\":{\"notice\":\"Relays a transaction. For this to succeed, multiple conditions must be met:  - Paymaster's \\\"preRelayCall\\\" method must succeed and not revert  - the sender must be a registered Relay Worker that the user signed  - the transaction's gas price must be equal or larger than the one that was signed by the sender  - the transaction must have enough gas to run all internal transactions if they use all gas available to them  - the Paymaster must have enough balance to pay the Relay Worker for the scenario when all gas is spent If all conditions are met, the call will be relayed and the recipient charged. Arguments:\"},\"withdraw(uint256,address)\":{\"notice\":\"Withdraws from an account's balance, sending it back to it. Relay managers call this to retrieve their revenue, and contracts can also use it to reduce their funding. Emits a Withdrawn event.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/interfaces/IRelayHub.sol\":\"IRelayHub\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0xca05fe8ee1d0bbdd9edd83f16b8481fa67704f0ed5a42d5c0f76c8a3a47d73f4\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e42577c586894c9fc9e11a3281c0e2d4183121714fd1101380b6b2b66c144ba3\",\"dweb:/ipfs/QmPQphvUxhvnYGXtNRbU7WcmbEP2N7mMDgC5R8R9AqC9xG\"]},\"@opengsn/contracts/src/interfaces/IRelayHub.sol\":{\"keccak256\":\"0x3497133a7147174c498d2feeb2569b973396a8c2c220b5876fd9eb3b59841c85\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://32bb285a0f675310ee87647d00717e2dee9dbc7179e5455a3e1d7a2e121b6bf7\",\"dweb:/ipfs/QmZABWeS7pi5KfhoDUKyZHEvwqiAL4sYvjr3UcWZ7SvqCX\"]},\"@opengsn/contracts/src/interfaces/IStakeManager.sol\":{\"keccak256\":\"0x834859879435b9032dc629a03baaa0d7ce645c184997985a7b8da944086753bb\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://08ac05ead3b791dc42287fdfb3ac1a3734876ed19971ddfedc904910dc88ee72\",\"dweb:/ipfs/QmSPBuZtdr8QtLWQSzX7eQo754bxzR2wnxoeWJxGWzK8Qb\"]},\"@opengsn/contracts/src/utils/GsnTypes.sol\":{\"keccak256\":\"0x632b33731c279b0a14b00ceeaaed067e0570881bf31ef383b6970cb595566269\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://c4ef0205cbfd132c978dac437b361749caecd2e69ae339b5826cb65a086bdbc1\",\"dweb:/ipfs/Qme5emF1fkmqfTWydJ4S97CbTidEx72VYvKLzTbapH3nGB\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]}},\"version\":1}"}},"@opengsn/contracts/src/interfaces/IRelayRecipient.sol":{"IRelayRecipient":{"abi":[{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionRecipient","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isTrustedForwarder(address)":"572b6c05","versionRecipient()":"486ff0cd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionRecipient\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isTrustedForwarder(address)\":{\"notice\":\"return if the forwarder is trusted to forward relayed transactions to us. the forwarder is required to verify the sender's signature, and verify the call is not a replay.\"}},\"notice\":\"a contract must implement this interface in order to support relayed transaction. It is better to inherit the BaseRelayRecipient as its implementation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/interfaces/IRelayRecipient.sol\":\"IRelayRecipient\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/interfaces/IRelayRecipient.sol\":{\"keccak256\":\"0x199e82e0a2833a97213b5c16ac9b4e2b1814f2e90a4c4916855cbc21e710ad5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92112fc87990f2d55c538946266c48f43e6ca442186ef3b8172eb4632deb0db3\",\"dweb:/ipfs/QmU6pqFXYT8fYfyhw7viRA775eBH4W7PAd589DVFGtSgxo\"]}},\"version\":1}"}},"@opengsn/contracts/src/interfaces/IStakeManager.sol":{"IStakeManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":true,"internalType":"address","name":"relayHub","type":"address"}],"name":"HubAuthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":true,"internalType":"address","name":"relayHub","type":"address"},{"indexed":false,"internalType":"uint256","name":"removalBlock","type":"uint256"}],"name":"HubUnauthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"stake","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unstakeDelay","type":"uint256"}],"name":"StakeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"StakePenalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"withdrawBlock","type":"uint256"}],"name":"StakeUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayManager","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StakeWithdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"relayHub","type":"address"}],"name":"authorizeHubByManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayManager","type":"address"},{"internalType":"address","name":"relayHub","type":"address"}],"name":"authorizeHubByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayManager","type":"address"}],"name":"getStakeInfo","outputs":[{"components":[{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"unstakeDelay","type":"uint256"},{"internalType":"uint256","name":"withdrawBlock","type":"uint256"},{"internalType":"address payable","name":"owner","type":"address"}],"internalType":"struct IStakeManager.StakeInfo","name":"stakeInfo","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"relayManager","type":"address"},{"internalType":"address","name":"relayHub","type":"address"},{"internalType":"uint256","name":"minAmount","type":"uint256"},{"internalType":"uint256","name":"minUnstakeDelay","type":"uint256"}],"name":"isRelayManagerStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxUnstakeDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"relayManager","type":"address"},{"internalType":"address payable","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"penalizeRelayManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"owner","type":"address"}],"name":"setRelayManagerOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayManager","type":"address"},{"internalType":"uint256","name":"unstakeDelay","type":"uint256"}],"name":"stakeForRelayManager","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"relayHub","type":"address"}],"name":"unauthorizeHubByManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayManager","type":"address"},{"internalType":"address","name":"relayHub","type":"address"}],"name":"unauthorizeHubByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayManager","type":"address"}],"name":"unlockStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"versionSM","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"relayManager","type":"address"}],"name":"withdrawStake","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"authorizeHubByManager(address)":"d48a9d43","authorizeHubByOwner(address,address)":"7835d296","getStakeInfo(address)":"c3453153","isRelayManagerStaked(address,address,uint256,uint256)":"6de8dd41","maxUnstakeDelay()":"4e02131c","penalizeRelayManager(address,address,uint256)":"09a08af4","setRelayManagerOwner(address)":"fece3dd4","stakeForRelayManager(address,uint256)":"f32102db","unauthorizeHubByManager(address)":"f9bce311","unauthorizeHubByOwner(address,address)":"f48f8ac7","unlockStake(address)":"4a1ce599","versionSM()":"47116c6e","withdrawStake(address)":"c23a5cea"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"}],\"name\":\"HubAuthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"removalBlock\",\"type\":\"uint256\"}],\"name\":\"HubUnauthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstakeDelay\",\"type\":\"uint256\"}],\"name\":\"StakeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"StakePenalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawBlock\",\"type\":\"uint256\"}],\"name\":\"StakeUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"StakeWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"}],\"name\":\"authorizeHubByManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"}],\"name\":\"authorizeHubByOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"}],\"name\":\"getStakeInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawBlock\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"owner\",\"type\":\"address\"}],\"internalType\":\"struct IStakeManager.StakeInfo\",\"name\":\"stakeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minUnstakeDelay\",\"type\":\"uint256\"}],\"name\":\"isRelayManagerStaked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxUnstakeDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"penalizeRelayManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setRelayManagerOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"unstakeDelay\",\"type\":\"uint256\"}],\"name\":\"stakeForRelayManager\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"}],\"name\":\"unauthorizeHubByManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayHub\",\"type\":\"address\"}],\"name\":\"unauthorizeHubByOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"}],\"name\":\"unlockStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionSM\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayManager\",\"type\":\"address\"}],\"name\":\"withdrawStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"penalizeRelayManager(address,address,uint256)\":{\"params\":{\"amount\":\"- amount to withdraw from stake\",\"beneficiary\":\"- address that receives half of the penalty amount\",\"relayManager\":\"- entry to penalize\"}},\"setRelayManagerOwner(address)\":{\"params\":{\"owner\":\"- owner of the relay (as configured off-chain)\"}},\"stakeForRelayManager(address,uint256)\":{\"params\":{\"relayManager\":\"- address that represents a stake entry and controls relay registrations on relay hubs\",\"unstakeDelay\":\"- number of blocks to elapse before the owner can retrieve the stake after calling 'unlock'\"}}},\"version\":1},\"userdoc\":{\"events\":{\"StakeAdded(address,address,uint256,uint256)\":{\"notice\":\"Emitted when a stake or unstakeDelay are initialized or increased\"},\"StakePenalized(address,address,uint256)\":{\"notice\":\"Emitted when an authorized Relay Hub penalizes a relayManager\"},\"StakeUnlocked(address,address,uint256)\":{\"notice\":\"Emitted once a stake is scheduled for withdrawal\"},\"StakeWithdrawn(address,address,uint256)\":{\"notice\":\"Emitted when owner withdraws relayManager funds\"}},\"kind\":\"user\",\"methods\":{\"penalizeRelayManager(address,address,uint256)\":{\"notice\":\"Slash the stake of the relay relayManager. In order to prevent stake kidnapping, burns half of stake on the way.\"},\"setRelayManagerOwner(address)\":{\"notice\":\"Set the owner of a Relay Manager. Called only by the RelayManager itself. Note that owners cannot transfer ownership - if the entry already exists, reverts.\"},\"stakeForRelayManager(address,uint256)\":{\"notice\":\"Only the owner can call this function. If the entry does not exist, reverts.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/interfaces/IStakeManager.sol\":\"IStakeManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/interfaces/IStakeManager.sol\":{\"keccak256\":\"0x834859879435b9032dc629a03baaa0d7ce645c184997985a7b8da944086753bb\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://08ac05ead3b791dc42287fdfb3ac1a3734876ed19971ddfedc904910dc88ee72\",\"dweb:/ipfs/QmSPBuZtdr8QtLWQSzX7eQo754bxzR2wnxoeWJxGWzK8Qb\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]}},\"version\":1}"}},"@opengsn/contracts/src/utils/GsnEip712Library.sol":{"GsnEip712Library":{"abi":[{"inputs":[],"name":"EIP712DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GENERIC_PARAMS","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RELAYDATA_TYPE","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RELAYDATA_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RELAY_REQUEST_NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RELAY_REQUEST_SUFFIX","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RELAY_REQUEST_TYPE","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RELAY_REQUEST_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"610836610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c8063abf0d3f411610065578063abf0d3f41461010f578063c46cf83f1461012d578063c49f91d31461014b578063cc0c62b21461016957610092565b8063066a310c146100975780636225e61b146100b5578063931cd38f146100d3578063987673f7146100f1575b600080fd5b61009f610187565b6040516100ac9190610470565b60405180910390f35b6100bd6101a3565b6040516100ca91906104e7565b60405180910390f35b6100db61024e565b6040516100e89190610470565b60405180910390f35b6100f9610289565b6040516101069190610470565b60405180910390f35b6101176102c2565b6040516101249190610522565b60405180910390f35b610135610374565b60405161014291906104e7565b60405180910390f35b610153610390565b6040516101609190610522565b60405180910390f35b6101716103b4565b60405161017e9190610522565b60405180910390f35b6040518060800160405280605d8152602001610703605d913981565b6040518060400160405280600c81526020017f52656c61795265717565737400000000000000000000000000000000000000008152506040518060800160405280605d8152602001610703605d91396040518060e0016040528060a1815260200161076060a1913960405160200161021b91906105d0565b60405160208183030381529060405260405160200161023c939291906106bb565b60405160208183030381529060405281565b6040518060e0016040528060a1815260200161076060a1913960405160200161027791906105d0565b60405160208183030381529060405281565b6040518060400160405280600c81526020017f52656c617952657175657374000000000000000000000000000000000000000081525081565b6040518060400160405280600c81526020017f52656c61795265717565737400000000000000000000000000000000000000008152506040518060800160405280605d8152602001610703605d91396040518060e0016040528060a1815260200161076060a1913960405160200161033a91906105d0565b60405160208183030381529060405260405160200161035b939291906106bb565b6040516020818303038152906040528051906020012081565b6040518060e0016040528060a1815260200161076060a1913981565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6040518060e0016040528060a1815260200161076060a191398051906020012081565b600081519050919050565b600082825260208201905092915050565b60005b838110156104115780820151818401526020810190506103f6565b83811115610420576000848401525b50505050565b6000601f19601f8301169050919050565b6000610442826103d7565b61044c81856103e2565b935061045c8185602086016103f3565b61046581610426565b840191505092915050565b6000602082019050818103600083015261048a8184610437565b905092915050565b600081519050919050565b600082825260208201905092915050565b60006104b982610492565b6104c3818561049d565b93506104d38185602086016103f3565b6104dc81610426565b840191505092915050565b6000602082019050818103600083015261050181846104ae565b905092915050565b6000819050919050565b61051c81610509565b82525050565b60006020820190506105376000830184610513565b92915050565b600081905092915050565b7f52656c6179446174612072656c61794461746129000000000000000000000000600082015250565b600061057e60148361053d565b915061058982610548565b601482019050919050565b600081905092915050565b60006105aa82610492565b6105b48185610594565b93506105c48185602086016103f3565b80840191505092915050565b60006105db82610571565b91506105e7828461059f565b915081905092915050565b60006105fd826103d7565b610607818561053d565b93506106178185602086016103f3565b80840191505092915050565b7f2800000000000000000000000000000000000000000000000000000000000000600082015250565b600061065960018361053d565b915061066482610623565b600182019050919050565b7f2c00000000000000000000000000000000000000000000000000000000000000600082015250565b60006106a560018361053d565b91506106b08261066f565b600182019050919050565b60006106c782866105f2565b91506106d28261064c565b91506106de82856105f2565b91506106e982610698565b91506106f582846105f2565b915081905094935050505056fe616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c52656c6179446174612875696e743235362067617350726963652c75696e743235362070637452656c61794665652c75696e74323536206261736552656c61794665652c616464726573732072656c6179576f726b65722c61646472657373207061796d61737465722c6164647265737320666f727761726465722c6279746573207061796d6173746572446174612c75696e7432353620636c69656e74496429a2646970667358221220043d7914378d6c586e87ec93659513d8bc37428eca67c115964e5ce85351d72064736f6c634300080d0033","opcodes":"PUSH2 0x836 PUSH2 0x53 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x46 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x92 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xABF0D3F4 GT PUSH2 0x65 JUMPI DUP1 PUSH4 0xABF0D3F4 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0xC46CF83F EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0xC49F91D3 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0xCC0C62B2 EQ PUSH2 0x169 JUMPI PUSH2 0x92 JUMP JUMPDEST DUP1 PUSH4 0x66A310C EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x6225E61B EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x931CD38F EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x987673F7 EQ PUSH2 0xF1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x187 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x24E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE8 SWAP2 SWAP1 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0x289 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x106 SWAP2 SWAP1 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x522 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x135 PUSH2 0x374 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x142 SWAP2 SWAP1 PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x153 PUSH2 0x390 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 SWAP2 SWAP1 PUSH2 0x522 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0x522 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x703 PUSH1 0x5D SWAP2 CODECOPY DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x52656C6179526571756573740000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x703 PUSH1 0x5D SWAP2 CODECOPY PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21B SWAP2 SWAP1 PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x277 SWAP2 SWAP1 PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x52656C6179526571756573740000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x52656C6179526571756573740000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x703 PUSH1 0x5D SWAP2 CODECOPY PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x33A SWAP2 SWAP1 PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x35B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY DUP2 JUMP JUMPDEST PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x411 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3F6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x442 DUP3 PUSH2 0x3D7 JUMP JUMPDEST PUSH2 0x44C DUP2 DUP6 PUSH2 0x3E2 JUMP JUMPDEST SWAP4 POP PUSH2 0x45C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x465 DUP2 PUSH2 0x426 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x48A DUP2 DUP5 PUSH2 0x437 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 DUP3 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x4C3 DUP2 DUP6 PUSH2 0x49D JUMP JUMPDEST SWAP4 POP PUSH2 0x4D3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x4DC DUP2 PUSH2 0x426 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x501 DUP2 DUP5 PUSH2 0x4AE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x51C DUP2 PUSH2 0x509 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x537 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x513 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x52656C6179446174612072656C61794461746129000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57E PUSH1 0x14 DUP4 PUSH2 0x53D JUMP JUMPDEST SWAP2 POP PUSH2 0x589 DUP3 PUSH2 0x548 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AA DUP3 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x5B4 DUP2 DUP6 PUSH2 0x594 JUMP JUMPDEST SWAP4 POP PUSH2 0x5C4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DB DUP3 PUSH2 0x571 JUMP JUMPDEST SWAP2 POP PUSH2 0x5E7 DUP3 DUP5 PUSH2 0x59F JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FD DUP3 PUSH2 0x3D7 JUMP JUMPDEST PUSH2 0x607 DUP2 DUP6 PUSH2 0x53D JUMP JUMPDEST SWAP4 POP PUSH2 0x617 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x2800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x659 PUSH1 0x1 DUP4 PUSH2 0x53D JUMP JUMPDEST SWAP2 POP PUSH2 0x664 DUP3 PUSH2 0x623 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2C00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A5 PUSH1 0x1 DUP4 PUSH2 0x53D JUMP JUMPDEST SWAP2 POP PUSH2 0x6B0 DUP3 PUSH2 0x66F JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C7 DUP3 DUP7 PUSH2 0x5F2 JUMP JUMPDEST SWAP2 POP PUSH2 0x6D2 DUP3 PUSH2 0x64C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DE DUP3 DUP6 PUSH2 0x5F2 JUMP JUMPDEST SWAP2 POP PUSH2 0x6E9 DUP3 PUSH2 0x698 JUMP JUMPDEST SWAP2 POP PUSH2 0x6F5 DUP3 DUP5 PUSH2 0x5F2 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP INVALID PUSH2 0x6464 PUSH19 0x6573732066726F6D2C6164647265737320746F 0x2C PUSH22 0x696E743235362076616C75652C75696E743235362067 PUSH2 0x732C PUSH22 0x696E74323536206E6F6E63652C627974657320646174 PUSH2 0x2C75 PUSH10 0x6E743235362076616C69 PUSH5 0x556E74696C MSTORE PUSH6 0x6C6179446174 PUSH2 0x2875 PUSH10 0x6E743235362067617350 PUSH19 0x6963652C75696E743235362070637452656C61 PUSH26 0x4665652C75696E74323536206261736552656C61794665652C61 PUSH5 0x6472657373 KECCAK256 PUSH19 0x656C6179576F726B65722C6164647265737320 PUSH17 0x61796D61737465722C6164647265737320 PUSH7 0x6F727761726465 PUSH19 0x2C6279746573207061796D6173746572446174 PUSH2 0x2C75 PUSH10 0x6E7432353620636C6965 PUSH15 0x74496429A264697066735822122004 RETURNDATASIZE PUSH26 0x14378D6C586E87EC93659513D8BC37428ECA67C115964E5CE853 MLOAD 0xD7 KECCAK256 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"304:5397:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@EIP712DOMAIN_TYPEHASH_994":{"entryPoint":912,"id":994,"parameterSlots":0,"returnSlots":0},"@GENERIC_PARAMS_944":{"entryPoint":391,"id":944,"parameterSlots":0,"returnSlots":0},"@RELAYDATA_TYPEHASH_975":{"entryPoint":948,"id":975,"parameterSlots":0,"returnSlots":0},"@RELAYDATA_TYPE_947":{"entryPoint":884,"id":947,"parameterSlots":0,"returnSlots":0},"@RELAY_REQUEST_NAME_950":{"entryPoint":649,"id":950,"parameterSlots":0,"returnSlots":0},"@RELAY_REQUEST_SUFFIX_960":{"entryPoint":590,"id":960,"parameterSlots":0,"returnSlots":0},"@RELAY_REQUEST_TYPEHASH_980":{"entryPoint":706,"id":980,"parameterSlots":0,"returnSlots":0},"@RELAY_REQUEST_TYPE_970":{"entryPoint":419,"id":970,"parameterSlots":0,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack_library":{"entryPoint":1299,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack_library":{"entryPoint":1198,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1439,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack_library":{"entryPoint":1079,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1522,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1688,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1393,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1612,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a_t_string_memory_ptr_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1723,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f_t_bytes_memory_ptr__to_t_string_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1488,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed":{"entryPoint":1314,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_library_reversed":{"entryPoint":1255,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed":{"entryPoint":1136,"id":null,"parameterSlots":2,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":1170,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":983,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack_library":{"entryPoint":1181,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1428,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack_library":{"entryPoint":994,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1341,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":1289,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":1011,"id":null,"parameterSlots":3,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":1062,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb":{"entryPoint":1647,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f":{"entryPoint":1352,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a":{"entryPoint":1571,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7231:25","statements":[{"body":{"nodeType":"YulBlock","src":"66:40:25","statements":[{"nodeType":"YulAssignment","src":"77:22:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"93:5:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"87:5:25"},"nodeType":"YulFunctionCall","src":"87:12:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"77:6:25"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"49:5:25","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"59:6:25","type":""}],"src":"7:99:25"},{"body":{"nodeType":"YulBlock","src":"216:73:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"233:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"238:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"226:6:25"},"nodeType":"YulFunctionCall","src":"226:19:25"},"nodeType":"YulExpressionStatement","src":"226:19:25"},{"nodeType":"YulAssignment","src":"254:29:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"273:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"278:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"269:3:25"},"nodeType":"YulFunctionCall","src":"269:14:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"254:11:25"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack_library","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"188:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"193:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"204:11:25","type":""}],"src":"112:177:25"},{"body":{"nodeType":"YulBlock","src":"344:258:25","statements":[{"nodeType":"YulVariableDeclaration","src":"354:10:25","value":{"kind":"number","nodeType":"YulLiteral","src":"363:1:25","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"358:1:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"423:63:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"448:3:25"},{"name":"i","nodeType":"YulIdentifier","src":"453:1:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"444:3:25"},"nodeType":"YulFunctionCall","src":"444:11:25"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"467:3:25"},{"name":"i","nodeType":"YulIdentifier","src":"472:1:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"463:3:25"},"nodeType":"YulFunctionCall","src":"463:11:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"457:5:25"},"nodeType":"YulFunctionCall","src":"457:18:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"437:6:25"},"nodeType":"YulFunctionCall","src":"437:39:25"},"nodeType":"YulExpressionStatement","src":"437:39:25"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"384:1:25"},{"name":"length","nodeType":"YulIdentifier","src":"387:6:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"381:2:25"},"nodeType":"YulFunctionCall","src":"381:13:25"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"395:19:25","statements":[{"nodeType":"YulAssignment","src":"397:15:25","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"406:1:25"},{"kind":"number","nodeType":"YulLiteral","src":"409:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"402:3:25"},"nodeType":"YulFunctionCall","src":"402:10:25"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"397:1:25"}]}]},"pre":{"nodeType":"YulBlock","src":"377:3:25","statements":[]},"src":"373:113:25"},{"body":{"nodeType":"YulBlock","src":"520:76:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"570:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"575:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"566:3:25"},"nodeType":"YulFunctionCall","src":"566:16:25"},{"kind":"number","nodeType":"YulLiteral","src":"584:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"559:6:25"},"nodeType":"YulFunctionCall","src":"559:27:25"},"nodeType":"YulExpressionStatement","src":"559:27:25"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"501:1:25"},{"name":"length","nodeType":"YulIdentifier","src":"504:6:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"498:2:25"},"nodeType":"YulFunctionCall","src":"498:13:25"},"nodeType":"YulIf","src":"495:101:25"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"326:3:25","type":""},{"name":"dst","nodeType":"YulTypedName","src":"331:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"336:6:25","type":""}],"src":"295:307:25"},{"body":{"nodeType":"YulBlock","src":"656:54:25","statements":[{"nodeType":"YulAssignment","src":"666:38:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"684:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"691:2:25","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"680:3:25"},"nodeType":"YulFunctionCall","src":"680:14:25"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"700:2:25","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"696:3:25"},"nodeType":"YulFunctionCall","src":"696:7:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"676:3:25"},"nodeType":"YulFunctionCall","src":"676:28:25"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"666:6:25"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"639:5:25","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"649:6:25","type":""}],"src":"608:102:25"},{"body":{"nodeType":"YulBlock","src":"816:280:25","statements":[{"nodeType":"YulVariableDeclaration","src":"826:53:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"873:5:25"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"840:32:25"},"nodeType":"YulFunctionCall","src":"840:39:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"830:6:25","type":""}]},{"nodeType":"YulAssignment","src":"888:86:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"962:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"967:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack_library","nodeType":"YulIdentifier","src":"895:66:25"},"nodeType":"YulFunctionCall","src":"895:79:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"888:3:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1009:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"1016:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1005:3:25"},"nodeType":"YulFunctionCall","src":"1005:16:25"},{"name":"pos","nodeType":"YulIdentifier","src":"1023:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"1028:6:25"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"983:21:25"},"nodeType":"YulFunctionCall","src":"983:52:25"},"nodeType":"YulExpressionStatement","src":"983:52:25"},{"nodeType":"YulAssignment","src":"1044:46:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1055:3:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1082:6:25"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1060:21:25"},"nodeType":"YulFunctionCall","src":"1060:29:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1051:3:25"},"nodeType":"YulFunctionCall","src":"1051:39:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1044:3:25"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack_library","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"797:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"804:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"812:3:25","type":""}],"src":"716:380:25"},{"body":{"nodeType":"YulBlock","src":"1228:203:25","statements":[{"nodeType":"YulAssignment","src":"1238:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1250:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"1261:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1246:3:25"},"nodeType":"YulFunctionCall","src":"1246:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1238:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1285:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"1296:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1281:3:25"},"nodeType":"YulFunctionCall","src":"1281:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1304:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"1310:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1300:3:25"},"nodeType":"YulFunctionCall","src":"1300:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1274:6:25"},"nodeType":"YulFunctionCall","src":"1274:47:25"},"nodeType":"YulExpressionStatement","src":"1274:47:25"},{"nodeType":"YulAssignment","src":"1330:94:25","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1410:6:25"},{"name":"tail","nodeType":"YulIdentifier","src":"1419:4:25"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack_library","nodeType":"YulIdentifier","src":"1338:71:25"},"nodeType":"YulFunctionCall","src":"1338:86:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1330:4:25"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1200:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1212:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1223:4:25","type":""}],"src":"1102:329:25"},{"body":{"nodeType":"YulBlock","src":"1495:40:25","statements":[{"nodeType":"YulAssignment","src":"1506:22:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1522:5:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1516:5:25"},"nodeType":"YulFunctionCall","src":"1516:12:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1506:6:25"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1478:5:25","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1488:6:25","type":""}],"src":"1437:98:25"},{"body":{"nodeType":"YulBlock","src":"1644:73:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1661:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"1666:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1654:6:25"},"nodeType":"YulFunctionCall","src":"1654:19:25"},"nodeType":"YulExpressionStatement","src":"1654:19:25"},{"nodeType":"YulAssignment","src":"1682:29:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1701:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"1706:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1697:3:25"},"nodeType":"YulFunctionCall","src":"1697:14:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1682:11:25"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack_library","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1616:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"1621:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1632:11:25","type":""}],"src":"1541:176:25"},{"body":{"nodeType":"YulBlock","src":"1821:278:25","statements":[{"nodeType":"YulVariableDeclaration","src":"1831:52:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1877:5:25"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"1845:31:25"},"nodeType":"YulFunctionCall","src":"1845:38:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"1835:6:25","type":""}]},{"nodeType":"YulAssignment","src":"1892:85:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1965:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"1970:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack_library","nodeType":"YulIdentifier","src":"1899:65:25"},"nodeType":"YulFunctionCall","src":"1899:78:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1892:3:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2012:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"2019:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2008:3:25"},"nodeType":"YulFunctionCall","src":"2008:16:25"},{"name":"pos","nodeType":"YulIdentifier","src":"2026:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"2031:6:25"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"1986:21:25"},"nodeType":"YulFunctionCall","src":"1986:52:25"},"nodeType":"YulExpressionStatement","src":"1986:52:25"},{"nodeType":"YulAssignment","src":"2047:46:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2058:3:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2085:6:25"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2063:21:25"},"nodeType":"YulFunctionCall","src":"2063:29:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2054:3:25"},"nodeType":"YulFunctionCall","src":"2054:39:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2047:3:25"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack_library","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1802:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1809:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1817:3:25","type":""}],"src":"1723:376:25"},{"body":{"nodeType":"YulBlock","src":"2229:201:25","statements":[{"nodeType":"YulAssignment","src":"2239:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2251:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"2262:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2247:3:25"},"nodeType":"YulFunctionCall","src":"2247:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2239:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2286:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"2297:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2282:3:25"},"nodeType":"YulFunctionCall","src":"2282:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2305:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"2311:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2301:3:25"},"nodeType":"YulFunctionCall","src":"2301:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2275:6:25"},"nodeType":"YulFunctionCall","src":"2275:47:25"},"nodeType":"YulExpressionStatement","src":"2275:47:25"},{"nodeType":"YulAssignment","src":"2331:92:25","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2409:6:25"},{"name":"tail","nodeType":"YulIdentifier","src":"2418:4:25"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack_library","nodeType":"YulIdentifier","src":"2339:69:25"},"nodeType":"YulFunctionCall","src":"2339:84:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2331:4:25"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2201:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2213:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2224:4:25","type":""}],"src":"2105:325:25"},{"body":{"nodeType":"YulBlock","src":"2481:32:25","statements":[{"nodeType":"YulAssignment","src":"2491:16:25","value":{"name":"value","nodeType":"YulIdentifier","src":"2502:5:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2491:7:25"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2463:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2473:7:25","type":""}],"src":"2436:77:25"},{"body":{"nodeType":"YulBlock","src":"2592:53:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2609:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2632:5:25"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"2614:17:25"},"nodeType":"YulFunctionCall","src":"2614:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2602:6:25"},"nodeType":"YulFunctionCall","src":"2602:37:25"},"nodeType":"YulExpressionStatement","src":"2602:37:25"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack_library","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2580:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2587:3:25","type":""}],"src":"2519:126:25"},{"body":{"nodeType":"YulBlock","src":"2757:132:25","statements":[{"nodeType":"YulAssignment","src":"2767:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2779:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"2790:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2775:3:25"},"nodeType":"YulFunctionCall","src":"2775:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2767:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2855:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2868:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"2879:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2864:3:25"},"nodeType":"YulFunctionCall","src":"2864:17:25"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack_library","nodeType":"YulIdentifier","src":"2803:51:25"},"nodeType":"YulFunctionCall","src":"2803:79:25"},"nodeType":"YulExpressionStatement","src":"2803:79:25"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2729:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2741:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2752:4:25","type":""}],"src":"2651:238:25"},{"body":{"nodeType":"YulBlock","src":"3009:34:25","statements":[{"nodeType":"YulAssignment","src":"3019:18:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"3034:3:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"3019:11:25"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2981:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"2986:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"2997:11:25","type":""}],"src":"2895:148:25"},{"body":{"nodeType":"YulBlock","src":"3155:56:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3173:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"3181:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3169:3:25"},"nodeType":"YulFunctionCall","src":"3169:14:25"},{"hexValue":"52656c6179446174612072656c61794461746129","kind":"string","nodeType":"YulLiteral","src":"3185:22:25","type":"","value":"RelayData relayData)"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3162:6:25"},"nodeType":"YulFunctionCall","src":"3162:46:25"},"nodeType":"YulExpressionStatement","src":"3162:46:25"}]},"name":"store_literal_in_memory_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"3147:6:25","type":""}],"src":"3049:162:25"},{"body":{"nodeType":"YulBlock","src":"3377:222:25","statements":[{"nodeType":"YulAssignment","src":"3383:92:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3467:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"3472:2:25","type":"","value":"20"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"3390:76:25"},"nodeType":"YulFunctionCall","src":"3390:85:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3383:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3569:3:25"}],"functionName":{"name":"store_literal_in_memory_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f","nodeType":"YulIdentifier","src":"3480:88:25"},"nodeType":"YulFunctionCall","src":"3480:93:25"},"nodeType":"YulExpressionStatement","src":"3480:93:25"},{"nodeType":"YulAssignment","src":"3578:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3589:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"3594:2:25","type":"","value":"20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3585:3:25"},"nodeType":"YulFunctionCall","src":"3585:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3578:3:25"}]}]},"name":"abi_encode_t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3365:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3373:3:25","type":""}],"src":"3213:386:25"},{"body":{"nodeType":"YulBlock","src":"3714:26:25","statements":[{"nodeType":"YulAssignment","src":"3720:18:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"3735:3:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"3720:11:25"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3686:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"3691:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"3702:11:25","type":""}],"src":"3601:139:25"},{"body":{"nodeType":"YulBlock","src":"3850:245:25","statements":[{"nodeType":"YulVariableDeclaration","src":"3856:52:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3902:5:25"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"3870:31:25"},"nodeType":"YulFunctionCall","src":"3870:38:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3860:6:25","type":""}]},{"nodeType":"YulAssignment","src":"3913:95:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3996:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"4001:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"3920:75:25"},"nodeType":"YulFunctionCall","src":"3920:88:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3913:3:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4039:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"4046:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4035:3:25"},"nodeType":"YulFunctionCall","src":"4035:16:25"},{"name":"pos","nodeType":"YulIdentifier","src":"4053:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"4058:6:25"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"4013:21:25"},"nodeType":"YulFunctionCall","src":"4013:52:25"},"nodeType":"YulExpressionStatement","src":"4013:52:25"},{"nodeType":"YulAssignment","src":"4070:23:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4081:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"4086:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4077:3:25"},"nodeType":"YulFunctionCall","src":"4077:16:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4070:3:25"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3831:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3838:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3846:3:25","type":""}],"src":"3742:353:25"},{"body":{"nodeType":"YulBlock","src":"4332:286:25","statements":[{"nodeType":"YulAssignment","src":"4339:155:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4490:3:25"}],"functionName":{"name":"abi_encode_t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"4346:142:25"},"nodeType":"YulFunctionCall","src":"4346:148:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4339:3:25"}]},{"nodeType":"YulAssignment","src":"4500:100:25","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4587:6:25"},{"name":"pos","nodeType":"YulIdentifier","src":"4596:3:25"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"4507:79:25"},"nodeType":"YulFunctionCall","src":"4507:93:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4500:3:25"}]},{"nodeType":"YulAssignment","src":"4606:10:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"4613:3:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4606:3:25"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f_t_bytes_memory_ptr__to_t_string_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4311:3:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4317:6:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4328:3:25","type":""}],"src":"4097:521:25"},{"body":{"nodeType":"YulBlock","src":"4730:247:25","statements":[{"nodeType":"YulVariableDeclaration","src":"4736:53:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4783:5:25"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"4750:32:25"},"nodeType":"YulFunctionCall","src":"4750:39:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4740:6:25","type":""}]},{"nodeType":"YulAssignment","src":"4794:96:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4878:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"4883:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"4801:76:25"},"nodeType":"YulFunctionCall","src":"4801:89:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4794:3:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4921:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"4928:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4917:3:25"},"nodeType":"YulFunctionCall","src":"4917:16:25"},{"name":"pos","nodeType":"YulIdentifier","src":"4935:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"4940:6:25"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"4895:21:25"},"nodeType":"YulFunctionCall","src":"4895:52:25"},"nodeType":"YulExpressionStatement","src":"4895:52:25"},{"nodeType":"YulAssignment","src":"4952:23:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4963:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"4968:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4959:3:25"},"nodeType":"YulFunctionCall","src":"4959:16:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4952:3:25"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4711:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4718:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4726:3:25","type":""}],"src":"4620:357:25"},{"body":{"nodeType":"YulBlock","src":"5085:41:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5103:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"5111:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5099:3:25"},"nodeType":"YulFunctionCall","src":"5099:14:25"},{"hexValue":"28","kind":"string","nodeType":"YulLiteral","src":"5115:3:25","type":"","value":"("}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5092:6:25"},"nodeType":"YulFunctionCall","src":"5092:27:25"},"nodeType":"YulExpressionStatement","src":"5092:27:25"}]},"name":"store_literal_in_memory_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5077:6:25","type":""}],"src":"4979:147:25"},{"body":{"nodeType":"YulBlock","src":"5296:236:25","statements":[{"nodeType":"YulAssignment","src":"5306:91:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5390:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"5395:1:25","type":"","value":"1"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"5313:76:25"},"nodeType":"YulFunctionCall","src":"5313:84:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5306:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5495:3:25"}],"functionName":{"name":"store_literal_in_memory_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a","nodeType":"YulIdentifier","src":"5406:88:25"},"nodeType":"YulFunctionCall","src":"5406:93:25"},"nodeType":"YulExpressionStatement","src":"5406:93:25"},{"nodeType":"YulAssignment","src":"5508:18:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5519:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"5524:1:25","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5515:3:25"},"nodeType":"YulFunctionCall","src":"5515:11:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5508:3:25"}]}]},"name":"abi_encode_t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5284:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5292:3:25","type":""}],"src":"5132:400:25"},{"body":{"nodeType":"YulBlock","src":"5644:45:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5666:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"5674:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5662:3:25"},"nodeType":"YulFunctionCall","src":"5662:14:25"},{"hexValue":"2c","kind":"string","nodeType":"YulLiteral","src":"5678:3:25","type":"","value":","}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5655:6:25"},"nodeType":"YulFunctionCall","src":"5655:27:25"},"nodeType":"YulExpressionStatement","src":"5655:27:25"}]},"name":"store_literal_in_memory_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5636:6:25","type":""}],"src":"5538:151:25"},{"body":{"nodeType":"YulBlock","src":"5859:236:25","statements":[{"nodeType":"YulAssignment","src":"5869:91:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5953:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"5958:1:25","type":"","value":"1"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"5876:76:25"},"nodeType":"YulFunctionCall","src":"5876:84:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5869:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6058:3:25"}],"functionName":{"name":"store_literal_in_memory_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb","nodeType":"YulIdentifier","src":"5969:88:25"},"nodeType":"YulFunctionCall","src":"5969:93:25"},"nodeType":"YulExpressionStatement","src":"5969:93:25"},{"nodeType":"YulAssignment","src":"6071:18:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6082:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"6087:1:25","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6078:3:25"},"nodeType":"YulFunctionCall","src":"6078:11:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6071:3:25"}]}]},"name":"abi_encode_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5847:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5855:3:25","type":""}],"src":"5695:400:25"},{"body":{"nodeType":"YulBlock","src":"6535:693:25","statements":[{"nodeType":"YulAssignment","src":"6546:102:25","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6635:6:25"},{"name":"pos","nodeType":"YulIdentifier","src":"6644:3:25"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"6553:81:25"},"nodeType":"YulFunctionCall","src":"6553:95:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6546:3:25"}]},{"nodeType":"YulAssignment","src":"6658:155:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6809:3:25"}],"functionName":{"name":"abi_encode_t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"6665:142:25"},"nodeType":"YulFunctionCall","src":"6665:148:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6658:3:25"}]},{"nodeType":"YulAssignment","src":"6823:102:25","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6912:6:25"},{"name":"pos","nodeType":"YulIdentifier","src":"6921:3:25"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"6830:81:25"},"nodeType":"YulFunctionCall","src":"6830:95:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6823:3:25"}]},{"nodeType":"YulAssignment","src":"6935:155:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7086:3:25"}],"functionName":{"name":"abi_encode_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"6942:142:25"},"nodeType":"YulFunctionCall","src":"6942:148:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6935:3:25"}]},{"nodeType":"YulAssignment","src":"7100:102:25","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7189:6:25"},{"name":"pos","nodeType":"YulIdentifier","src":"7198:3:25"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"7107:81:25"},"nodeType":"YulFunctionCall","src":"7107:95:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7100:3:25"}]},{"nodeType":"YulAssignment","src":"7212:10:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"7219:3:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7212:3:25"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a_t_string_memory_ptr_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6498:3:25","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6504:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6512:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6520:6:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6531:3:25","type":""}],"src":"6101:1127:25"}]},"contents":"{\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_fromStack_library(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function copy_memory_to_memory(src, dst, length) {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length)\n        {\n            // clear end\n            mstore(add(dst, length), 0)\n        }\n    }\n\n    function 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_library(value, pos) -> end {\n        let length := array_length_t_string_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack_library(pos, length)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_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_library(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_storeLengthForEncoding_t_bytes_memory_ptr_fromStack_library(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack_library(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack_library(pos, length)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_library_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack_library(value0,  tail)\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_library(value, pos) {\n        mstore(pos, cleanup_t_bytes32(value))\n    }\n\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_bytes32_to_t_bytes32_fromStack_library(value0,  add(headStart, 0))\n\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function store_literal_in_memory_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f(memPtr) {\n\n    mstore(add(memPtr, 0), \"RelayData relayData)\")\n\n}\n\nfunction abi_encode_t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n    pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 20)\n    store_literal_in_memory_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f(pos)\n    end := add(pos, 20)\n}\n\nfunction array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n    updated_pos := pos\n}\n\nfunction 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(add(value, 0x20), pos, length)\n    end := add(pos, length)\n}\n\nfunction abi_encode_tuple_packed_t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f_t_bytes_memory_ptr__to_t_string_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n    pos := abi_encode_t_stringliteral_3fadbea26dd302bcc6197cc8afc00cbc86899723a86835ca1f1216f26949bb7f_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\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\nfunction abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n    let length := array_length_t_string_memory_ptr(value)\n    pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n    copy_memory_to_memory(add(value, 0x20), pos, length)\n    end := add(pos, length)\n}\n\nfunction store_literal_in_memory_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a(memPtr) {\n\n    mstore(add(memPtr, 0), \"(\")\n\n    }\n\n    function abi_encode_t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 1)\n        store_literal_in_memory_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a(pos)\n        end := add(pos, 1)\n    }\n\n    function store_literal_in_memory_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb(memPtr) {\n\n        mstore(add(memPtr, 0), \",\")\n\n    }\n\n    function abi_encode_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 1)\n        store_literal_in_memory_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb(pos)\n        end := add(pos, 1)\n    }\n\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a_t_string_memory_ptr_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value2, value1, value0) -> end {\n\n        pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        pos := abi_encode_t_stringliteral_484bf06f3118ce360605f902ef526c45207bc469c2b056352f14b8408f9f6f9a_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n        pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1,  pos)\n\n        pos := abi_encode_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n        pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value2,  pos)\n\n        end := pos\n    }\n\n}\n","id":25,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c8063abf0d3f411610065578063abf0d3f41461010f578063c46cf83f1461012d578063c49f91d31461014b578063cc0c62b21461016957610092565b8063066a310c146100975780636225e61b146100b5578063931cd38f146100d3578063987673f7146100f1575b600080fd5b61009f610187565b6040516100ac9190610470565b60405180910390f35b6100bd6101a3565b6040516100ca91906104e7565b60405180910390f35b6100db61024e565b6040516100e89190610470565b60405180910390f35b6100f9610289565b6040516101069190610470565b60405180910390f35b6101176102c2565b6040516101249190610522565b60405180910390f35b610135610374565b60405161014291906104e7565b60405180910390f35b610153610390565b6040516101609190610522565b60405180910390f35b6101716103b4565b60405161017e9190610522565b60405180910390f35b6040518060800160405280605d8152602001610703605d913981565b6040518060400160405280600c81526020017f52656c61795265717565737400000000000000000000000000000000000000008152506040518060800160405280605d8152602001610703605d91396040518060e0016040528060a1815260200161076060a1913960405160200161021b91906105d0565b60405160208183030381529060405260405160200161023c939291906106bb565b60405160208183030381529060405281565b6040518060e0016040528060a1815260200161076060a1913960405160200161027791906105d0565b60405160208183030381529060405281565b6040518060400160405280600c81526020017f52656c617952657175657374000000000000000000000000000000000000000081525081565b6040518060400160405280600c81526020017f52656c61795265717565737400000000000000000000000000000000000000008152506040518060800160405280605d8152602001610703605d91396040518060e0016040528060a1815260200161076060a1913960405160200161033a91906105d0565b60405160208183030381529060405260405160200161035b939291906106bb565b6040516020818303038152906040528051906020012081565b6040518060e0016040528060a1815260200161076060a1913981565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6040518060e0016040528060a1815260200161076060a191398051906020012081565b600081519050919050565b600082825260208201905092915050565b60005b838110156104115780820151818401526020810190506103f6565b83811115610420576000848401525b50505050565b6000601f19601f8301169050919050565b6000610442826103d7565b61044c81856103e2565b935061045c8185602086016103f3565b61046581610426565b840191505092915050565b6000602082019050818103600083015261048a8184610437565b905092915050565b600081519050919050565b600082825260208201905092915050565b60006104b982610492565b6104c3818561049d565b93506104d38185602086016103f3565b6104dc81610426565b840191505092915050565b6000602082019050818103600083015261050181846104ae565b905092915050565b6000819050919050565b61051c81610509565b82525050565b60006020820190506105376000830184610513565b92915050565b600081905092915050565b7f52656c6179446174612072656c61794461746129000000000000000000000000600082015250565b600061057e60148361053d565b915061058982610548565b601482019050919050565b600081905092915050565b60006105aa82610492565b6105b48185610594565b93506105c48185602086016103f3565b80840191505092915050565b60006105db82610571565b91506105e7828461059f565b915081905092915050565b60006105fd826103d7565b610607818561053d565b93506106178185602086016103f3565b80840191505092915050565b7f2800000000000000000000000000000000000000000000000000000000000000600082015250565b600061065960018361053d565b915061066482610623565b600182019050919050565b7f2c00000000000000000000000000000000000000000000000000000000000000600082015250565b60006106a560018361053d565b91506106b08261066f565b600182019050919050565b60006106c782866105f2565b91506106d28261064c565b91506106de82856105f2565b91506106e982610698565b91506106f582846105f2565b915081905094935050505056fe616464726573732066726f6d2c6164647265737320746f2c75696e743235362076616c75652c75696e74323536206761732c75696e74323536206e6f6e63652c627974657320646174612c75696e743235362076616c6964556e74696c52656c6179446174612875696e743235362067617350726963652c75696e743235362070637452656c61794665652c75696e74323536206261736552656c61794665652c616464726573732072656c6179576f726b65722c61646472657373207061796d61737465722c6164647265737320666f727761726465722c6279746573207061796d6173746572446174612c75696e7432353620636c69656e74496429a2646970667358221220043d7914378d6c586e87ec93659513d8bc37428eca67c115964e5ce85351d72064736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x92 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xABF0D3F4 GT PUSH2 0x65 JUMPI DUP1 PUSH4 0xABF0D3F4 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0xC46CF83F EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0xC49F91D3 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0xCC0C62B2 EQ PUSH2 0x169 JUMPI PUSH2 0x92 JUMP JUMPDEST DUP1 PUSH4 0x66A310C EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0x6225E61B EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x931CD38F EQ PUSH2 0xD3 JUMPI DUP1 PUSH4 0x987673F7 EQ PUSH2 0xF1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F PUSH2 0x187 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBD PUSH2 0x1A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDB PUSH2 0x24E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE8 SWAP2 SWAP1 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0x289 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x106 SWAP2 SWAP1 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x522 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x135 PUSH2 0x374 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x142 SWAP2 SWAP1 PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x153 PUSH2 0x390 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 SWAP2 SWAP1 PUSH2 0x522 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x171 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17E SWAP2 SWAP1 PUSH2 0x522 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x703 PUSH1 0x5D SWAP2 CODECOPY DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x52656C6179526571756573740000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x703 PUSH1 0x5D SWAP2 CODECOPY PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21B SWAP2 SWAP1 PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x277 SWAP2 SWAP1 PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x52656C6179526571756573740000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x52656C6179526571756573740000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5D DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x703 PUSH1 0x5D SWAP2 CODECOPY PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x33A SWAP2 SWAP1 PUSH2 0x5D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x35B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x6BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY DUP2 JUMP JUMPDEST PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x760 PUSH1 0xA1 SWAP2 CODECOPY DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x411 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3F6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x442 DUP3 PUSH2 0x3D7 JUMP JUMPDEST PUSH2 0x44C DUP2 DUP6 PUSH2 0x3E2 JUMP JUMPDEST SWAP4 POP PUSH2 0x45C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x465 DUP2 PUSH2 0x426 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x48A DUP2 DUP5 PUSH2 0x437 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B9 DUP3 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x4C3 DUP2 DUP6 PUSH2 0x49D JUMP JUMPDEST SWAP4 POP PUSH2 0x4D3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x4DC DUP2 PUSH2 0x426 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x501 DUP2 DUP5 PUSH2 0x4AE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x51C DUP2 PUSH2 0x509 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x537 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x513 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x52656C6179446174612072656C61794461746129000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x57E PUSH1 0x14 DUP4 PUSH2 0x53D JUMP JUMPDEST SWAP2 POP PUSH2 0x589 DUP3 PUSH2 0x548 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5AA DUP3 PUSH2 0x492 JUMP JUMPDEST PUSH2 0x5B4 DUP2 DUP6 PUSH2 0x594 JUMP JUMPDEST SWAP4 POP PUSH2 0x5C4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DB DUP3 PUSH2 0x571 JUMP JUMPDEST SWAP2 POP PUSH2 0x5E7 DUP3 DUP5 PUSH2 0x59F JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FD DUP3 PUSH2 0x3D7 JUMP JUMPDEST PUSH2 0x607 DUP2 DUP6 PUSH2 0x53D JUMP JUMPDEST SWAP4 POP PUSH2 0x617 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3F3 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x2800000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x659 PUSH1 0x1 DUP4 PUSH2 0x53D JUMP JUMPDEST SWAP2 POP PUSH2 0x664 DUP3 PUSH2 0x623 JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x2C00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A5 PUSH1 0x1 DUP4 PUSH2 0x53D JUMP JUMPDEST SWAP2 POP PUSH2 0x6B0 DUP3 PUSH2 0x66F JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C7 DUP3 DUP7 PUSH2 0x5F2 JUMP JUMPDEST SWAP2 POP PUSH2 0x6D2 DUP3 PUSH2 0x64C JUMP JUMPDEST SWAP2 POP PUSH2 0x6DE DUP3 DUP6 PUSH2 0x5F2 JUMP JUMPDEST SWAP2 POP PUSH2 0x6E9 DUP3 PUSH2 0x698 JUMP JUMPDEST SWAP2 POP PUSH2 0x6F5 DUP3 DUP5 PUSH2 0x5F2 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP INVALID PUSH2 0x6464 PUSH19 0x6573732066726F6D2C6164647265737320746F 0x2C PUSH22 0x696E743235362076616C75652C75696E743235362067 PUSH2 0x732C PUSH22 0x696E74323536206E6F6E63652C627974657320646174 PUSH2 0x2C75 PUSH10 0x6E743235362076616C69 PUSH5 0x556E74696C MSTORE PUSH6 0x6C6179446174 PUSH2 0x2875 PUSH10 0x6E743235362067617350 PUSH19 0x6963652C75696E743235362070637452656C61 PUSH26 0x4665652C75696E74323536206261736552656C61794665652C61 PUSH5 0x6472657373 KECCAK256 PUSH19 0x656C6179576F726B65722C6164647265737320 PUSH17 0x61796D61737465722C6164647265737320 PUSH7 0x6F727761726465 PUSH19 0x2C6279746573207061796D6173746572446174 PUSH2 0x2C75 PUSH10 0x6E7432353620636C6965 PUSH15 0x74496429A264697066735822122004 RETURNDATASIZE PUSH26 0x14378D6C586E87EC93659513D8BC37428ECA67C115964E5CE853 MLOAD 0xD7 KECCAK256 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"304:5397:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;586:135;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1118:133;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1001:110;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;937:58;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1334:78;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;728:202;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1558:157;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1258:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;586:135;;;;;;;;;;;;;;;;;;;:::o;1118:133::-;1187:18;;;;;;;;;;;;;;;;;1210:14;;;;;;;;;;;;;;;;;1095;;;;;;;;;;;;;;;;;1054:56;;;;;;;;:::i;:::-;;;;;;;;;;;;;1161:90;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1118:133;:::o;1001:110::-;1095:14;;;;;;;;;;;;;;;;;1054:56;;;;;;;;:::i;:::-;;;;;;;;;;;;;1001:110;:::o;937:58::-;;;;;;;;;;;;;;;;;;;:::o;1334:78::-;1187:18;;;;;;;;;;;;;;;;;1210:14;;;;;;;;;;;;;;;;;1095;;;;;;;;;;;;;;;;;1054:56;;;;;;;;:::i;:::-;;;;;;;;;;;;;1161:90;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1383:29;;;;;;1334:78;:::o;728:202::-;;;;;;;;;;;;;;;;;;;:::o;1558:157::-;1606:109;1558:157;:::o;1258:70::-;1313:14;;;;;;;;;;;;;;;;;1303:25;;;;;;1258:70;:::o;7:99:25:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:177::-;204:11;238:6;233:3;226:19;278:4;273:3;269:14;254:29;;112:177;;;;:::o;295:307::-;363:1;373:113;387:6;384:1;381:13;373:113;;;472:1;467:3;463:11;457:18;453:1;448:3;444:11;437:39;409:2;406:1;402:10;397:15;;373:113;;;504:6;501:1;498:13;495:101;;;584:1;575:6;570:3;566:16;559:27;495:101;344:258;295:307;;;:::o;608:102::-;649:6;700:2;696:7;691:2;684:5;680:14;676:28;666:38;;608:102;;;:::o;716:380::-;812:3;840:39;873:5;840:39;:::i;:::-;895:79;967:6;962:3;895:79;:::i;:::-;888:86;;983:52;1028:6;1023:3;1016:4;1009:5;1005:16;983:52;:::i;:::-;1060:29;1082:6;1060:29;:::i;:::-;1055:3;1051:39;1044:46;;816:280;716:380;;;;:::o;1102:329::-;1223:4;1261:2;1250:9;1246:18;1238:26;;1310:9;1304:4;1300:20;1296:1;1285:9;1281:17;1274:47;1338:86;1419:4;1410:6;1338:86;:::i;:::-;1330:94;;1102:329;;;;:::o;1437:98::-;1488:6;1522:5;1516:12;1506:22;;1437:98;;;:::o;1541:176::-;1632:11;1666:6;1661:3;1654:19;1706:4;1701:3;1697:14;1682:29;;1541:176;;;;:::o;1723:376::-;1817:3;1845:38;1877:5;1845:38;:::i;:::-;1899:78;1970:6;1965:3;1899:78;:::i;:::-;1892:85;;1986:52;2031:6;2026:3;2019:4;2012:5;2008:16;1986:52;:::i;:::-;2063:29;2085:6;2063:29;:::i;:::-;2058:3;2054:39;2047:46;;1821:278;1723:376;;;;:::o;2105:325::-;2224:4;2262:2;2251:9;2247:18;2239:26;;2311:9;2305:4;2301:20;2297:1;2286:9;2282:17;2275:47;2339:84;2418:4;2409:6;2339:84;:::i;:::-;2331:92;;2105:325;;;;:::o;2436:77::-;2473:7;2502:5;2491:16;;2436:77;;;:::o;2519:126::-;2614:24;2632:5;2614:24;:::i;:::-;2609:3;2602:37;2519:126;;:::o;2651:238::-;2752:4;2790:2;2779:9;2775:18;2767:26;;2803:79;2879:1;2868:9;2864:17;2855:6;2803:79;:::i;:::-;2651:238;;;;:::o;2895:148::-;2997:11;3034:3;3019:18;;2895:148;;;;:::o;3049:162::-;3185:22;3181:1;3173:6;3169:14;3162:46;3049:162;:::o;3213:386::-;3373:3;3390:85;3472:2;3467:3;3390:85;:::i;:::-;3383:92;;3480:93;3569:3;3480:93;:::i;:::-;3594:2;3589:3;3585:12;3578:19;;3213:386;;;:::o;3601:139::-;3702:11;3735:3;3720:18;;3601:139;;;;:::o;3742:353::-;3846:3;3870:38;3902:5;3870:38;:::i;:::-;3920:88;4001:6;3996:3;3920:88;:::i;:::-;3913:95;;4013:52;4058:6;4053:3;4046:4;4039:5;4035:16;4013:52;:::i;:::-;4086:6;4081:3;4077:16;4070:23;;3850:245;3742:353;;;;:::o;4097:521::-;4328:3;4346:148;4490:3;4346:148;:::i;:::-;4339:155;;4507:93;4596:3;4587:6;4507:93;:::i;:::-;4500:100;;4613:3;4606:10;;4097:521;;;;:::o;4620:357::-;4726:3;4750:39;4783:5;4750:39;:::i;:::-;4801:89;4883:6;4878:3;4801:89;:::i;:::-;4794:96;;4895:52;4940:6;4935:3;4928:4;4921:5;4917:16;4895:52;:::i;:::-;4968:6;4963:3;4959:16;4952:23;;4730:247;4620:357;;;;:::o;4979:147::-;5115:3;5111:1;5103:6;5099:14;5092:27;4979:147;:::o;5132:400::-;5292:3;5313:84;5395:1;5390:3;5313:84;:::i;:::-;5306:91;;5406:93;5495:3;5406:93;:::i;:::-;5524:1;5519:3;5515:11;5508:18;;5132:400;;;:::o;5538:151::-;5678:3;5674:1;5666:6;5662:14;5655:27;5538:151;:::o;5695:400::-;5855:3;5876:84;5958:1;5953:3;5876:84;:::i;:::-;5869:91;;5969:93;6058:3;5969:93;:::i;:::-;6087:1;6082:3;6078:11;6071:18;;5695:400;;;:::o;6101:1127::-;6531:3;6553:95;6644:3;6635:6;6553:95;:::i;:::-;6546:102;;6665:148;6809:3;6665:148;:::i;:::-;6658:155;;6830:95;6921:3;6912:6;6830:95;:::i;:::-;6823:102;;6942:148;7086:3;6942:148;:::i;:::-;6935:155;;7107:95;7198:3;7189:6;7107:95;:::i;:::-;7100:102;;7219:3;7212:10;;6101:1127;;;;;;:::o"},"methodIdentifiers":{"EIP712DOMAIN_TYPEHASH()":"c49f91d3","GENERIC_PARAMS()":"066a310c","RELAYDATA_TYPE()":"c46cf83f","RELAYDATA_TYPEHASH()":"cc0c62b2","RELAY_REQUEST_NAME()":"987673f7","RELAY_REQUEST_SUFFIX()":"931cd38f","RELAY_REQUEST_TYPE()":"6225e61b","RELAY_REQUEST_TYPEHASH()":"abf0d3f4"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EIP712DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GENERIC_PARAMS\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYDATA_TYPE\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYDATA_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_REQUEST_NAME\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_REQUEST_SUFFIX\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_REQUEST_TYPE\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_REQUEST_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Bridge Library to map GSN RelayRequest into a call of a Forwarder\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/utils/GsnEip712Library.sol\":\"GsnEip712Library\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0xca05fe8ee1d0bbdd9edd83f16b8481fa67704f0ed5a42d5c0f76c8a3a47d73f4\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e42577c586894c9fc9e11a3281c0e2d4183121714fd1101380b6b2b66c144ba3\",\"dweb:/ipfs/QmPQphvUxhvnYGXtNRbU7WcmbEP2N7mMDgC5R8R9AqC9xG\"]},\"@opengsn/contracts/src/interfaces/IRelayRecipient.sol\":{\"keccak256\":\"0x199e82e0a2833a97213b5c16ac9b4e2b1814f2e90a4c4916855cbc21e710ad5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92112fc87990f2d55c538946266c48f43e6ca442186ef3b8172eb4632deb0db3\",\"dweb:/ipfs/QmU6pqFXYT8fYfyhw7viRA775eBH4W7PAd589DVFGtSgxo\"]},\"@opengsn/contracts/src/utils/GsnEip712Library.sol\":{\"keccak256\":\"0x329a0634ba63c397bde0cf2b003b577cacf1bfbab9616bbf415781de243730d3\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a6e52a2b8598d3478272f8791be1493645a14d850fac70c8a7180d72f00a45d2\",\"dweb:/ipfs/QmQmbSNNBU1LEgxEmhpVqhbts3RjEn9Zavwv5PmQJEdfoZ\"]},\"@opengsn/contracts/src/utils/GsnTypes.sol\":{\"keccak256\":\"0x632b33731c279b0a14b00ceeaaed067e0570881bf31ef383b6970cb595566269\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://c4ef0205cbfd132c978dac437b361749caecd2e69ae339b5826cb65a086bdbc1\",\"dweb:/ipfs/Qme5emF1fkmqfTWydJ4S97CbTidEx72VYvKLzTbapH3nGB\"]},\"@opengsn/contracts/src/utils/GsnUtils.sol\":{\"keccak256\":\"0x93465757df9b5721f0dde979be1675f82296b8f3cd196c6eee29d828698cb0de\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b9a5628093b0cffc70f851a64aef968e4a379b98d60a7855fa9afce102dad052\",\"dweb:/ipfs/QmaQZXC9vxMrhwXXsr8C6fNpYPQx1PfiAbfmweL3aHZCy5\"]},\"@opengsn/contracts/src/utils/MinLibBytes.sol\":{\"keccak256\":\"0x8063af8e0f134be3d794ad39bdc0041f33a16c91a4ee7abb968d4c15c8d10c54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c56adf5ddc717546e922b5f0cdb1d2bf084b070d2256b684a746d535cefdfa23\",\"dweb:/ipfs/QmbGgdbkpg4fz79c8tgKFJB4afXHRYgL3iMRf9KBQSVkWu\"]}},\"version\":1}"}},"@opengsn/contracts/src/utils/GsnTypes.sol":{"GsnTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/utils/GsnTypes.sol\":\"GsnTypes\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0xca05fe8ee1d0bbdd9edd83f16b8481fa67704f0ed5a42d5c0f76c8a3a47d73f4\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e42577c586894c9fc9e11a3281c0e2d4183121714fd1101380b6b2b66c144ba3\",\"dweb:/ipfs/QmPQphvUxhvnYGXtNRbU7WcmbEP2N7mMDgC5R8R9AqC9xG\"]},\"@opengsn/contracts/src/utils/GsnTypes.sol\":{\"keccak256\":\"0x632b33731c279b0a14b00ceeaaed067e0570881bf31ef383b6970cb595566269\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://c4ef0205cbfd132c978dac437b361749caecd2e69ae339b5826cb65a086bdbc1\",\"dweb:/ipfs/Qme5emF1fkmqfTWydJ4S97CbTidEx72VYvKLzTbapH3nGB\"]}},\"version\":1}"}},"@opengsn/contracts/src/utils/GsnUtils.sol":{"GsnUtils":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200acdf89c30997916d1325bba38b50904889df418ada157cc476597527a0b20d964736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xCD 0xF8 SWAP13 ADDRESS SWAP10 PUSH26 0x16D1325BBA38B50904889DF418ADA157CC476597527A0B20D964 PUSH20 0x6F6C634300080D00330000000000000000000000 ","sourceMap":"143:854:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200acdf89c30997916d1325bba38b50904889df418ada157cc476597527a0b20d964736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xCD 0xF8 SWAP13 ADDRESS SWAP10 PUSH26 0x16D1325BBA38B50904889DF418ADA157CC476597527A0B20D964 PUSH20 0x6F6C634300080D00330000000000000000000000 ","sourceMap":"143:854:9:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/utils/GsnUtils.sol\":\"GsnUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/utils/GsnUtils.sol\":{\"keccak256\":\"0x93465757df9b5721f0dde979be1675f82296b8f3cd196c6eee29d828698cb0de\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b9a5628093b0cffc70f851a64aef968e4a379b98d60a7855fa9afce102dad052\",\"dweb:/ipfs/QmaQZXC9vxMrhwXXsr8C6fNpYPQx1PfiAbfmweL3aHZCy5\"]},\"@opengsn/contracts/src/utils/MinLibBytes.sol\":{\"keccak256\":\"0x8063af8e0f134be3d794ad39bdc0041f33a16c91a4ee7abb968d4c15c8d10c54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c56adf5ddc717546e922b5f0cdb1d2bf084b070d2256b684a746d535cefdfa23\",\"dweb:/ipfs/QmbGgdbkpg4fz79c8tgKFJB4afXHRYgL3iMRf9KBQSVkWu\"]}},\"version\":1}"}},"@opengsn/contracts/src/utils/MinLibBytes.sol":{"MinLibBytes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d77753d2c53f1d7a530439fb3c80f2cbcdb0a38da496cae72c681c9aa989018c64736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 PUSH24 0x53D2C53F1D7A530439FB3C80F2CBCDB0A38DA496CAE72C68 SHR SWAP11 0xA9 DUP10 ADD DUP13 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"181:2874:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d77753d2c53f1d7a530439fb3c80f2cbcdb0a38da496cae72c681c9aa989018c64736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 PUSH24 0x53D2C53F1D7A530439FB3C80F2CBCDB0A38DA496CAE72C68 SHR SWAP11 0xA9 DUP10 ADD DUP13 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"181:2874:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@opengsn/contracts/src/utils/MinLibBytes.sol\":\"MinLibBytes\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/utils/MinLibBytes.sol\":{\"keccak256\":\"0x8063af8e0f134be3d794ad39bdc0041f33a16c91a4ee7abb968d4c15c8d10c54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c56adf5ddc717546e922b5f0cdb1d2bf084b070d2256b684a746d535cefdfa23\",\"dweb:/ipfs/QmbGgdbkpg4fz79c8tgKFJB4afXHRYgL3iMRf9KBQSVkWu\"]}},\"version\":1}"}},"@openzeppelin/contracts/access/AccessControl.sol":{"AccessControl":{"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":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public {     require(hasRole(MY_ROLE, msg.sender));     ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"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 revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"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. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x5b35d8e68aeaccc685239bd9dd79b9ba01a0357930f8a3307ab85511733d9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba8eb2d22f9321bd4660f6617c181d9611ff30a9b089408b8c6e2216d6d5cdc5\",\"dweb:/ipfs/QmTSJvhjHfnUV1j4hsqDv8PmLvGBLRs9gHLjTUXrUJ5Y9q\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"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.13+commit.abaa5c0e\"},\"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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]}},\"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"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.13+commit.abaa5c0e\"},\"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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a19ab3c65a5e4a9fa12aed262e2123c1492a9a7803de1f2b94566304116331ad64736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 SWAP11 0xB3 0xC6 GAS 0x5E 0x4A SWAP16 LOG1 0x2A 0xED 0x26 0x2E 0x21 0x23 0xC1 0x49 0x2A SWAP11 PUSH25 0x3DE1F2B94566304116331AD64736F6C634300080D00330000 ","sourceMap":"161:2235:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a19ab3c65a5e4a9fa12aed262e2123c1492a9a7803de1f2b94566304116331ad64736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 SWAP11 0xB3 0xC6 GAS 0x5E 0x4A SWAP16 LOG1 0x2A 0xED 0x26 0x2E 0x21 0x23 0xC1 0x49 0x2A SWAP11 PUSH25 0x3DE1F2B94566304116331AD64736F6C634300080D00330000 ","sourceMap":"161:2235:16:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122080719ddf007a55bcf25b003a0e99a4d6a80e821a69b694deaee29ef0e9526f3164736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 PUSH18 0x9DDF007A55BCF25B003A0E99A4D6A80E821A PUSH10 0xB694DEAEE29EF0E9526F BALANCE PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"202:8624:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122080719ddf007a55bcf25b003a0e99a4d6a80e821a69b694deaee29ef0e9526f3164736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 PUSH18 0x9DDF007A55BCF25B003A0E99A4D6A80E821A PUSH10 0xB694DEAEE29EF0E9526F BALANCE PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"202:8624:19:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122096cd1b093a4397f8438b96b89f783006275ebc2fa9dc186c5dc5b69d2e218b7764736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 0xCD SHL MULMOD GASPRICE NUMBER SWAP8 0xF8 NUMBER DUP12 SWAP7 0xB8 SWAP16 PUSH25 0x3006275EBC2FA9DC186C5DC5B69D2E218B7764736F6C634300 ADDMOD 0xD STOP CALLER ","sourceMap":"482:6300:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122096cd1b093a4397f8438b96b89f783006275ebc2fa9dc186c5dc5b69d2e218b7764736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP7 0xCD SHL MULMOD GASPRICE NUMBER SWAP8 0xF8 NUMBER DUP12 SWAP7 0xB8 SWAP16 PUSH25 0x3006275EBC2FA9DC186C5DC5B69D2E218B7764736F6C634300 ADDMOD 0xD STOP CALLER ","sourceMap":"482:6300:20:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations. NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler now has built in overflow checking.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]}},\"version\":1}"}},"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol":{"IUniswapV2Router01":{"abi":[{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH()":"ad5c4648","addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)":"e8e33700","addLiquidityETH(address,uint256,uint256,uint256,address,uint256)":"f305d719","factory()":"c45a0155","getAmountIn(uint256,uint256,uint256)":"85f8c259","getAmountOut(uint256,uint256,uint256)":"054d50d4","getAmountsIn(uint256,address[])":"1f00ca74","getAmountsOut(uint256,address[])":"d06ca61f","quote(uint256,uint256,uint256)":"ad615dec","removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)":"baa2abde","removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)":"02751cec","removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"ded9382a","removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2195995c","swapETHForExactTokens(uint256,address[],address,uint256)":"fb3bdb41","swapExactETHForTokens(uint256,address[],address,uint256)":"7ff36ab5","swapExactTokensForETH(uint256,uint256,address[],address,uint256)":"18cbafe5","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739","swapTokensForExactETH(uint256,uint256,address[],address,uint256)":"4a25d94a","swapTokensForExactTokens(uint256,uint256,address[],address,uint256)":"8803dbee"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol\":\"IUniswapV2Router01\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol\":{\"keccak256\":\"0x8a3c5c449d4b7cd76513ed6995f4b86e4a86f222c770f8442f5fc128ce29b4d2\",\"urls\":[\"bzz-raw://1df63ca373dafae3bd0ee7fe70f890a1dc7c45ed869c01de68413e0e97ff9deb\",\"dweb:/ipfs/QmefJgEYGUL8KX7kQKYTrDweF8GB7yjy3nw5Bmqzryg7PG\"]}},\"version\":1}"}},"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol":{"IUniswapV2Router02":{"abi":[{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH()":"ad5c4648","addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)":"e8e33700","addLiquidityETH(address,uint256,uint256,uint256,address,uint256)":"f305d719","factory()":"c45a0155","getAmountIn(uint256,uint256,uint256)":"85f8c259","getAmountOut(uint256,uint256,uint256)":"054d50d4","getAmountsIn(uint256,address[])":"1f00ca74","getAmountsOut(uint256,address[])":"d06ca61f","quote(uint256,uint256,uint256)":"ad615dec","removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)":"baa2abde","removeLiquidityETH(address,uint256,uint256,uint256,address,uint256)":"02751cec","removeLiquidityETHSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)":"af2979eb","removeLiquidityETHWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"ded9382a","removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"5b0d5984","removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2195995c","swapETHForExactTokens(uint256,address[],address,uint256)":"fb3bdb41","swapExactETHForTokens(uint256,address[],address,uint256)":"7ff36ab5","swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)":"b6f9de95","swapExactTokensForETH(uint256,uint256,address[],address,uint256)":"18cbafe5","swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)":"791ac947","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739","swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)":"5c11d795","swapTokensForExactETH(uint256,uint256,address[],address,uint256)":"4a25d94a","swapTokensForExactTokens(uint256,uint256,address[],address,uint256)":"8803dbee"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol\":\"IUniswapV2Router02\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol\":{\"keccak256\":\"0x8a3c5c449d4b7cd76513ed6995f4b86e4a86f222c770f8442f5fc128ce29b4d2\",\"urls\":[\"bzz-raw://1df63ca373dafae3bd0ee7fe70f890a1dc7c45ed869c01de68413e0e97ff9deb\",\"dweb:/ipfs/QmefJgEYGUL8KX7kQKYTrDweF8GB7yjy3nw5Bmqzryg7PG\"]},\"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol\":{\"keccak256\":\"0x744e30c133bd0f7ca9e7163433cf6d72f45c6bb1508c2c9c02f1a6db796ae59d\",\"urls\":[\"bzz-raw://9bf2f4454ad63d4cff03a0630e787d9e8a9deed80aec89682cd8ad6379d9ef8c\",\"dweb:/ipfs/Qme51hQNR2wpax7ooUadhtqLtXm8ffeVVYyubLkTT4wMCG\"]}},\"version\":1}"}},"contracts/TokenPaymaster.sol":{"TokenPaymaster":{"abi":[{"inputs":[{"internalType":"address","name":"uniswapRouter","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"contract IRelayHub","name":"hub","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":[],"name":"CALLDATA_SIZE_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FORWARDER_HUB_OVERHEAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAYMASTER_ACCEPTANCE_BUDGET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POST_RELAYED_CALL_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRE_RELAYED_CALL_GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"validUntil","type":"uint256"}],"internalType":"struct IForwarder.ForwardRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"internalType":"struct GsnTypes.RelayRequest","name":"relayRequest","type":"tuple"}],"name":"_verifyForwarder","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasUsedByPost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGasAndDataLimits","outputs":[{"components":[{"internalType":"uint256","name":"acceptanceBudget","type":"uint256"},{"internalType":"uint256","name":"preRelayedCallGasLimit","type":"uint256"},{"internalType":"uint256","name":"postRelayedCallGasLimit","type":"uint256"},{"internalType":"uint256","name":"calldataSizeLimit","type":"uint256"}],"internalType":"struct IPaymaster.GasAndDataLimits","name":"limits","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHubAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPaymentData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelayHubDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getTokenToEthOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"isTokenWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"context","type":"bytes"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256","name":"gasUseWithoutPost","type":"uint256"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"name":"postRelayedCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"validUntil","type":"uint256"}],"internalType":"struct IForwarder.ForwardRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct GsnTypes.RelayData","name":"relayData","type":"tuple"}],"internalType":"struct GsnTypes.RelayRequest","name":"relayRequest","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"maxPossibleGas","type":"uint256"}],"name":"preRelayedCall","outputs":[{"internalType":"bytes","name":"context","type":"bytes"},{"internalType":"bool","name":"revertOnRecipientRevert","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_gasUsedByPost","type":"uint256"}],"name":"setGasUsedByPost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minBalance","type":"uint256"}],"name":"setMinBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minGas","type":"uint256"}],"name":"setMinGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"paymentToken","type":"address"}],"name":"setPaymentToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRelayHub","name":"hub","type":"address"}],"name":"setRelayHub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"setTrustedForwarder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionPaymaster","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"whitelist","type":"bool"}],"name":"whitelistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"target","type":"address"}],"name":"withdrawRelayHubDepositTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"@_1913":{"entryPoint":null,"id":1913,"parameterSlots":0,"returnSlots":0},"@_3658":{"entryPoint":null,"id":3658,"parameterSlots":5,"returnSlots":0},"@_checkOwner_1944":{"entryPoint":654,"id":1944,"parameterSlots":0,"returnSlots":0},"@_msgSender_2092":{"entryPoint":282,"id":2092,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_2001":{"entryPoint":290,"id":2001,"parameterSlots":1,"returnSlots":0},"@owner_1930":{"entryPoint":799,"id":1930,"parameterSlots":0,"returnSlots":1},"@setRelayHub_114":{"entryPoint":570,"id":114,"parameterSlots":1,"returnSlots":0},"@setTrustedForwarder_126":{"entryPoint":486,"id":126,"parameterSlots":1,"returnSlots":0},"abi_decode_t_address_fromMemory":{"entryPoint":923,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_IRelayHub_$737_fromMemory":{"entryPoint":1051,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":982,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_addresst_uint256t_contract$_IRelayHub_$737_fromMemory":{"entryPoint":1074,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":1268,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1307,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":1210,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":877,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_IRelayHub_$737":{"entryPoint":1005,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":845,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":946,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":840,"id":null,"parameterSlots":0,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":1227,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":897,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_IRelayHub_$737":{"entryPoint":1025,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":956,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3843:25","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:25","statements":[{"nodeType":"YulAssignment","src":"57:19:25","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:25","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:25"},"nodeType":"YulFunctionCall","src":"67:9:25"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:25"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:25","type":""}],"src":"7:75:25"},{"body":{"nodeType":"YulBlock","src":"177:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:25"},"nodeType":"YulFunctionCall","src":"187:12:25"},"nodeType":"YulExpressionStatement","src":"187:12:25"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:25"},{"body":{"nodeType":"YulBlock","src":"300:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:25"},"nodeType":"YulFunctionCall","src":"310:12:25"},"nodeType":"YulExpressionStatement","src":"310:12:25"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:25"},{"body":{"nodeType":"YulBlock","src":"379:81:25","statements":[{"nodeType":"YulAssignment","src":"389:65:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:25","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:25"},"nodeType":"YulFunctionCall","src":"400:54:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:25"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:25","type":""}],"src":"334:126:25"},{"body":{"nodeType":"YulBlock","src":"511:51:25","statements":[{"nodeType":"YulAssignment","src":"521:35:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:25"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:25"},"nodeType":"YulFunctionCall","src":"532:24:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:25"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:25","type":""}],"src":"466:96:25"},{"body":{"nodeType":"YulBlock","src":"611:79:25","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:25"},"nodeType":"YulFunctionCall","src":"670:12:25"},"nodeType":"YulExpressionStatement","src":"670:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:25"},"nodeType":"YulFunctionCall","src":"641:24:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:25"},"nodeType":"YulFunctionCall","src":"631:35:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:25"},"nodeType":"YulFunctionCall","src":"624:43:25"},"nodeType":"YulIf","src":"621:63:25"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:25","type":""}],"src":"568:122:25"},{"body":{"nodeType":"YulBlock","src":"759:80:25","statements":[{"nodeType":"YulAssignment","src":"769:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"784:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"778:5:25"},"nodeType":"YulFunctionCall","src":"778:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"769:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"827:5:25"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"800:26:25"},"nodeType":"YulFunctionCall","src":"800:33:25"},"nodeType":"YulExpressionStatement","src":"800:33:25"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"737:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"745:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"753:5:25","type":""}],"src":"696:143:25"},{"body":{"nodeType":"YulBlock","src":"890:32:25","statements":[{"nodeType":"YulAssignment","src":"900:16:25","value":{"name":"value","nodeType":"YulIdentifier","src":"911:5:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"900:7:25"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"872:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"882:7:25","type":""}],"src":"845:77:25"},{"body":{"nodeType":"YulBlock","src":"971:79:25","statements":[{"body":{"nodeType":"YulBlock","src":"1028:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1037:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1040:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1030:6:25"},"nodeType":"YulFunctionCall","src":"1030:12:25"},"nodeType":"YulExpressionStatement","src":"1030:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"994:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1019:5:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1001:17:25"},"nodeType":"YulFunctionCall","src":"1001:24:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"991:2:25"},"nodeType":"YulFunctionCall","src":"991:35:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"984:6:25"},"nodeType":"YulFunctionCall","src":"984:43:25"},"nodeType":"YulIf","src":"981:63:25"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"964:5:25","type":""}],"src":"928:122:25"},{"body":{"nodeType":"YulBlock","src":"1119:80:25","statements":[{"nodeType":"YulAssignment","src":"1129:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1144:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1138:5:25"},"nodeType":"YulFunctionCall","src":"1138:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1129:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1187:5:25"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1160:26:25"},"nodeType":"YulFunctionCall","src":"1160:33:25"},"nodeType":"YulExpressionStatement","src":"1160:33:25"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1097:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"1105:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1113:5:25","type":""}],"src":"1056:143:25"},{"body":{"nodeType":"YulBlock","src":"1267:51:25","statements":[{"nodeType":"YulAssignment","src":"1277:35:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1306:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1288:17:25"},"nodeType":"YulFunctionCall","src":"1288:24:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1277:7:25"}]}]},"name":"cleanup_t_contract$_IRelayHub_$737","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1249:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1259:7:25","type":""}],"src":"1205:113:25"},{"body":{"nodeType":"YulBlock","src":"1384:96:25","statements":[{"body":{"nodeType":"YulBlock","src":"1458:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1467:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1470:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1460:6:25"},"nodeType":"YulFunctionCall","src":"1460:12:25"},"nodeType":"YulExpressionStatement","src":"1460:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1407:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1449:5:25"}],"functionName":{"name":"cleanup_t_contract$_IRelayHub_$737","nodeType":"YulIdentifier","src":"1414:34:25"},"nodeType":"YulFunctionCall","src":"1414:41:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1404:2:25"},"nodeType":"YulFunctionCall","src":"1404:52:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1397:6:25"},"nodeType":"YulFunctionCall","src":"1397:60:25"},"nodeType":"YulIf","src":"1394:80:25"}]},"name":"validator_revert_t_contract$_IRelayHub_$737","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1377:5:25","type":""}],"src":"1324:156:25"},{"body":{"nodeType":"YulBlock","src":"1566:97:25","statements":[{"nodeType":"YulAssignment","src":"1576:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1591:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1585:5:25"},"nodeType":"YulFunctionCall","src":"1585:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1576:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1651:5:25"}],"functionName":{"name":"validator_revert_t_contract$_IRelayHub_$737","nodeType":"YulIdentifier","src":"1607:43:25"},"nodeType":"YulFunctionCall","src":"1607:50:25"},"nodeType":"YulExpressionStatement","src":"1607:50:25"}]},"name":"abi_decode_t_contract$_IRelayHub_$737_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1544:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"1552:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1560:5:25","type":""}],"src":"1486:177:25"},{"body":{"nodeType":"YulBlock","src":"1831:849:25","statements":[{"body":{"nodeType":"YulBlock","src":"1878:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1880:77:25"},"nodeType":"YulFunctionCall","src":"1880:79:25"},"nodeType":"YulExpressionStatement","src":"1880:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1852:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"1861:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1848:3:25"},"nodeType":"YulFunctionCall","src":"1848:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"1873:3:25","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1844:3:25"},"nodeType":"YulFunctionCall","src":"1844:33:25"},"nodeType":"YulIf","src":"1841:120:25"},{"nodeType":"YulBlock","src":"1971:128:25","statements":[{"nodeType":"YulVariableDeclaration","src":"1986:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"2000:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1990:6:25","type":""}]},{"nodeType":"YulAssignment","src":"2015:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2061:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"2072:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2057:3:25"},"nodeType":"YulFunctionCall","src":"2057:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2081:7:25"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"2025:31:25"},"nodeType":"YulFunctionCall","src":"2025:64:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2015:6:25"}]}]},{"nodeType":"YulBlock","src":"2109:129:25","statements":[{"nodeType":"YulVariableDeclaration","src":"2124:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"2138:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2128:6:25","type":""}]},{"nodeType":"YulAssignment","src":"2154:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2200:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"2211:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2196:3:25"},"nodeType":"YulFunctionCall","src":"2196:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2220:7:25"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"2164:31:25"},"nodeType":"YulFunctionCall","src":"2164:64:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2154:6:25"}]}]},{"nodeType":"YulBlock","src":"2248:129:25","statements":[{"nodeType":"YulVariableDeclaration","src":"2263:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"2277:2:25","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2267:6:25","type":""}]},{"nodeType":"YulAssignment","src":"2293:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2339:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"2350:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2335:3:25"},"nodeType":"YulFunctionCall","src":"2335:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2359:7:25"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"2303:31:25"},"nodeType":"YulFunctionCall","src":"2303:64:25"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2293:6:25"}]}]},{"nodeType":"YulBlock","src":"2387:129:25","statements":[{"nodeType":"YulVariableDeclaration","src":"2402:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"2416:2:25","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2406:6:25","type":""}]},{"nodeType":"YulAssignment","src":"2432:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2478:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"2489:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2474:3:25"},"nodeType":"YulFunctionCall","src":"2474:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2498:7:25"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"2442:31:25"},"nodeType":"YulFunctionCall","src":"2442:64:25"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2432:6:25"}]}]},{"nodeType":"YulBlock","src":"2526:147:25","statements":[{"nodeType":"YulVariableDeclaration","src":"2541:17:25","value":{"kind":"number","nodeType":"YulLiteral","src":"2555:3:25","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2545:6:25","type":""}]},{"nodeType":"YulAssignment","src":"2572:91:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2635:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"2646:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2631:3:25"},"nodeType":"YulFunctionCall","src":"2631:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2655:7:25"}],"functionName":{"name":"abi_decode_t_contract$_IRelayHub_$737_fromMemory","nodeType":"YulIdentifier","src":"2582:48:25"},"nodeType":"YulFunctionCall","src":"2582:81:25"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2572:6:25"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_addresst_uint256t_contract$_IRelayHub_$737_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1769:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1780:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1792:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1800:6:25","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1808:6:25","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1816:6:25","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1824:6:25","type":""}],"src":"1669:1011:25"},{"body":{"nodeType":"YulBlock","src":"2782:73:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2799:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"2804:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2792:6:25"},"nodeType":"YulFunctionCall","src":"2792:19:25"},"nodeType":"YulExpressionStatement","src":"2792:19:25"},{"nodeType":"YulAssignment","src":"2820:29:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2839:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"2844:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2835:3:25"},"nodeType":"YulFunctionCall","src":"2835:14:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"2820:11:25"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2754:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"2759:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"2770:11:25","type":""}],"src":"2686:169:25"},{"body":{"nodeType":"YulBlock","src":"2967:76:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2989:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"2997:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2985:3:25"},"nodeType":"YulFunctionCall","src":"2985:14:25"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"3001:34:25","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2978:6:25"},"nodeType":"YulFunctionCall","src":"2978:58:25"},"nodeType":"YulExpressionStatement","src":"2978:58:25"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"2959:6:25","type":""}],"src":"2861:182:25"},{"body":{"nodeType":"YulBlock","src":"3195:220:25","statements":[{"nodeType":"YulAssignment","src":"3205:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3271:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"3276:2:25","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3212:58:25"},"nodeType":"YulFunctionCall","src":"3212:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3205:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3377:3:25"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"3288:88:25"},"nodeType":"YulFunctionCall","src":"3288:93:25"},"nodeType":"YulExpressionStatement","src":"3288:93:25"},{"nodeType":"YulAssignment","src":"3390:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3401:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"3406:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3397:3:25"},"nodeType":"YulFunctionCall","src":"3397:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3390:3:25"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3183:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3191:3:25","type":""}],"src":"3049:366:25"},{"body":{"nodeType":"YulBlock","src":"3592:248:25","statements":[{"nodeType":"YulAssignment","src":"3602:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3614:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"3625:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3610:3:25"},"nodeType":"YulFunctionCall","src":"3610:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3602:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3649:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"3660:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3645:3:25"},"nodeType":"YulFunctionCall","src":"3645:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3668:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"3674:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3664:3:25"},"nodeType":"YulFunctionCall","src":"3664:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3638:6:25"},"nodeType":"YulFunctionCall","src":"3638:47:25"},"nodeType":"YulExpressionStatement","src":"3638:47:25"},{"nodeType":"YulAssignment","src":"3694:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3828:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3702:124:25"},"nodeType":"YulFunctionCall","src":"3702:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3694:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3572:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3587:4:25","type":""}],"src":"3421:419:25"}]},"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 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_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function cleanup_t_contract$_IRelayHub_$737(value) -> cleaned {\n        cleaned := cleanup_t_address(value)\n    }\n\n    function validator_revert_t_contract$_IRelayHub_$737(value) {\n        if iszero(eq(value, cleanup_t_contract$_IRelayHub_$737(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_contract$_IRelayHub_$737_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_contract$_IRelayHub_$737(value)\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_addresst_uint256t_contract$_IRelayHub_$737_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n        if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 96\n\n            value3 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 128\n\n            value4 := abi_decode_t_contract$_IRelayHub_$737_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}\n","id":25,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040526201388060035562061a80600455670b1a2bc2ec5000006005553480156200002b57600080fd5b506040516200455838038062004558833981810160405281019062000051919062000432565b62000071620000656200011a60201b60201c565b6200012260201b60201c565b8473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600681905550620000fe84620001e660201b60201c565b6200010f816200023a60201b60201c565b50505050506200053d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001f66200028e60201b60201c565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6200024a6200028e60201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6200029e6200011a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002c46200031f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200031d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000314906200051b565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200037a826200034d565b9050919050565b6200038c816200036d565b81146200039857600080fd5b50565b600081519050620003ac8162000381565b92915050565b6000819050919050565b620003c781620003b2565b8114620003d357600080fd5b50565b600081519050620003e781620003bc565b92915050565b6000620003fa826200036d565b9050919050565b6200040c81620003ed565b81146200041857600080fd5b50565b6000815190506200042c8162000401565b92915050565b600080600080600060a0868803121562000451576200045062000348565b5b600062000461888289016200039b565b955050602062000474888289016200039b565b945050604062000487888289016200039b565b93505060606200049a88828901620003d6565b9250506080620004ad888289016200041b565b9150509295509295909350565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000503602083620004ba565b91506200051082620004cb565b602082019050919050565b600060208201905081810360008301526200053681620004f4565b9050919050565b608051613ff86200056060003960008181611057015261155d0152613ff86000f3fe6080604052600436106101fc5760003560e01c8063ad02b07d1161010d578063be37757a116100a0578063d4b839921161006f578063d4b83992146107fb578063da74222814610826578063df463a661461084f578063f2fde38b1461087a578063f9c002f7146108a35761031d565b8063be37757a14610765578063c4ae316814610790578063c5bb8758146107a7578063c91d956c146107d25761031d565b8063b039a88f116100dc578063b039a88f146106a7578063b5af090f146106d2578063b90b41cf1461070f578063bbdaa3c91461073a5761031d565b8063ad02b07d146105fe578063ad12e50e1461062a578063ad80e45114610655578063ae4f51cb1461067e5761031d565b8063715018a6116101905780637bb052641161015f5780637bb052641461052b5780637da0a877146105545780638da5cb5b1461057f578063921276ea146105aa578063a5dcd07b146105d55761031d565b8063715018a61461049757806374e861d6146104ae57806376fa01c3146104d9578063776d1a01146105025761031d565b80635c5e3db1116101cc5780635c5e3db1146103dd57806369fe0e2d146104085780636a326ab1146104315780636a8294181461045a5761031d565b8062be5dd4146103225780630ffb1d8b146103605780632afe31c1146103895780632d14c4b7146103b45761031d565b3661031d57600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102899061228a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aa67c91934306040518363ffffffff1660e01b81526004016102ee91906122eb565b6000604051808303818588803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b005b600080fd5b34801561032e57600080fd5b50610349600480360381019061034491906123d9565b6108ce565b604051610357929190612550565b60405180910390f35b34801561036c57600080fd5b50610387600480360381019061038291906125d8565b611276565b005b34801561039557600080fd5b5061039e611348565b6040516103ab9190612627565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190612680565b6113eb565b005b3480156103e957600080fd5b506103f2611485565b6040516103ff9190612627565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a91906126c0565b61148b565b005b34801561043d57600080fd5b50610458600480360381019061045391906126ed565b61149d565b005b34801561046657600080fd5b50610481600480360381019061047c9190612858565b611558565b60405161048e9190612627565b60405180910390f35b3480156104a357600080fd5b506104ac611623565b005b3480156104ba57600080fd5b506104c3611637565b6040516104d091906122eb565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb91906128d4565b611661565b005b34801561050e57600080fd5b50610529600480360381019061052491906126ed565b61193b565b005b34801561053757600080fd5b50610552600480360381019061054d91906129b6565b611987565b005b34801561056057600080fd5b506105696119d3565b60405161057691906122eb565b60405180910390f35b34801561058b57600080fd5b506105946119fd565b6040516105a191906122eb565b60405180910390f35b3480156105b657600080fd5b506105bf611a26565b6040516105cc9190612a27565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190612a49565b611a63565b005b34801561060a57600080fd5b50610613611b20565b604051610621929190612a92565b60405180910390f35b34801561063657600080fd5b5061063f611b51565b60405161064c9190612627565b60405180910390f35b34801561066157600080fd5b5061067c600480360381019061067791906126c0565b611b57565b005b34801561068a57600080fd5b506106a560048036038101906106a091906126c0565b611b69565b005b3480156106b357600080fd5b506106bc611b7b565b6040516106c99190612b1f565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906126ed565b611bc1565b6040516107069190612b3a565b60405180910390f35b34801561071b57600080fd5b50610724611c17565b6040516107319190612627565b60405180910390f35b34801561074657600080fd5b5061074f611c1d565b60405161075c9190612627565b60405180910390f35b34801561077157600080fd5b5061077a611c24565b6040516107879190612627565b60405180910390f35b34801561079c57600080fd5b506107a5611c2a565b005b3480156107b357600080fd5b506107bc611c5e565b6040516107c99190612627565b60405180910390f35b3480156107de57600080fd5b506107f960048036038101906107f491906126c0565b611c64565b005b34801561080757600080fd5b50610810611cb9565b60405161081d91906122eb565b60405180910390f35b34801561083257600080fd5b5061084d600480360381019061084891906126ed565b611cdf565b005b34801561085b57600080fd5b50610864611d2b565b6040516108719190612627565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c91906126ed565b611d3f565b005b3480156108af57600080fd5b506108b8611dc2565b6040516108c59190612627565b60405180910390f35b606060006108db88611a63565b600860149054906101000a900460ff161561092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092290612ba1565b60405180910390fd5b3688806000019061093c9190612bd0565b905060008980602001906109509190612bf8565b61095990612dc6565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260200160208101906109a791906126ed565b73ffffffffffffffffffffffffffffffffffffffff16146109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f490612e25565b60405180910390fd5b600080838060a00190610a109190612e45565b6004908092610a2193929190612eb2565b810190610a2e9190612eed565b91509150600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab590612f79565b60405180910390fd5b6000846000016020810190610ad391906126ed565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d0c5782600654610b5f9190612fc8565b8173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610bbc92919061301e565b602060405180830381865afa158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd919061305c565b1015610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c35906130d5565b60405180910390fd5b82600654610c4c9190612fc8565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610c8591906122eb565b602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc6919061305c565b1015610d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfe90613141565b60405180910390fd5b61104f565b6006548173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610d6c92919061301e565b602060405180830381865afa158015610d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad919061305c565b1015610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de5906131ad565b60405180910390fd5b6006548173ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610e2a91906122eb565b602060405180830381865afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b919061305c565b1015610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390613219565b60405180910390fd5b6000849050838173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610f0f92919061301e565b602060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f50919061305c565b1015610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8890613285565b60405180910390fd5b838273ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610fcb91906122eb565b602060405180830381865afa158015610fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100c919061305c565b101561104d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611044906132f1565b60405180910390fd5b505b60006110e9857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e49190613326565b611dc9565b905060006110f78583611558565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e53548b8d8a6040518363ffffffff1660e01b815260040161115892919061345c565b602060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611199919061305c565b90508082116111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d4906134d8565b60405180910390fd5b60045489606001351015611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90613544565b60405180910390fd5b88600001602081019061123991906126ed565b818360405160200161124d93929190613564565b60405160208183030381529060405260019a509a50505050505050505050965096945050505050565b61127e611ebb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e4906135e7565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113a591906122eb565b602060405180830381865afa1580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e6919061305c565b905090565b6113f3611ebb565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662f714ce83836040518363ffffffff1660e01b815260040161144f929190613616565b600060405180830381600087803b15801561146957600080fd5b505af115801561147d573d6000803e3d6000fd5b505050505050565b61290481565b611493611ebb565b8060068190555050565b6114a5611ebb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b9061368b565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f85856040518363ffffffff1660e01b81526004016115b692919061375a565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115fc919061384d565b60018151811061160f5761160e613896565b5b602002602001015190508091505092915050565b61162b611ebb565b6116356000611f39565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611669611637565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613911565b60405180910390fd5b82611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d9061397d565b60405180910390fd5b6000806000878781019061172a919061399d565b9250925092506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16638e53548b600354896117839190612fc8565b886040518363ffffffff1660e01b81526004016117a1929190613baf565b602060405180830381865afa1580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e2919061305c565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161184191906122eb565b602060405180830381865afa15801561185e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611882919061305c565b90506000829050600081866118979190613bdf565b905060055481846118a89190613bdf565b10156118c05786915081866118bd9190613bdf565b90505b8473ffffffffffffffffffffffffffffffffffffffff1662f714ce828a6040518363ffffffff1660e01b81526004016118fa929190613616565b600060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b5050505050505050505050505050505050565b611943611ebb565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61198f611ebb565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280601e81526020017f322e322e302b6f70656e67736e2e746f6b656e2e697061796d61737465720000815250905090565b808060200190611a739190612bf8565b60a0016020810190611a8591906126ed565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90613c5f565b60405180910390fd5b611b1d81611ffd565b50565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654915091509091565b60035481565b611b5f611ebb565b8060048190555050565b611b71611ebb565b8060038190555050565b611b83612205565b604051806080016040528061c350620186a0611b9f9190612fc8565b8152602001620186a081526020016201adb08152602001612904815250905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61c35081565b6201adb081565b60045481565b611c32611ebb565b600860149054906101000a900460ff1615600860146101000a81548160ff021916908315150217905550565b60055481565b611c6c611ebb565b60008111611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca690613ccb565b60405180910390fd5b8060058190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ce7611ebb565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61c350620186a0611d3c9190612fc8565b81565b611d47611ebb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad90613d5d565b60405180910390fd5b611dbf81611f39565b50565b620186a081565b6060600267ffffffffffffffff811115611de657611de561271a565b5b604051908082528060200260200182016040528015611e145781602001602082028036833780820191505090505b5090508281600081518110611e2c57611e2b613896565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611e7b57611e7a613896565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505092915050565b611ec36121fd565b73ffffffffffffffffffffffffffffffffffffffff16611ee16119fd565b73ffffffffffffffffffffffffffffffffffffffff1614611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90613dc9565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808280600001906120109190612bd0565b602001602081019061202291906126ed565b73ffffffffffffffffffffffffffffffffffffffff1663572b6c0560e01b8480602001906120509190612bf8565b60a001602081019061206291906126ed565b60405160240161207291906122eb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516120dc9190613e25565b600060405180830381855afa9150503d8060008114612117576040519150601f19603f3d011682016040523d82523d6000602084013e61211c565b606091505b509150915081612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890613e88565b60405180910390fd5b60208151146121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90613ef4565b60405180910390fd5b808060200190518101906121b99190613f29565b6121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ef90613fa2565b60405180910390fd5b505050565b600033905090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600082825260208201905092915050565b7f72656c6179206875622061646472657373206e6f742073657400000000000000600082015250565b600061227460198361222d565b915061227f8261223e565b602082019050919050565b600060208201905081810360008301526122a381612267565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122d5826122aa565b9050919050565b6122e5816122ca565b82525050565b600060208201905061230060008301846122dc565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000604082840312156123355761233461231a565b5b81905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126123635761236261233e565b5b8235905067ffffffffffffffff8111156123805761237f612343565b5b60208301915083600182028301111561239c5761239b612348565b5b9250929050565b6000819050919050565b6123b6816123a3565b81146123c157600080fd5b50565b6000813590506123d3816123ad565b92915050565b600080600080600080608087890312156123f6576123f5612310565b5b600087013567ffffffffffffffff81111561241457612413612315565b5b61242089828a0161231f565b965050602087013567ffffffffffffffff81111561244157612440612315565b5b61244d89828a0161234d565b9550955050604087013567ffffffffffffffff8111156124705761246f612315565b5b61247c89828a0161234d565b9350935050606061248f89828a016123c4565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b60005b838110156124d65780820151818401526020810190506124bb565b838111156124e5576000848401525b50505050565b6000601f19601f8301169050919050565b60006125078261249c565b61251181856124a7565b93506125218185602086016124b8565b61252a816124eb565b840191505092915050565b60008115159050919050565b61254a81612535565b82525050565b6000604082019050818103600083015261256a81856124fc565b90506125796020830184612541565b9392505050565b612589816122ca565b811461259457600080fd5b50565b6000813590506125a681612580565b92915050565b6125b581612535565b81146125c057600080fd5b50565b6000813590506125d2816125ac565b92915050565b600080604083850312156125ef576125ee612310565b5b60006125fd85828601612597565b925050602061260e858286016125c3565b9150509250929050565b612621816123a3565b82525050565b600060208201905061263c6000830184612618565b92915050565b600061264d826122aa565b9050919050565b61265d81612642565b811461266857600080fd5b50565b60008135905061267a81612654565b92915050565b6000806040838503121561269757612696612310565b5b60006126a5858286016123c4565b92505060206126b68582860161266b565b9150509250929050565b6000602082840312156126d6576126d5612310565b5b60006126e4848285016123c4565b91505092915050565b60006020828403121561270357612702612310565b5b600061271184828501612597565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612752826124eb565b810181811067ffffffffffffffff821117156127715761277061271a565b5b80604052505050565b6000612784612306565b90506127908282612749565b919050565b600067ffffffffffffffff8211156127b0576127af61271a565b5b602082029050602081019050919050565b60006127d46127cf84612795565b61277a565b905080838252602082019050602084028301858111156127f7576127f6612348565b5b835b81811015612820578061280c8882612597565b8452602084019350506020810190506127f9565b5050509392505050565b600082601f83011261283f5761283e61233e565b5b813561284f8482602086016127c1565b91505092915050565b6000806040838503121561286f5761286e612310565b5b600061287d858286016123c4565b925050602083013567ffffffffffffffff81111561289e5761289d612315565b5b6128aa8582860161282a565b9150509250929050565b600061010082840312156128cb576128ca61231a565b5b81905092915050565b6000806000806000608086880312156128f0576128ef612310565b5b600086013567ffffffffffffffff81111561290e5761290d612315565b5b61291a8882890161234d565b9550955050602061292d888289016125c3565b935050604061293e888289016123c4565b925050606086013567ffffffffffffffff81111561295f5761295e612315565b5b61296b888289016128b4565b9150509295509295909350565b6000612983826122ca565b9050919050565b61299381612978565b811461299e57600080fd5b50565b6000813590506129b08161298a565b92915050565b6000602082840312156129cc576129cb612310565b5b60006129da848285016129a1565b91505092915050565b600081519050919050565b60006129f9826129e3565b612a03818561222d565b9350612a138185602086016124b8565b612a1c816124eb565b840191505092915050565b60006020820190508181036000830152612a4181846129ee565b905092915050565b600060208284031215612a5f57612a5e612310565b5b600082013567ffffffffffffffff811115612a7d57612a7c612315565b5b612a898482850161231f565b91505092915050565b6000604082019050612aa760008301856122dc565b612ab46020830184612618565b9392505050565b612ac4816123a3565b82525050565b608082016000820151612ae06000850182612abb565b506020820151612af36020850182612abb565b506040820151612b066040850182612abb565b506060820151612b196060850182612abb565b50505050565b6000608082019050612b346000830184612aca565b92915050565b6000602082019050612b4f6000830184612541565b92915050565b7f5377617020706175736564000000000000000000000000000000000000000000600082015250565b6000612b8b600b8361222d565b9150612b9682612b55565b602082019050919050565b60006020820190508181036000830152612bba81612b7e565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160e003833603038112612bec57612beb612bc1565b5b80830191505092915050565b60008235600161010003833603038112612c1557612c14612bc1565b5b80830191505092915050565b600080fd5b600080fd5b600080fd5b600067ffffffffffffffff821115612c4b57612c4a61271a565b5b612c54826124eb565b9050602081019050919050565b82818337600083830152505050565b6000612c83612c7e84612c30565b61277a565b905082815260208101848484011115612c9f57612c9e612c2b565b5b612caa848285612c61565b509392505050565b600082601f830112612cc757612cc661233e565b5b8135612cd7848260208601612c70565b91505092915050565b60006101008284031215612cf757612cf6612c21565b5b612d0261010061277a565b90506000612d12848285016123c4565b6000830152506020612d26848285016123c4565b6020830152506040612d3a848285016123c4565b6040830152506060612d4e84828501612597565b6060830152506080612d6284828501612597565b60808301525060a0612d7684828501612597565b60a08301525060c082013567ffffffffffffffff811115612d9a57612d99612c26565b5b612da684828501612cb2565b60c08301525060e0612dba848285016123c4565b60e08301525092915050565b6000612dd23683612ce0565b9050919050565b7f556e6b6e6f776e20746172676574000000000000000000000000000000000000600082015250565b6000612e0f600e8361222d565b9150612e1a82612dd9565b602082019050919050565b60006020820190508181036000830152612e3e81612e02565b9050919050565b60008083356001602003843603038112612e6257612e61612bc1565b5b80840192508235915067ffffffffffffffff821115612e8457612e83612bc6565b5b602083019250600182023603831315612ea057612e9f612bcb565b5b509250929050565b600080fd5b600080fd5b60008085851115612ec657612ec5612ea8565b5b83861115612ed757612ed6612ead565b5b6001850283019150848603905094509492505050565b60008060408385031215612f0457612f03612310565b5b6000612f128582860161266b565b9250506020612f23858286016123c4565b9150509250929050565b7f546f6b656e206e6f742077686974656c69737465640000000000000000000000600082015250565b6000612f6360158361222d565b9150612f6e82612f2d565b602082019050919050565b60006020820190508181036000830152612f9281612f56565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fd3826123a3565b9150612fde836123a3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561301357613012612f99565b5b828201905092915050565b600060408201905061303360008301856122dc565b61304060208301846122dc565b9392505050565b600081519050613056816123ad565b92915050565b60006020828403121561307257613071612310565b5b600061308084828501613047565b91505092915050565b7f4665652b616d6f756e743a204e6f7420656e6f75676820616c6c6f77616e6365600082015250565b60006130bf60208361222d565b91506130ca82613089565b602082019050919050565b600060208201905081810360008301526130ee816130b2565b9050919050565b7f4665652b616d6f756e743a204e6f7420656e6f7567682062616c616e63650000600082015250565b600061312b601e8361222d565b9150613136826130f5565b602082019050919050565b6000602082019050818103600083015261315a8161311e565b9050919050565b7f4665653a204e6f7420656e6f75676820616c6c6f77616e636500000000000000600082015250565b600061319760198361222d565b91506131a282613161565b602082019050919050565b600060208201905081810360008301526131c68161318a565b9050919050565b7f4665653a204e6f7420656e6f7567682062616c616e6365000000000000000000600082015250565b600061320360178361222d565b915061320e826131cd565b602082019050919050565b60006020820190508181036000830152613232816131f6565b9050919050565b7f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000600082015250565b600061326f60148361222d565b915061327a82613239565b602082019050919050565b6000602082019050818103600083015261329e81613262565b9050919050565b7f4e6f7420656e6f7567682062616c616e63650000000000000000000000000000600082015250565b60006132db60128361222d565b91506132e6826132a5565b602082019050919050565b6000602082019050818103600083015261330a816132ce565b9050919050565b60008151905061332081612580565b92915050565b60006020828403121561333c5761333b612310565b5b600061334a84828501613311565b91505092915050565b61335c816122ca565b82525050565b600082825260208201905092915050565b600061337e8261249c565b6133888185613362565b93506133988185602086016124b8565b6133a1816124eb565b840191505092915050565b6000610100830160008301516133c56000860182612abb565b5060208301516133d86020860182612abb565b5060408301516133eb6040860182612abb565b5060608301516133fe6060860182613353565b5060808301516134116080860182613353565b5060a083015161342460a0860182613353565b5060c083015184820360c086015261343c8282613373565b91505060e083015161345160e0860182612abb565b508091505092915050565b60006040820190506134716000830185612618565b818103602083015261348381846133ac565b90509392505050565b7f4e6f7420656e6f75676820746f2070617920666f722074780000000000000000600082015250565b60006134c260188361222d565b91506134cd8261348c565b602082019050919050565b600060208201905081810360008301526134f1816134b5565b9050919050565b7f4e6f7420656e6f75676820676173000000000000000000000000000000000000600082015250565b600061352e600e8361222d565b9150613539826134f8565b602082019050919050565b6000602082019050818103600083015261355d81613521565b9050919050565b600060608201905061357960008301866122dc565b6135866020830185612618565b6135936040830184612618565b949350505050565b7f546f6b656e206164647265737320697320300000000000000000000000000000600082015250565b60006135d160128361222d565b91506135dc8261359b565b602082019050919050565b60006020820190508181036000830152613600816135c4565b9050919050565b61361081612642565b82525050565b600060408201905061362b6000830185612618565b6136386020830184613607565b9392505050565b7f57726f6e67205061796d656e7420546f6b656e00000000000000000000000000600082015250565b600061367560138361222d565b91506136808261363f565b602082019050919050565b600060208201905081810360008301526136a481613668565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006136e38383613353565b60208301905092915050565b6000602082019050919050565b6000613707826136ab565b61371181856136b6565b935061371c836136c7565b8060005b8381101561374d57815161373488826136d7565b975061373f836136ef565b925050600181019050613720565b5085935050505092915050565b600060408201905061376f6000830185612618565b818103602083015261378181846136fc565b90509392505050565b600067ffffffffffffffff8211156137a5576137a461271a565b5b602082029050602081019050919050565b60006137c96137c48461378a565b61277a565b905080838252602082019050602084028301858111156137ec576137eb612348565b5b835b8181101561381557806138018882613047565b8452602084019350506020810190506137ee565b5050509392505050565b600082601f8301126138345761383361233e565b5b81516138448482602086016137b6565b91505092915050565b60006020828403121561386357613862612310565b5b600082015167ffffffffffffffff81111561388157613880612315565b5b61388d8482850161381f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f63616e206f6e6c792062652063616c6c65642062792052656c61794875620000600082015250565b60006138fb601e8361222d565b9150613906826138c5565b602082019050919050565b6000602082019050818103600083015261392a816138ee565b9050919050565b7f4e6f207375636365737300000000000000000000000000000000000000000000600082015250565b6000613967600a8361222d565b915061397282613931565b602082019050919050565b600060208201905081810360008301526139968161395a565b9050919050565b6000806000606084860312156139b6576139b5612310565b5b60006139c48682870161266b565b93505060206139d5868287016123c4565b92505060406139e6868287016123c4565b9150509250925092565b60006139ff60208401846123c4565b905092915050565b6000613a166020840184612597565b905092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613a4a57613a49613a28565b5b83810192508235915060208301925067ffffffffffffffff821115613a7257613a71613a1e565b5b600182023603841315613a8857613a87613a23565b5b509250929050565b6000613a9c8385613362565b9350613aa9838584612c61565b613ab2836124eb565b840190509392505050565b60006101008301613ad160008401846139f0565b613ade6000860182612abb565b50613aec60208401846139f0565b613af96020860182612abb565b50613b0760408401846139f0565b613b146040860182612abb565b50613b226060840184613a07565b613b2f6060860182613353565b50613b3d6080840184613a07565b613b4a6080860182613353565b50613b5860a0840184613a07565b613b6560a0860182613353565b50613b7360c0840184613a2d565b85830360c0870152613b86838284613a90565b92505050613b9760e08401846139f0565b613ba460e0860182612abb565b508091505092915050565b6000604082019050613bc46000830185612618565b8181036020830152613bd68184613abd565b90509392505050565b6000613bea826123a3565b9150613bf5836123a3565b925082821015613c0857613c07612f99565b5b828203905092915050565b7f466f72776172646572206973206e6f7420747275737465640000000000000000600082015250565b6000613c4960188361222d565b9150613c5482613c13565b602082019050919050565b60006020820190508181036000830152613c7881613c3c565b9050919050565b7f57726f6e67206d696e2062616c616e6365000000000000000000000000000000600082015250565b6000613cb560118361222d565b9150613cc082613c7f565b602082019050919050565b60006020820190508181036000830152613ce481613ca8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d4760268361222d565b9150613d5282613ceb565b604082019050919050565b60006020820190508181036000830152613d7681613d3a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613db360208361222d565b9150613dbe82613d7d565b602082019050919050565b60006020820190508181036000830152613de281613da6565b9050919050565b600081905092915050565b6000613dff8261249c565b613e098185613de9565b9350613e198185602086016124b8565b80840191505092915050565b6000613e318284613df4565b915081905092915050565b7f697354727573746564466f727761726465723a20726576657274656400000000600082015250565b6000613e72601c8361222d565b9150613e7d82613e3c565b602082019050919050565b60006020820190508181036000830152613ea181613e65565b9050919050565b7f697354727573746564466f727761726465723a2062616420726573706f6e7365600082015250565b6000613ede60208361222d565b9150613ee982613ea8565b602082019050919050565b60006020820190508181036000830152613f0d81613ed1565b9050919050565b600081519050613f23816125ac565b92915050565b600060208284031215613f3f57613f3e612310565b5b6000613f4d84828501613f14565b91505092915050565b7f696e76616c696420666f7277617264657220666f7220726563697069656e7400600082015250565b6000613f8c601f8361222d565b9150613f9782613f56565b602082019050919050565b60006020820190508181036000830152613fbb81613f7f565b905091905056fea2646970667358221220210b401e7864f800d193f50c378824a320093824fcc07f7f1d2612a6a35e435964736f6c634300080d0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH3 0x13880 PUSH1 0x3 SSTORE PUSH3 0x61A80 PUSH1 0x4 SSTORE PUSH8 0xB1A2BC2EC500000 PUSH1 0x5 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x4558 CODESIZE SUB DUP1 PUSH3 0x4558 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x51 SWAP2 SWAP1 PUSH3 0x432 JUMP JUMPDEST PUSH3 0x71 PUSH3 0x65 PUSH3 0x11A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x122 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP3 PUSH1 0x8 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH3 0xFE DUP5 PUSH3 0x1E6 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x10F DUP2 PUSH3 0x23A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP POP PUSH3 0x53D JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH3 0x1F6 PUSH3 0x28E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH3 0x24A PUSH3 0x28E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH3 0x29E PUSH3 0x11A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2C4 PUSH3 0x31F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x31D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x314 SWAP1 PUSH3 0x51B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x37A DUP3 PUSH3 0x34D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x38C DUP2 PUSH3 0x36D JUMP JUMPDEST DUP2 EQ PUSH3 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x3AC DUP2 PUSH3 0x381 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x3C7 DUP2 PUSH3 0x3B2 JUMP JUMPDEST DUP2 EQ PUSH3 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x3E7 DUP2 PUSH3 0x3BC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3FA DUP3 PUSH3 0x36D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x40C DUP2 PUSH3 0x3ED JUMP JUMPDEST DUP2 EQ PUSH3 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x42C DUP2 PUSH3 0x401 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x451 JUMPI PUSH3 0x450 PUSH3 0x348 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH3 0x461 DUP9 DUP3 DUP10 ADD PUSH3 0x39B JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH3 0x474 DUP9 DUP3 DUP10 ADD PUSH3 0x39B JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH3 0x487 DUP9 DUP3 DUP10 ADD PUSH3 0x39B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0x49A DUP9 DUP3 DUP10 ADD PUSH3 0x3D6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH3 0x4AD DUP9 DUP3 DUP10 ADD PUSH3 0x41B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x503 PUSH1 0x20 DUP4 PUSH3 0x4BA JUMP JUMPDEST SWAP2 POP PUSH3 0x510 DUP3 PUSH3 0x4CB JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x536 DUP2 PUSH3 0x4F4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x3FF8 PUSH3 0x560 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x1057 ADD MSTORE PUSH2 0x155D ADD MSTORE PUSH2 0x3FF8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1FC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAD02B07D GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xBE37757A GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xD4B83992 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x7FB JUMPI DUP1 PUSH4 0xDA742228 EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0xDF463A66 EQ PUSH2 0x84F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0xF9C002F7 EQ PUSH2 0x8A3 JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0xBE37757A EQ PUSH2 0x765 JUMPI DUP1 PUSH4 0xC4AE3168 EQ PUSH2 0x790 JUMPI DUP1 PUSH4 0xC5BB8758 EQ PUSH2 0x7A7 JUMPI DUP1 PUSH4 0xC91D956C EQ PUSH2 0x7D2 JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0xB039A88F GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xB039A88F EQ PUSH2 0x6A7 JUMPI DUP1 PUSH4 0xB5AF090F EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0xB90B41CF EQ PUSH2 0x70F JUMPI DUP1 PUSH4 0xBBDAA3C9 EQ PUSH2 0x73A JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0xAD02B07D EQ PUSH2 0x5FE JUMPI DUP1 PUSH4 0xAD12E50E EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0xAD80E451 EQ PUSH2 0x655 JUMPI DUP1 PUSH4 0xAE4F51CB EQ PUSH2 0x67E JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0x190 JUMPI DUP1 PUSH4 0x7BB05264 GT PUSH2 0x15F JUMPI DUP1 PUSH4 0x7BB05264 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x7DA0A877 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0x921276EA EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0xA5DCD07B EQ PUSH2 0x5D5 JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x74E861D6 EQ PUSH2 0x4AE JUMPI DUP1 PUSH4 0x76FA01C3 EQ PUSH2 0x4D9 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x502 JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0x5C5E3DB1 GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x5C5E3DB1 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x69FE0E2D EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x6A326AB1 EQ PUSH2 0x431 JUMPI DUP1 PUSH4 0x6A829418 EQ PUSH2 0x45A JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH3 0xBE5DD4 EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0xFFB1D8B EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0x2AFE31C1 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x2D14C4B7 EQ PUSH2 0x3B4 JUMPI PUSH2 0x31D JUMP JUMPDEST CALLDATASIZE PUSH2 0x31D JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x292 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x289 SWAP1 PUSH2 0x228A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAA67C919 CALLVALUE ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EE SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x349 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x344 SWAP2 SWAP1 PUSH2 0x23D9 JUMP JUMPDEST PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x357 SWAP3 SWAP2 SWAP1 PUSH2 0x2550 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x387 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x382 SWAP2 SWAP1 PUSH2 0x25D8 JUMP JUMPDEST PUSH2 0x1276 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x1348 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AB SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2680 JUMP JUMPDEST PUSH2 0x13EB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1485 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x42F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x42A SWAP2 SWAP1 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x148B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x458 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x149D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x481 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x47C SWAP2 SWAP1 PUSH2 0x2858 JUMP JUMPDEST PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x48E SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AC PUSH2 0x1623 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C3 PUSH2 0x1637 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4D0 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x500 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4FB SWAP2 SWAP1 PUSH2 0x28D4 JUMP JUMPDEST PUSH2 0x1661 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x529 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x524 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x193B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x552 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x29B6 JUMP JUMPDEST PUSH2 0x1987 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x569 PUSH2 0x19D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x594 PUSH2 0x19FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A1 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5BF PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5CC SWAP2 SWAP1 PUSH2 0x2A27 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5FC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5F7 SWAP2 SWAP1 PUSH2 0x2A49 JUMP JUMPDEST PUSH2 0x1A63 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x613 PUSH2 0x1B20 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x621 SWAP3 SWAP2 SWAP1 PUSH2 0x2A92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x636 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x63F PUSH2 0x1B51 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x64C SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x67C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x677 SWAP2 SWAP1 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x1B57 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6A0 SWAP2 SWAP1 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x1B69 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6BC PUSH2 0x1B7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0x2B1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6F4 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x1BC1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x706 SWAP2 SWAP1 PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x724 PUSH2 0x1C17 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x731 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x746 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74F PUSH2 0x1C1D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x75C SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x77A PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x787 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7A5 PUSH2 0x1C2A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BC PUSH2 0x1C5E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C9 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7F4 SWAP2 SWAP1 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x1C64 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x810 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81D SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x848 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x1CDF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x864 PUSH2 0x1D2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x89C SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x1D3F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B8 PUSH2 0x1DC2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C5 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x8DB DUP9 PUSH2 0x1A63 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x92B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x922 SWAP1 PUSH2 0x2BA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLDATASIZE DUP9 DUP1 PUSH1 0x0 ADD SWAP1 PUSH2 0x93C SWAP2 SWAP1 PUSH2 0x2BD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x950 SWAP2 SWAP1 PUSH2 0x2BF8 JUMP JUMPDEST PUSH2 0x959 SWAP1 PUSH2 0x2DC6 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x9A7 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9F4 SWAP1 PUSH2 0x2E25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 PUSH1 0xA0 ADD SWAP1 PUSH2 0xA10 SWAP2 SWAP1 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x4 SWAP1 DUP1 SWAP3 PUSH2 0xA21 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2EB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xA2E SWAP2 SWAP1 PUSH2 0x2EED JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x9 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xABE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAB5 SWAP1 PUSH2 0x2F79 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xAD3 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD0C JUMPI DUP3 PUSH1 0x6 SLOAD PUSH2 0xB5F SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E DUP5 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBBC SWAP3 SWAP2 SWAP1 PUSH2 0x301E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xBFD SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xC3E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC35 SWAP1 PUSH2 0x30D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x6 SLOAD PUSH2 0xC4C SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC85 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xCC6 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xD07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCFE SWAP1 PUSH2 0x3141 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x104F JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E DUP5 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD6C SWAP3 SWAP2 SWAP1 PUSH2 0x301E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xDAD SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xDEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE5 SWAP1 PUSH2 0x31AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE2A SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xE6B SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xEAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEA3 SWAP1 PUSH2 0x3219 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 SWAP1 POP DUP4 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E DUP6 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0F SWAP3 SWAP2 SWAP1 PUSH2 0x301E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xF50 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xF91 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF88 SWAP1 PUSH2 0x3285 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFCB SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x100C SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0x104D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1044 SWAP1 PUSH2 0x32F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x10E9 DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD5C4648 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 0x10C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x10E4 SWAP2 SWAP1 PUSH2 0x3326 JUMP JUMPDEST PUSH2 0x1DC9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x10F7 DUP6 DUP4 PUSH2 0x1558 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8E53548B DUP14 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1158 SWAP3 SWAP2 SWAP1 PUSH2 0x345C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1175 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1199 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT PUSH2 0x11DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11D4 SWAP1 PUSH2 0x34D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD DUP10 PUSH1 0x60 ADD CALLDATALOAD LT ISZERO PUSH2 0x1226 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x121D SWAP1 PUSH2 0x3544 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1239 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST DUP2 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x124D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3564 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x1 SWAP11 POP SWAP11 POP POP POP POP POP POP POP POP POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x127E PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12ED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12E4 SWAP1 PUSH2 0x35E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x9 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13A5 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x13E6 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x13F3 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xF714CE DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x144F SWAP3 SWAP2 SWAP1 PUSH2 0x3616 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x147D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2904 DUP2 JUMP JUMPDEST PUSH2 0x1493 PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x6 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x14A5 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1514 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x150B SWAP1 PUSH2 0x368B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x8 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD06CA61F DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15B6 SWAP3 SWAP2 SWAP1 PUSH2 0x375A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15FC SWAP2 SWAP1 PUSH2 0x384D JUMP JUMPDEST PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x160F JUMPI PUSH2 0x160E PUSH2 0x3896 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x162B PUSH2 0x1EBB JUMP JUMPDEST PUSH2 0x1635 PUSH1 0x0 PUSH2 0x1F39 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1669 PUSH2 0x1637 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x16D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16CD SWAP1 PUSH2 0x3911 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x1716 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x170D SWAP1 PUSH2 0x397D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 DUP8 DUP2 ADD SWAP1 PUSH2 0x172A SWAP2 SWAP1 PUSH2 0x399D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8E53548B PUSH1 0x3 SLOAD DUP10 PUSH2 0x1783 SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP9 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17A1 SWAP3 SWAP2 SWAP1 PUSH2 0x3BAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x17E2 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1841 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x185E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1882 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 DUP2 DUP7 PUSH2 0x1897 SWAP2 SWAP1 PUSH2 0x3BDF JUMP JUMPDEST SWAP1 POP PUSH1 0x5 SLOAD DUP2 DUP5 PUSH2 0x18A8 SWAP2 SWAP1 PUSH2 0x3BDF JUMP JUMPDEST LT ISZERO PUSH2 0x18C0 JUMPI DUP7 SWAP2 POP DUP2 DUP7 PUSH2 0x18BD SWAP2 SWAP1 PUSH2 0x3BDF JUMP JUMPDEST SWAP1 POP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xF714CE DUP3 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18FA SWAP3 SWAP2 SWAP1 PUSH2 0x3616 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1928 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1943 PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x198F PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x322E322E302B6F70656E67736E2E746F6B656E2E697061796D61737465720000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1A73 SWAP2 SWAP1 PUSH2 0x2BF8 JUMP JUMPDEST PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1A85 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1B14 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B0B SWAP1 PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1B1D DUP2 PUSH2 0x1FFD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x6 SLOAD SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1B5F PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x1B71 PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x3 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x1B83 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xC350 PUSH3 0x186A0 PUSH2 0x1B9F SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x186A0 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x1ADB0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2904 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC350 DUP2 JUMP JUMPDEST PUSH3 0x1ADB0 DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1C32 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x8 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH1 0x8 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1C6C PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x1CAF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CA6 SWAP1 PUSH2 0x3CCB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1CE7 PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0xC350 PUSH3 0x186A0 PUSH2 0x1D3C SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP2 JUMP JUMPDEST PUSH2 0x1D47 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1DB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DAD SWAP1 PUSH2 0x3D5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1DBF DUP2 PUSH2 0x1F39 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x186A0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DE6 JUMPI PUSH2 0x1DE5 PUSH2 0x271A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E14 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1E2C JUMPI PUSH2 0x1E2B PUSH2 0x3896 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1E7B JUMPI PUSH2 0x1E7A PUSH2 0x3896 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1EC3 PUSH2 0x21FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1EE1 PUSH2 0x19FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F37 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F2E SWAP1 PUSH2 0x3DC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x0 ADD SWAP1 PUSH2 0x2010 SWAP2 SWAP1 PUSH2 0x2BD0 JUMP JUMPDEST PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2022 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x572B6C05 PUSH1 0xE0 SHL DUP5 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2050 SWAP2 SWAP1 PUSH2 0x2BF8 JUMP JUMPDEST PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2062 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2072 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x20DC SWAP2 SWAP1 PUSH2 0x3E25 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2117 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x211C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2161 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2158 SWAP1 PUSH2 0x3E88 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP2 MLOAD EQ PUSH2 0x21A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x219C SWAP1 PUSH2 0x3EF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21B9 SWAP2 SWAP1 PUSH2 0x3F29 JUMP JUMPDEST PUSH2 0x21F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21EF SWAP1 PUSH2 0x3FA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x72656C6179206875622061646472657373206E6F742073657400000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2274 PUSH1 0x19 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x227F DUP3 PUSH2 0x223E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x22A3 DUP2 PUSH2 0x2267 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22D5 DUP3 PUSH2 0x22AA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x22E5 DUP2 PUSH2 0x22CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2300 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x22DC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2335 JUMPI PUSH2 0x2334 PUSH2 0x231A JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2363 JUMPI PUSH2 0x2362 PUSH2 0x233E JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2380 JUMPI PUSH2 0x237F PUSH2 0x2343 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x239C JUMPI PUSH2 0x239B PUSH2 0x2348 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x23B6 DUP2 PUSH2 0x23A3 JUMP JUMPDEST DUP2 EQ PUSH2 0x23C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x23D3 DUP2 PUSH2 0x23AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x23F6 JUMPI PUSH2 0x23F5 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2414 JUMPI PUSH2 0x2413 PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x2420 DUP10 DUP3 DUP11 ADD PUSH2 0x231F JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2441 JUMPI PUSH2 0x2440 PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x244D DUP10 DUP3 DUP11 ADD PUSH2 0x234D JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2470 JUMPI PUSH2 0x246F PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x247C DUP10 DUP3 DUP11 ADD PUSH2 0x234D JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x60 PUSH2 0x248F DUP10 DUP3 DUP11 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24D6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x24BB JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x24E5 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2507 DUP3 PUSH2 0x249C JUMP JUMPDEST PUSH2 0x2511 DUP2 DUP6 PUSH2 0x24A7 JUMP JUMPDEST SWAP4 POP PUSH2 0x2521 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24B8 JUMP JUMPDEST PUSH2 0x252A DUP2 PUSH2 0x24EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x254A DUP2 PUSH2 0x2535 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x256A DUP2 DUP6 PUSH2 0x24FC JUMP JUMPDEST SWAP1 POP PUSH2 0x2579 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2541 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2589 DUP2 PUSH2 0x22CA JUMP JUMPDEST DUP2 EQ PUSH2 0x2594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x25A6 DUP2 PUSH2 0x2580 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x25B5 DUP2 PUSH2 0x2535 JUMP JUMPDEST DUP2 EQ PUSH2 0x25C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x25D2 DUP2 PUSH2 0x25AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25EF JUMPI PUSH2 0x25EE PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x25FD DUP6 DUP3 DUP7 ADD PUSH2 0x2597 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x260E DUP6 DUP3 DUP7 ADD PUSH2 0x25C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2621 DUP2 PUSH2 0x23A3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x263C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2618 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x264D DUP3 PUSH2 0x22AA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x265D DUP2 PUSH2 0x2642 JUMP JUMPDEST DUP2 EQ PUSH2 0x2668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x267A DUP2 PUSH2 0x2654 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2697 JUMPI PUSH2 0x2696 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x26A5 DUP6 DUP3 DUP7 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x26B6 DUP6 DUP3 DUP7 ADD PUSH2 0x266B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26D6 JUMPI PUSH2 0x26D5 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x26E4 DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2703 JUMPI PUSH2 0x2702 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2711 DUP5 DUP3 DUP6 ADD PUSH2 0x2597 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2752 DUP3 PUSH2 0x24EB JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2771 JUMPI PUSH2 0x2770 PUSH2 0x271A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2784 PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP PUSH2 0x2790 DUP3 DUP3 PUSH2 0x2749 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x27B0 JUMPI PUSH2 0x27AF PUSH2 0x271A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D4 PUSH2 0x27CF DUP5 PUSH2 0x2795 JUMP JUMPDEST PUSH2 0x277A JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x27F7 JUMPI PUSH2 0x27F6 PUSH2 0x2348 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP1 PUSH2 0x280C DUP9 DUP3 PUSH2 0x2597 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x27F9 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x283F JUMPI PUSH2 0x283E PUSH2 0x233E JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x284F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x27C1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x286F JUMPI PUSH2 0x286E PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x287D DUP6 DUP3 DUP7 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x289E JUMPI PUSH2 0x289D PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x28AA DUP6 DUP3 DUP7 ADD PUSH2 0x282A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28CB JUMPI PUSH2 0x28CA PUSH2 0x231A JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x28F0 JUMPI PUSH2 0x28EF PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x290E JUMPI PUSH2 0x290D PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x291A DUP9 DUP3 DUP10 ADD PUSH2 0x234D JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 PUSH2 0x292D DUP9 DUP3 DUP10 ADD PUSH2 0x25C3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x293E DUP9 DUP3 DUP10 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x295F JUMPI PUSH2 0x295E PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x296B DUP9 DUP3 DUP10 ADD PUSH2 0x28B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2983 DUP3 PUSH2 0x22CA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2993 DUP2 PUSH2 0x2978 JUMP JUMPDEST DUP2 EQ PUSH2 0x299E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x29B0 DUP2 PUSH2 0x298A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29CC JUMPI PUSH2 0x29CB PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x29DA DUP5 DUP3 DUP6 ADD PUSH2 0x29A1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F9 DUP3 PUSH2 0x29E3 JUMP JUMPDEST PUSH2 0x2A03 DUP2 DUP6 PUSH2 0x222D JUMP JUMPDEST SWAP4 POP PUSH2 0x2A13 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24B8 JUMP JUMPDEST PUSH2 0x2A1C DUP2 PUSH2 0x24EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2A41 DUP2 DUP5 PUSH2 0x29EE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A5F JUMPI PUSH2 0x2A5E PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A7D JUMPI PUSH2 0x2A7C PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x2A89 DUP5 DUP3 DUP6 ADD PUSH2 0x231F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2AA7 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x22DC JUMP JUMPDEST PUSH2 0x2AB4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2618 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2AC4 DUP2 PUSH2 0x23A3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2AE0 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2AF3 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2B06 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2B19 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2B34 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2ACA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2B4F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2541 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x5377617020706175736564000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B8B PUSH1 0xB DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x2B96 DUP3 PUSH2 0x2B55 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2BBA DUP2 PUSH2 0x2B7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0xE0 SUB DUP4 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x2BEC JUMPI PUSH2 0x2BEB PUSH2 0x2BC1 JUMP JUMPDEST JUMPDEST DUP1 DUP4 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH1 0x1 PUSH2 0x100 SUB DUP4 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x2C15 JUMPI PUSH2 0x2C14 PUSH2 0x2BC1 JUMP JUMPDEST JUMPDEST DUP1 DUP4 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2C4B JUMPI PUSH2 0x2C4A PUSH2 0x271A JUMP JUMPDEST JUMPDEST PUSH2 0x2C54 DUP3 PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C83 PUSH2 0x2C7E DUP5 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x277A JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x2C9F JUMPI PUSH2 0x2C9E PUSH2 0x2C2B JUMP JUMPDEST JUMPDEST PUSH2 0x2CAA DUP5 DUP3 DUP6 PUSH2 0x2C61 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2CC7 JUMPI PUSH2 0x2CC6 PUSH2 0x233E JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2CD7 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2C70 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CF7 JUMPI PUSH2 0x2CF6 PUSH2 0x2C21 JUMP JUMPDEST JUMPDEST PUSH2 0x2D02 PUSH2 0x100 PUSH2 0x277A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D12 DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2D26 DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x2D3A DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x2D4E DUP5 DUP3 DUP6 ADD PUSH2 0x2597 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x2D62 DUP5 DUP3 DUP6 ADD PUSH2 0x2597 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x2D76 DUP5 DUP3 DUP6 ADD PUSH2 0x2597 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2D9A JUMPI PUSH2 0x2D99 PUSH2 0x2C26 JUMP JUMPDEST JUMPDEST PUSH2 0x2DA6 DUP5 DUP3 DUP6 ADD PUSH2 0x2CB2 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x2DBA DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DD2 CALLDATASIZE DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x556E6B6E6F776E20746172676574000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E0F PUSH1 0xE DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x2E1A DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2E3E DUP2 PUSH2 0x2E02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x2E62 JUMPI PUSH2 0x2E61 PUSH2 0x2BC1 JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2E84 JUMPI PUSH2 0x2E83 PUSH2 0x2BC6 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x2EA0 JUMPI PUSH2 0x2E9F PUSH2 0x2BCB JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2EC6 JUMPI PUSH2 0x2EC5 PUSH2 0x2EA8 JUMP JUMPDEST JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2ED7 JUMPI PUSH2 0x2ED6 PUSH2 0x2EAD JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP6 MUL DUP4 ADD SWAP2 POP DUP5 DUP7 SUB SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F04 JUMPI PUSH2 0x2F03 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F12 DUP6 DUP3 DUP7 ADD PUSH2 0x266B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2F23 DUP6 DUP3 DUP7 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x546F6B656E206E6F742077686974656C69737465640000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F63 PUSH1 0x15 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x2F6E DUP3 PUSH2 0x2F2D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2F92 DUP2 PUSH2 0x2F56 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2FD3 DUP3 PUSH2 0x23A3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2FDE DUP4 PUSH2 0x23A3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x3013 JUMPI PUSH2 0x3012 PUSH2 0x2F99 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3033 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x22DC JUMP JUMPDEST PUSH2 0x3040 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x22DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3056 DUP2 PUSH2 0x23AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3072 JUMPI PUSH2 0x3071 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3080 DUP5 DUP3 DUP6 ADD PUSH2 0x3047 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4665652B616D6F756E743A204E6F7420656E6F75676820616C6C6F77616E6365 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30BF PUSH1 0x20 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x30CA DUP3 PUSH2 0x3089 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x30EE DUP2 PUSH2 0x30B2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4665652B616D6F756E743A204E6F7420656E6F7567682062616C616E63650000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312B PUSH1 0x1E DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3136 DUP3 PUSH2 0x30F5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x315A DUP2 PUSH2 0x311E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4665653A204E6F7420656E6F75676820616C6C6F77616E636500000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3197 PUSH1 0x19 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x31A2 DUP3 PUSH2 0x3161 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x31C6 DUP2 PUSH2 0x318A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4665653A204E6F7420656E6F7567682062616C616E6365000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3203 PUSH1 0x17 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x320E DUP3 PUSH2 0x31CD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3232 DUP2 PUSH2 0x31F6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F75676820616C6C6F77616E6365000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x326F PUSH1 0x14 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x327A DUP3 PUSH2 0x3239 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x329E DUP2 PUSH2 0x3262 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F7567682062616C616E63650000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32DB PUSH1 0x12 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x32E6 DUP3 PUSH2 0x32A5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x330A DUP2 PUSH2 0x32CE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3320 DUP2 PUSH2 0x2580 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x333C JUMPI PUSH2 0x333B PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x334A DUP5 DUP3 DUP6 ADD PUSH2 0x3311 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x335C DUP2 PUSH2 0x22CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337E DUP3 PUSH2 0x249C JUMP JUMPDEST PUSH2 0x3388 DUP2 DUP6 PUSH2 0x3362 JUMP JUMPDEST SWAP4 POP PUSH2 0x3398 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24B8 JUMP JUMPDEST PUSH2 0x33A1 DUP2 PUSH2 0x24EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x33C5 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x33D8 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x33EB PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x33FE PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x3411 PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x3424 PUSH1 0xA0 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH1 0xC0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x343C DUP3 DUP3 PUSH2 0x3373 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x3451 PUSH1 0xE0 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3471 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3483 DUP2 DUP5 PUSH2 0x33AC JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F75676820746F2070617920666F722074780000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C2 PUSH1 0x18 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x34CD DUP3 PUSH2 0x348C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34F1 DUP2 PUSH2 0x34B5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F75676820676173000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x352E PUSH1 0xE DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3539 DUP3 PUSH2 0x34F8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x355D DUP2 PUSH2 0x3521 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3579 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x22DC JUMP JUMPDEST PUSH2 0x3586 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x3593 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2618 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x546F6B656E206164647265737320697320300000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35D1 PUSH1 0x12 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x35DC DUP3 PUSH2 0x359B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3600 DUP2 PUSH2 0x35C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3610 DUP2 PUSH2 0x2642 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x362B PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x3638 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3607 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x57726F6E67205061796D656E7420546F6B656E00000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3675 PUSH1 0x13 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3680 DUP3 PUSH2 0x363F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x36A4 DUP2 PUSH2 0x3668 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36E3 DUP4 DUP4 PUSH2 0x3353 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3707 DUP3 PUSH2 0x36AB JUMP JUMPDEST PUSH2 0x3711 DUP2 DUP6 PUSH2 0x36B6 JUMP JUMPDEST SWAP4 POP PUSH2 0x371C DUP4 PUSH2 0x36C7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374D JUMPI DUP2 MLOAD PUSH2 0x3734 DUP9 DUP3 PUSH2 0x36D7 JUMP JUMPDEST SWAP8 POP PUSH2 0x373F DUP4 PUSH2 0x36EF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x3720 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x376F PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3781 DUP2 DUP5 PUSH2 0x36FC JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x37A5 JUMPI PUSH2 0x37A4 PUSH2 0x271A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37C9 PUSH2 0x37C4 DUP5 PUSH2 0x378A JUMP JUMPDEST PUSH2 0x277A JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x37EC JUMPI PUSH2 0x37EB PUSH2 0x2348 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3815 JUMPI DUP1 PUSH2 0x3801 DUP9 DUP3 PUSH2 0x3047 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x37EE JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3834 JUMPI PUSH2 0x3833 PUSH2 0x233E JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x3844 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x37B6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3863 JUMPI PUSH2 0x3862 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3881 JUMPI PUSH2 0x3880 PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x388D DUP5 DUP3 DUP6 ADD PUSH2 0x381F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x63616E206F6E6C792062652063616C6C65642062792052656C61794875620000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38FB PUSH1 0x1E DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3906 DUP3 PUSH2 0x38C5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x392A DUP2 PUSH2 0x38EE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F207375636365737300000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3967 PUSH1 0xA DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3972 DUP3 PUSH2 0x3931 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3996 DUP2 PUSH2 0x395A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x39B6 JUMPI PUSH2 0x39B5 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x39C4 DUP7 DUP3 DUP8 ADD PUSH2 0x266B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x39D5 DUP7 DUP3 DUP8 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x39E6 DUP7 DUP3 DUP8 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39FF PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x23C4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A16 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2597 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x3A4A JUMPI PUSH2 0x3A49 PUSH2 0x3A28 JUMP JUMPDEST JUMPDEST DUP4 DUP2 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A72 JUMPI PUSH2 0x3A71 PUSH2 0x3A1E JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP5 SGT ISZERO PUSH2 0x3A88 JUMPI PUSH2 0x3A87 PUSH2 0x3A23 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A9C DUP4 DUP6 PUSH2 0x3362 JUMP JUMPDEST SWAP4 POP PUSH2 0x3AA9 DUP4 DUP6 DUP5 PUSH2 0x2C61 JUMP JUMPDEST PUSH2 0x3AB2 DUP4 PUSH2 0x24EB JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP4 ADD PUSH2 0x3AD1 PUSH1 0x0 DUP5 ADD DUP5 PUSH2 0x39F0 JUMP JUMPDEST PUSH2 0x3ADE PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH2 0x3AEC PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x39F0 JUMP JUMPDEST PUSH2 0x3AF9 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH2 0x3B07 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x39F0 JUMP JUMPDEST PUSH2 0x3B14 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH2 0x3B22 PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x3A07 JUMP JUMPDEST PUSH2 0x3B2F PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH2 0x3B3D PUSH1 0x80 DUP5 ADD DUP5 PUSH2 0x3A07 JUMP JUMPDEST PUSH2 0x3B4A PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH2 0x3B58 PUSH1 0xA0 DUP5 ADD DUP5 PUSH2 0x3A07 JUMP JUMPDEST PUSH2 0x3B65 PUSH1 0xA0 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH2 0x3B73 PUSH1 0xC0 DUP5 ADD DUP5 PUSH2 0x3A2D JUMP JUMPDEST DUP6 DUP4 SUB PUSH1 0xC0 DUP8 ADD MSTORE PUSH2 0x3B86 DUP4 DUP3 DUP5 PUSH2 0x3A90 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x3B97 PUSH1 0xE0 DUP5 ADD DUP5 PUSH2 0x39F0 JUMP JUMPDEST PUSH2 0x3BA4 PUSH1 0xE0 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3BC4 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3BD6 DUP2 DUP5 PUSH2 0x3ABD JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BEA DUP3 PUSH2 0x23A3 JUMP JUMPDEST SWAP2 POP PUSH2 0x3BF5 DUP4 PUSH2 0x23A3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x3C08 JUMPI PUSH2 0x3C07 PUSH2 0x2F99 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x466F72776172646572206973206E6F7420747275737465640000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C49 PUSH1 0x18 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3C54 DUP3 PUSH2 0x3C13 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C78 DUP2 PUSH2 0x3C3C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x57726F6E67206D696E2062616C616E6365000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CB5 PUSH1 0x11 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3CC0 DUP3 PUSH2 0x3C7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CE4 DUP2 PUSH2 0x3CA8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D47 PUSH1 0x26 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3D52 DUP3 PUSH2 0x3CEB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D76 DUP2 PUSH2 0x3D3A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DB3 PUSH1 0x20 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3DBE DUP3 PUSH2 0x3D7D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DE2 DUP2 PUSH2 0x3DA6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DFF DUP3 PUSH2 0x249C JUMP JUMPDEST PUSH2 0x3E09 DUP2 DUP6 PUSH2 0x3DE9 JUMP JUMPDEST SWAP4 POP PUSH2 0x3E19 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24B8 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E31 DUP3 DUP5 PUSH2 0x3DF4 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x697354727573746564466F727761726465723A20726576657274656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E72 PUSH1 0x1C DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3E7D DUP3 PUSH2 0x3E3C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3EA1 DUP2 PUSH2 0x3E65 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x697354727573746564466F727761726465723A2062616420726573706F6E7365 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EDE PUSH1 0x20 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3EE9 DUP3 PUSH2 0x3EA8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3F0D DUP2 PUSH2 0x3ED1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3F23 DUP2 PUSH2 0x25AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F3F JUMPI PUSH2 0x3F3E PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3F4D DUP5 DUP3 DUP6 ADD PUSH2 0x3F14 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x696E76616C696420666F7277617264657220666F7220726563697069656E7400 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8C PUSH1 0x1F DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3F97 DUP3 PUSH2 0x3F56 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3FBB DUP2 PUSH2 0x3F7F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 SIGNEXTEND BLOCKHASH 0x1E PUSH25 0x64F800D193F50C378824A320093824FCC07F7F1D2612A6A35E NUMBER MSIZE PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"731:5509:23:-:0;;;1001:5;970:36;;1067:6;1043:30;;1107:9;1079:37;;1346:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:13;955:12;:10;;;:12;;:::i;:::-;936:18;;;:32;;:::i;:::-;1537:13:23;1508:43;;;;;;;;;;1577:12;1561:13;;:28;;;;;;;;;;;;;;;;;;1606:3;1599:4;:10;;;;1619:30;1639:9;1619:19;;;:30;;:::i;:::-;1659:16;1671:3;1659:11;;;:16;;:::i;:::-;1346:336;;;;;731:5509;;640:96:15;693:7;719:10;712:17;;640:96;:::o;2433:187:13:-;2506:16;2525:6;;;;;;;;;;;2506:25;;2550:8;2541:6;;:17;;;;;;;;;;;;;;;;;;2604:8;2573:40;;2594:8;2573:40;;;;;;;;;;;;2496:124;2433:187;:::o;2352:119:0:-;1094:13:13;:11;;;:13;;:::i;:::-;2455:9:0::1;2435:17;;:29;;;;;;;;;;;;;;;;;;2352:119:::0;:::o;2262:84::-;1094:13:13;:11;;;:13;;:::i;:::-;2336:3:0::1;2325:8;;:14;;;;;;;;;;;;;;;;;;2262:84:::0;:::o;1359:130:13:-;1433:12;:10;;;:12;;:::i;:::-;1422:23;;:7;:5;;;:7;;:::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;1201:85::-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;88:117:25:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:77::-;882:7;911:5;900:16;;845:77;;;:::o;928:122::-;1001:24;1019:5;1001:24;:::i;:::-;994:5;991:35;981:63;;1040:1;1037;1030:12;981:63;928:122;:::o;1056:143::-;1113:5;1144:6;1138:13;1129:22;;1160:33;1187:5;1160:33;:::i;:::-;1056:143;;;;:::o;1205:113::-;1259:7;1288:24;1306:5;1288:24;:::i;:::-;1277:35;;1205:113;;;:::o;1324:156::-;1414:41;1449:5;1414:41;:::i;:::-;1407:5;1404:52;1394:80;;1470:1;1467;1460:12;1394:80;1324:156;:::o;1486:177::-;1560:5;1591:6;1585:13;1576:22;;1607:50;1651:5;1607:50;:::i;:::-;1486:177;;;;:::o;1669:1011::-;1792:6;1800;1808;1816;1824;1873:3;1861:9;1852:7;1848:23;1844:33;1841:120;;;1880:79;;:::i;:::-;1841:120;2000:1;2025:64;2081:7;2072:6;2061:9;2057:22;2025:64;:::i;:::-;2015:74;;1971:128;2138:2;2164:64;2220:7;2211:6;2200:9;2196:22;2164:64;:::i;:::-;2154:74;;2109:129;2277:2;2303:64;2359:7;2350:6;2339:9;2335:22;2303:64;:::i;:::-;2293:74;;2248:129;2416:2;2442:64;2498:7;2489:6;2478:9;2474:22;2442:64;:::i;:::-;2432:74;;2387:129;2555:3;2582:81;2655:7;2646:6;2635:9;2631:22;2582:81;:::i;:::-;2572:91;;2526:147;1669:1011;;;;;;;;:::o;2686:169::-;2770:11;2804:6;2799:3;2792:19;2844:4;2839:3;2835:14;2820:29;;2686:169;;;;:::o;2861:182::-;3001:34;2997:1;2989:6;2985:14;2978:58;2861:182;:::o;3049:366::-;3191:3;3212:67;3276:2;3271:3;3212:67;:::i;:::-;3205:74;;3288:93;3377:3;3288:93;:::i;:::-;3406:2;3401:3;3397:12;3390:19;;3049:366;;;:::o;3421:419::-;3587:4;3625:2;3614:9;3610:18;3602:26;;3674:9;3668:4;3664:20;3660:1;3649:9;3645:17;3638:47;3702:131;3828:4;3702:131;:::i;:::-;3694:139;;3421:419;;;:::o;731:5509:23:-;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@CALLDATA_SIZE_LIMIT_47":{"entryPoint":5253,"id":47,"parameterSlots":0,"returnSlots":0},"@FORWARDER_HUB_OVERHEAD_33":{"entryPoint":7191,"id":33,"parameterSlots":0,"returnSlots":0},"@PAYMASTER_ACCEPTANCE_BUDGET_44":{"entryPoint":7467,"id":44,"parameterSlots":0,"returnSlots":0},"@POST_RELAYED_CALL_GAS_LIMIT_39":{"entryPoint":7197,"id":39,"parameterSlots":0,"returnSlots":0},"@PRE_RELAYED_CALL_GAS_LIMIT_36":{"entryPoint":7618,"id":36,"parameterSlots":0,"returnSlots":0},"@_180":{"entryPoint":null,"id":180,"parameterSlots":0,"returnSlots":0},"@_checkOwner_1944":{"entryPoint":7867,"id":1944,"parameterSlots":0,"returnSlots":0},"@_getPath_3850":{"entryPoint":7625,"id":3850,"parameterSlots":2,"returnSlots":1},"@_msgSender_2092":{"entryPoint":8701,"id":2092,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_2001":{"entryPoint":7993,"id":2001,"parameterSlots":1,"returnSlots":0},"@_verifyForwarder_88":{"entryPoint":6755,"id":88,"parameterSlots":1,"returnSlots":0},"@gasUsedByPost_3600":{"entryPoint":6993,"id":3600,"parameterSlots":0,"returnSlots":0},"@getGasAndDataLimits_63":{"entryPoint":7035,"id":63,"parameterSlots":0,"returnSlots":1},"@getHubAddr_30":{"entryPoint":5687,"id":30,"parameterSlots":0,"returnSlots":1},"@getPaymentData_3862":{"entryPoint":6944,"id":3862,"parameterSlots":0,"returnSlots":2},"@getRelayHubDeposit_151":{"entryPoint":4936,"id":151,"parameterSlots":0,"returnSlots":1},"@getTokenToEthOutput_3819":{"entryPoint":5464,"id":3819,"parameterSlots":2,"returnSlots":1},"@isTokenWhitelisted_3749":{"entryPoint":7105,"id":3749,"parameterSlots":1,"returnSlots":1},"@minBalance_3606":{"entryPoint":7262,"id":3606,"parameterSlots":0,"returnSlots":0},"@minGas_3603":{"entryPoint":7204,"id":3603,"parameterSlots":0,"returnSlots":0},"@owner_1930":{"entryPoint":6653,"id":1930,"parameterSlots":0,"returnSlots":1},"@postRelayedCall_4183":{"entryPoint":5729,"id":4183,"parameterSlots":5,"returnSlots":0},"@preRelayedCall_4082":{"entryPoint":2254,"id":4082,"parameterSlots":6,"returnSlots":2},"@renounceOwnership_1958":{"entryPoint":5667,"id":1958,"parameterSlots":0,"returnSlots":0},"@setFee_3711":{"entryPoint":5259,"id":3711,"parameterSlots":1,"returnSlots":0},"@setGasUsedByPost_3761":{"entryPoint":7017,"id":3761,"parameterSlots":1,"returnSlots":0},"@setMinBalance_3677":{"entryPoint":7268,"id":3677,"parameterSlots":1,"returnSlots":0},"@setMinGas_3773":{"entryPoint":6999,"id":3773,"parameterSlots":1,"returnSlots":0},"@setPaymentToken_3699":{"entryPoint":5277,"id":3699,"parameterSlots":1,"returnSlots":0},"@setRelayHub_114":{"entryPoint":6535,"id":114,"parameterSlots":1,"returnSlots":0},"@setTarget_3785":{"entryPoint":6459,"id":3785,"parameterSlots":1,"returnSlots":0},"@setTrustedForwarder_126":{"entryPoint":7391,"id":126,"parameterSlots":1,"returnSlots":0},"@target_3610":{"entryPoint":7353,"id":3610,"parameterSlots":0,"returnSlots":0},"@togglePause_3796":{"entryPoint":7210,"id":3796,"parameterSlots":0,"returnSlots":0},"@transferOwnership_1981":{"entryPoint":7487,"id":1981,"parameterSlots":1,"returnSlots":0},"@trustedForwarder_135":{"entryPoint":6611,"id":135,"parameterSlots":0,"returnSlots":1},"@verifyForwarderTrusted_1063":{"entryPoint":8189,"id":1063,"parameterSlots":1,"returnSlots":0},"@versionPaymaster_3597":{"entryPoint":6694,"id":3597,"parameterSlots":0,"returnSlots":1},"@whitelistToken_3737":{"entryPoint":4726,"id":3737,"parameterSlots":2,"returnSlots":0},"@withdrawRelayHubDepositTo_198":{"entryPoint":5099,"id":198,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":10177,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory":{"entryPoint":14262,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_bytes_memory_ptr":{"entryPoint":11376,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":9623,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":13073,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_payable":{"entryPoint":9835,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":10282,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory":{"entryPoint":14367,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":9667,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":16148,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":9037,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_bytes_memory_ptr":{"entryPoint":11442,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_IRelayHub_$737":{"entryPoint":10657,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_struct$_RelayData_$1326_calldata_ptr":{"entryPoint":10420,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_struct$_RelayData_$1326_memory_ptr":{"entryPoint":11488,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_struct$_RelayRequest_$1333_calldata_ptr":{"entryPoint":8991,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":9156,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":12359,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":9965,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":13094,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_payablet_uint256":{"entryPoint":12013,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address_payablet_uint256t_uint256":{"entryPoint":14749,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bool":{"entryPoint":9688,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr_fromMemory":{"entryPoint":14413,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":16169,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_calldata_ptrt_boolt_uint256t_struct$_RelayData_$1326_calldata_ptr":{"entryPoint":10452,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_contract$_IRelayHub_$737":{"entryPoint":10678,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_RelayRequest_$1333_calldata_ptr":{"entryPoint":10825,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_RelayRequest_$1333_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptrt_uint256":{"entryPoint":9177,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_uint256":{"entryPoint":9920,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":12380,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address_payable":{"entryPoint":9856,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_array$_t_address_$dyn_memory_ptr":{"entryPoint":10328,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encodeUpdatedPos_t_address_to_t_address":{"entryPoint":14039,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_payable_to_t_address_payable_fromStack":{"entryPoint":13831,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address":{"entryPoint":13139,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":8924,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":14076,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":9537,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr":{"entryPoint":14992,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr":{"entryPoint":13171,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":9468,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":15860,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":10734,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e_to_t_string_memory_ptr_fromStack":{"entryPoint":13493,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4_to_t_string_memory_ptr_fromStack":{"entryPoint":16255,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":15674,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e_to_t_string_memory_ptr_fromStack":{"entryPoint":11134,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e_to_t_string_memory_ptr_fromStack":{"entryPoint":15973,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313_to_t_string_memory_ptr_fromStack":{"entryPoint":8807,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429_to_t_string_memory_ptr_fromStack":{"entryPoint":15420,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c_to_t_string_memory_ptr_fromStack":{"entryPoint":15528,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0_to_t_string_memory_ptr_fromStack":{"entryPoint":12682,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad_to_t_string_memory_ptr_fromStack":{"entryPoint":13006,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23_to_t_string_memory_ptr_fromStack":{"entryPoint":14682,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325_to_t_string_memory_ptr_fromStack":{"entryPoint":16081,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2_to_t_string_memory_ptr_fromStack":{"entryPoint":12574,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d_to_t_string_memory_ptr_fromStack":{"entryPoint":12466,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":15782,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf_to_t_string_memory_ptr_fromStack":{"entryPoint":12790,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312_to_t_string_memory_ptr_fromStack":{"entryPoint":12118,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc_to_t_string_memory_ptr_fromStack":{"entryPoint":12898,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665_to_t_string_memory_ptr_fromStack":{"entryPoint":13601,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb_to_t_string_memory_ptr_fromStack":{"entryPoint":14574,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08_to_t_string_memory_ptr_fromStack":{"entryPoint":13764,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189_to_t_string_memory_ptr_fromStack":{"entryPoint":11778,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a_to_t_string_memory_ptr_fromStack":{"entryPoint":13928,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_struct$_GasAndDataLimits_$401_memory_ptr_to_t_struct$_GasAndDataLimits_$401_memory_ptr_fromStack":{"entryPoint":10954,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_RelayData_$1326_calldata_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack":{"entryPoint":15037,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_struct$_RelayData_$1326_memory_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack":{"entryPoint":13228,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256":{"entryPoint":10939,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":9752,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":15909,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":8939,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":12318,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":10898,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":13668,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":11066,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_bool__to_t_bytes_memory_ptr_t_bool__fromStack_reversed":{"entryPoint":9552,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10791,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13528,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16290,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15709,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11169,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16008,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8842,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15455,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15563,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12717,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13041,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14717,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":16116,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12609,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12501,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15817,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12825,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12153,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":12933,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13636,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":14609,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13799,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11813,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13963,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_struct$_GasAndDataLimits_$401_memory_ptr__to_t_struct$_GasAndDataLimits_$401_memory_ptr__fromStack_reversed":{"entryPoint":11039,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":9767,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address_payable__to_t_uint256_t_address_payable__fromStack_reversed":{"entryPoint":13846,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_memory_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":14170,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_struct$_RelayData_$1326_calldata_ptr__to_t_uint256_t_struct$_RelayData_$1326_memory_ptr__fromStack_reversed":{"entryPoint":15279,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_struct$_RelayData_$1326_memory_ptr__to_t_uint256_t_struct$_RelayData_$1326_memory_ptr__fromStack_reversed":{"entryPoint":13404,"id":null,"parameterSlots":3,"returnSlots":1},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":11845,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_t_struct$_ForwardRequest_$318_calldata_ptr":{"entryPoint":11216,"id":null,"parameterSlots":2,"returnSlots":1},"access_calldata_tail_t_struct$_RelayData_$1326_calldata_ptr":{"entryPoint":11256,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":10106,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":8966,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":10133,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":14218,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":11312,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":14023,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":13995,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":9372,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":10723,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":14063,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":14006,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr":{"entryPoint":13154,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":9383,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":15849,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":8749,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_access_t_address":{"entryPoint":14855,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_access_t_bytes_calldata_ptr":{"entryPoint":14893,"id":null,"parameterSlots":2,"returnSlots":2},"calldata_access_t_uint256":{"entryPoint":14832,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":11954,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":12232,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":15327,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":8906,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address_payable":{"entryPoint":9794,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":9525,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_IRelayHub_$737":{"entryPoint":10616,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":8874,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":9123,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_struct$_RelayData_$1326_calldata_ptr_to_t_struct$_RelayData_$1326_memory_ptr":{"entryPoint":11718,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory":{"entryPoint":11361,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory":{"entryPoint":9400,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":10057,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":12185,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":14486,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10010,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2":{"entryPoint":14878,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":9027,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":9022,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a":{"entryPoint":11206,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d":{"entryPoint":8986,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":11297,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad":{"entryPoint":11201,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20":{"entryPoint":14883,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_46e3e63c93837e9efa638abb3b4e76ced8c11259a873f1381a0abdf6ae6a823c":{"entryPoint":11949,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":11302,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_7678404c0552a58cf14944d1a786cf4c81aab3563e2735cb332aee47bbb57c4a":{"entryPoint":11944,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":9032,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e":{"entryPoint":11211,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":11307,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":8981,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4":{"entryPoint":14888,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":8976,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":9451,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e":{"entryPoint":13452,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4":{"entryPoint":16214,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":15595,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e":{"entryPoint":11093,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e":{"entryPoint":15932,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313":{"entryPoint":8766,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429":{"entryPoint":15379,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c":{"entryPoint":15487,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0":{"entryPoint":12641,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad":{"entryPoint":12965,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23":{"entryPoint":14641,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325":{"entryPoint":16040,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2":{"entryPoint":12533,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d":{"entryPoint":12425,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":15741,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf":{"entryPoint":12749,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312":{"entryPoint":12077,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc":{"entryPoint":12857,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665":{"entryPoint":13560,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb":{"entryPoint":14533,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08":{"entryPoint":13723,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189":{"entryPoint":11737,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a":{"entryPoint":13887,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":9600,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address_payable":{"entryPoint":9812,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":9644,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_IRelayHub_$737":{"entryPoint":10634,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":9133,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:62762:25","statements":[{"body":{"nodeType":"YulBlock","src":"103:73:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"120:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"125:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"113:6:25"},"nodeType":"YulFunctionCall","src":"113:19:25"},"nodeType":"YulExpressionStatement","src":"113:19:25"},{"nodeType":"YulAssignment","src":"141:29:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"160:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"165:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"156:3:25"},"nodeType":"YulFunctionCall","src":"156:14:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"141:11:25"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"75:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"80:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"91:11:25","type":""}],"src":"7:169:25"},{"body":{"nodeType":"YulBlock","src":"288:69:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"310:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"318:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"306:3:25"},"nodeType":"YulFunctionCall","src":"306:14:25"},{"hexValue":"72656c6179206875622061646472657373206e6f7420736574","kind":"string","nodeType":"YulLiteral","src":"322:27:25","type":"","value":"relay hub address not set"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"299:6:25"},"nodeType":"YulFunctionCall","src":"299:51:25"},"nodeType":"YulExpressionStatement","src":"299:51:25"}]},"name":"store_literal_in_memory_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"280:6:25","type":""}],"src":"182:175:25"},{"body":{"nodeType":"YulBlock","src":"509:220:25","statements":[{"nodeType":"YulAssignment","src":"519:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"585:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"590:2:25","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"526:58:25"},"nodeType":"YulFunctionCall","src":"526:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"519:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"691:3:25"}],"functionName":{"name":"store_literal_in_memory_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313","nodeType":"YulIdentifier","src":"602:88:25"},"nodeType":"YulFunctionCall","src":"602:93:25"},"nodeType":"YulExpressionStatement","src":"602:93:25"},{"nodeType":"YulAssignment","src":"704:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"715:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"720:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"711:3:25"},"nodeType":"YulFunctionCall","src":"711:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"704:3:25"}]}]},"name":"abi_encode_t_stringliteral_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"497:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"505:3:25","type":""}],"src":"363:366:25"},{"body":{"nodeType":"YulBlock","src":"906:248:25","statements":[{"nodeType":"YulAssignment","src":"916:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"928:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"939:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"924:3:25"},"nodeType":"YulFunctionCall","src":"924:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"916:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"963:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"974:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"959:3:25"},"nodeType":"YulFunctionCall","src":"959:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"982:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"988:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"978:3:25"},"nodeType":"YulFunctionCall","src":"978:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"952:6:25"},"nodeType":"YulFunctionCall","src":"952:47:25"},"nodeType":"YulExpressionStatement","src":"952:47:25"},{"nodeType":"YulAssignment","src":"1008:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1142:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1016:124:25"},"nodeType":"YulFunctionCall","src":"1016:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1008:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"886:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"901:4:25","type":""}],"src":"735:419:25"},{"body":{"nodeType":"YulBlock","src":"1205:81:25","statements":[{"nodeType":"YulAssignment","src":"1215:65:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1230:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"1237:42:25","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1226:3:25"},"nodeType":"YulFunctionCall","src":"1226:54:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1215:7:25"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1187:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1197:7:25","type":""}],"src":"1160:126:25"},{"body":{"nodeType":"YulBlock","src":"1337:51:25","statements":[{"nodeType":"YulAssignment","src":"1347:35:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1376:5:25"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"1358:17:25"},"nodeType":"YulFunctionCall","src":"1358:24:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1347:7:25"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1319:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1329:7:25","type":""}],"src":"1292:96:25"},{"body":{"nodeType":"YulBlock","src":"1459:53:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1476:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1499:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1481:17:25"},"nodeType":"YulFunctionCall","src":"1481:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1469:6:25"},"nodeType":"YulFunctionCall","src":"1469:37:25"},"nodeType":"YulExpressionStatement","src":"1469:37:25"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1447:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1454:3:25","type":""}],"src":"1394:118:25"},{"body":{"nodeType":"YulBlock","src":"1616:124:25","statements":[{"nodeType":"YulAssignment","src":"1626:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1638:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"1649:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1634:3:25"},"nodeType":"YulFunctionCall","src":"1634:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1626:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1706:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1719:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"1730:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1715:3:25"},"nodeType":"YulFunctionCall","src":"1715:17:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"1662:43:25"},"nodeType":"YulFunctionCall","src":"1662:71:25"},"nodeType":"YulExpressionStatement","src":"1662:71:25"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1588:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1600:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1611:4:25","type":""}],"src":"1518:222:25"},{"body":{"nodeType":"YulBlock","src":"1786:35:25","statements":[{"nodeType":"YulAssignment","src":"1796:19:25","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1812:2:25","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1806:5:25"},"nodeType":"YulFunctionCall","src":"1806:9:25"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1796:6:25"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1779:6:25","type":""}],"src":"1746:75:25"},{"body":{"nodeType":"YulBlock","src":"1916:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1933:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1936:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1926:6:25"},"nodeType":"YulFunctionCall","src":"1926:12:25"},"nodeType":"YulExpressionStatement","src":"1926:12:25"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"1827:117:25"},{"body":{"nodeType":"YulBlock","src":"2039:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2056:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2059:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2049:6:25"},"nodeType":"YulFunctionCall","src":"2049:12:25"},"nodeType":"YulExpressionStatement","src":"2049:12:25"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"1950:117:25"},{"body":{"nodeType":"YulBlock","src":"2162:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2179:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2182:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2172:6:25"},"nodeType":"YulFunctionCall","src":"2172:12:25"},"nodeType":"YulExpressionStatement","src":"2172:12:25"}]},"name":"revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d","nodeType":"YulFunctionDefinition","src":"2073:117:25"},{"body":{"nodeType":"YulBlock","src":"2316:152:25","statements":[{"body":{"nodeType":"YulBlock","src":"2355:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d","nodeType":"YulIdentifier","src":"2357:77:25"},"nodeType":"YulFunctionCall","src":"2357:79:25"},"nodeType":"YulExpressionStatement","src":"2357:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"2337:3:25"},{"name":"offset","nodeType":"YulIdentifier","src":"2342:6:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2333:3:25"},"nodeType":"YulFunctionCall","src":"2333:16:25"},{"kind":"number","nodeType":"YulLiteral","src":"2351:2:25","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2329:3:25"},"nodeType":"YulFunctionCall","src":"2329:25:25"},"nodeType":"YulIf","src":"2326:112:25"},{"nodeType":"YulAssignment","src":"2447:15:25","value":{"name":"offset","nodeType":"YulIdentifier","src":"2456:6:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2447:5:25"}]}]},"name":"abi_decode_t_struct$_RelayRequest_$1333_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2294:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"2302:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"2310:5:25","type":""}],"src":"2232:236:25"},{"body":{"nodeType":"YulBlock","src":"2563:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2580:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2583:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2573:6:25"},"nodeType":"YulFunctionCall","src":"2573:12:25"},"nodeType":"YulExpressionStatement","src":"2573:12:25"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"2474:117:25"},{"body":{"nodeType":"YulBlock","src":"2686:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2703:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2706:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2696:6:25"},"nodeType":"YulFunctionCall","src":"2696:12:25"},"nodeType":"YulExpressionStatement","src":"2696:12:25"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"2597:117:25"},{"body":{"nodeType":"YulBlock","src":"2809:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2826:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2829:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2819:6:25"},"nodeType":"YulFunctionCall","src":"2819:12:25"},"nodeType":"YulExpressionStatement","src":"2819:12:25"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"2720:117:25"},{"body":{"nodeType":"YulBlock","src":"2930:478:25","statements":[{"body":{"nodeType":"YulBlock","src":"2979:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"2981:77:25"},"nodeType":"YulFunctionCall","src":"2981:79:25"},"nodeType":"YulExpressionStatement","src":"2981:79:25"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2958:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"2966:4:25","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2954:3:25"},"nodeType":"YulFunctionCall","src":"2954:17:25"},{"name":"end","nodeType":"YulIdentifier","src":"2973:3:25"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2950:3:25"},"nodeType":"YulFunctionCall","src":"2950:27:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2943:6:25"},"nodeType":"YulFunctionCall","src":"2943:35:25"},"nodeType":"YulIf","src":"2940:122:25"},{"nodeType":"YulAssignment","src":"3071:30:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3094:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3081:12:25"},"nodeType":"YulFunctionCall","src":"3081:20:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3071:6:25"}]},{"body":{"nodeType":"YulBlock","src":"3144:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"3146:77:25"},"nodeType":"YulFunctionCall","src":"3146:79:25"},"nodeType":"YulExpressionStatement","src":"3146:79:25"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3116:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"3124:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3113:2:25"},"nodeType":"YulFunctionCall","src":"3113:30:25"},"nodeType":"YulIf","src":"3110:117:25"},{"nodeType":"YulAssignment","src":"3236:29:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3252:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"3260:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3248:3:25"},"nodeType":"YulFunctionCall","src":"3248:17:25"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"3236:8:25"}]},{"body":{"nodeType":"YulBlock","src":"3319:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"3321:77:25"},"nodeType":"YulFunctionCall","src":"3321:79:25"},"nodeType":"YulExpressionStatement","src":"3321:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"3284:8:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3298:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"3306:4:25","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3294:3:25"},"nodeType":"YulFunctionCall","src":"3294:17:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3280:3:25"},"nodeType":"YulFunctionCall","src":"3280:32:25"},{"name":"end","nodeType":"YulIdentifier","src":"3314:3:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3277:2:25"},"nodeType":"YulFunctionCall","src":"3277:41:25"},"nodeType":"YulIf","src":"3274:128:25"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2897:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"2905:3:25","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"2913:8:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"2923:6:25","type":""}],"src":"2856:552:25"},{"body":{"nodeType":"YulBlock","src":"3459:32:25","statements":[{"nodeType":"YulAssignment","src":"3469:16:25","value":{"name":"value","nodeType":"YulIdentifier","src":"3480:5:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3469:7:25"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3441:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3451:7:25","type":""}],"src":"3414:77:25"},{"body":{"nodeType":"YulBlock","src":"3540:79:25","statements":[{"body":{"nodeType":"YulBlock","src":"3597:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3606:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3609:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3599:6:25"},"nodeType":"YulFunctionCall","src":"3599:12:25"},"nodeType":"YulExpressionStatement","src":"3599:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3563:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3588:5:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3570:17:25"},"nodeType":"YulFunctionCall","src":"3570:24:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3560:2:25"},"nodeType":"YulFunctionCall","src":"3560:35:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3553:6:25"},"nodeType":"YulFunctionCall","src":"3553:43:25"},"nodeType":"YulIf","src":"3550:63:25"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3533:5:25","type":""}],"src":"3497:122:25"},{"body":{"nodeType":"YulBlock","src":"3677:87:25","statements":[{"nodeType":"YulAssignment","src":"3687:29:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3709:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3696:12:25"},"nodeType":"YulFunctionCall","src":"3696:20:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3687:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3752:5:25"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3725:26:25"},"nodeType":"YulFunctionCall","src":"3725:33:25"},"nodeType":"YulExpressionStatement","src":"3725:33:25"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3655:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"3663:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3671:5:25","type":""}],"src":"3625:139:25"},{"body":{"nodeType":"YulBlock","src":"3957:1198:25","statements":[{"body":{"nodeType":"YulBlock","src":"4004:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4006:77:25"},"nodeType":"YulFunctionCall","src":"4006:79:25"},"nodeType":"YulExpressionStatement","src":"4006:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3978:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"3987:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3974:3:25"},"nodeType":"YulFunctionCall","src":"3974:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"3999:3:25","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3970:3:25"},"nodeType":"YulFunctionCall","src":"3970:33:25"},"nodeType":"YulIf","src":"3967:120:25"},{"nodeType":"YulBlock","src":"4097:309:25","statements":[{"nodeType":"YulVariableDeclaration","src":"4112:45:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4143:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"4154:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4139:3:25"},"nodeType":"YulFunctionCall","src":"4139:17:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4126:12:25"},"nodeType":"YulFunctionCall","src":"4126:31:25"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4116:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"4204:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4206:77:25"},"nodeType":"YulFunctionCall","src":"4206:79:25"},"nodeType":"YulExpressionStatement","src":"4206:79:25"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4176:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"4184:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4173:2:25"},"nodeType":"YulFunctionCall","src":"4173:30:25"},"nodeType":"YulIf","src":"4170:117:25"},{"nodeType":"YulAssignment","src":"4301:95:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4368:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"4379:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4364:3:25"},"nodeType":"YulFunctionCall","src":"4364:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4388:7:25"}],"functionName":{"name":"abi_decode_t_struct$_RelayRequest_$1333_calldata_ptr","nodeType":"YulIdentifier","src":"4311:52:25"},"nodeType":"YulFunctionCall","src":"4311:85:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4301:6:25"}]}]},{"nodeType":"YulBlock","src":"4416:297:25","statements":[{"nodeType":"YulVariableDeclaration","src":"4431:46:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4462:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"4473:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4458:3:25"},"nodeType":"YulFunctionCall","src":"4458:18:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4445:12:25"},"nodeType":"YulFunctionCall","src":"4445:32:25"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4435:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"4524:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4526:77:25"},"nodeType":"YulFunctionCall","src":"4526:79:25"},"nodeType":"YulExpressionStatement","src":"4526:79:25"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4496:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"4504:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4493:2:25"},"nodeType":"YulFunctionCall","src":"4493:30:25"},"nodeType":"YulIf","src":"4490:117:25"},{"nodeType":"YulAssignment","src":"4621:82:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4675:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"4686:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4671:3:25"},"nodeType":"YulFunctionCall","src":"4671:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4695:7:25"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"4639:31:25"},"nodeType":"YulFunctionCall","src":"4639:64:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4621:6:25"},{"name":"value2","nodeType":"YulIdentifier","src":"4629:6:25"}]}]},{"nodeType":"YulBlock","src":"4723:297:25","statements":[{"nodeType":"YulVariableDeclaration","src":"4738:46:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4769:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"4780:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4765:3:25"},"nodeType":"YulFunctionCall","src":"4765:18:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4752:12:25"},"nodeType":"YulFunctionCall","src":"4752:32:25"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4742:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"4831:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4833:77:25"},"nodeType":"YulFunctionCall","src":"4833:79:25"},"nodeType":"YulExpressionStatement","src":"4833:79:25"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4803:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"4811:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4800:2:25"},"nodeType":"YulFunctionCall","src":"4800:30:25"},"nodeType":"YulIf","src":"4797:117:25"},{"nodeType":"YulAssignment","src":"4928:82:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4982:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"4993:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4978:3:25"},"nodeType":"YulFunctionCall","src":"4978:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5002:7:25"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"4946:31:25"},"nodeType":"YulFunctionCall","src":"4946:64:25"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4928:6:25"},{"name":"value4","nodeType":"YulIdentifier","src":"4936:6:25"}]}]},{"nodeType":"YulBlock","src":"5030:118:25","statements":[{"nodeType":"YulVariableDeclaration","src":"5045:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"5059:2:25","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5049:6:25","type":""}]},{"nodeType":"YulAssignment","src":"5075:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5110:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"5121:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5106:3:25"},"nodeType":"YulFunctionCall","src":"5106:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5130:7:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5085:20:25"},"nodeType":"YulFunctionCall","src":"5085:53:25"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"5075:6:25"}]}]}]},"name":"abi_decode_tuple_t_struct$_RelayRequest_$1333_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptrt_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3887:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3898:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3910:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3918:6:25","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3926:6:25","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3934:6:25","type":""},{"name":"value4","nodeType":"YulTypedName","src":"3942:6:25","type":""},{"name":"value5","nodeType":"YulTypedName","src":"3950:6:25","type":""}],"src":"3770:1385:25"},{"body":{"nodeType":"YulBlock","src":"5219:40:25","statements":[{"nodeType":"YulAssignment","src":"5230:22:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5246:5:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5240:5:25"},"nodeType":"YulFunctionCall","src":"5240:12:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5230:6:25"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5202:5:25","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5212:6:25","type":""}],"src":"5161:98:25"},{"body":{"nodeType":"YulBlock","src":"5360:73:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5377:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"5382:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5370:6:25"},"nodeType":"YulFunctionCall","src":"5370:19:25"},"nodeType":"YulExpressionStatement","src":"5370:19:25"},{"nodeType":"YulAssignment","src":"5398:29:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5417:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"5422:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5413:3:25"},"nodeType":"YulFunctionCall","src":"5413:14:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5398:11:25"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5332:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"5337:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5348:11:25","type":""}],"src":"5265:168:25"},{"body":{"nodeType":"YulBlock","src":"5488:258:25","statements":[{"nodeType":"YulVariableDeclaration","src":"5498:10:25","value":{"kind":"number","nodeType":"YulLiteral","src":"5507:1:25","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5502:1:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"5567:63:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5592:3:25"},{"name":"i","nodeType":"YulIdentifier","src":"5597:1:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5588:3:25"},"nodeType":"YulFunctionCall","src":"5588:11:25"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5611:3:25"},{"name":"i","nodeType":"YulIdentifier","src":"5616:1:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5607:3:25"},"nodeType":"YulFunctionCall","src":"5607:11:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5601:5:25"},"nodeType":"YulFunctionCall","src":"5601:18:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5581:6:25"},"nodeType":"YulFunctionCall","src":"5581:39:25"},"nodeType":"YulExpressionStatement","src":"5581:39:25"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5528:1:25"},{"name":"length","nodeType":"YulIdentifier","src":"5531:6:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5525:2:25"},"nodeType":"YulFunctionCall","src":"5525:13:25"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5539:19:25","statements":[{"nodeType":"YulAssignment","src":"5541:15:25","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5550:1:25"},{"kind":"number","nodeType":"YulLiteral","src":"5553:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5546:3:25"},"nodeType":"YulFunctionCall","src":"5546:10:25"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5541:1:25"}]}]},"pre":{"nodeType":"YulBlock","src":"5521:3:25","statements":[]},"src":"5517:113:25"},{"body":{"nodeType":"YulBlock","src":"5664:76:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5714:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"5719:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5710:3:25"},"nodeType":"YulFunctionCall","src":"5710:16:25"},{"kind":"number","nodeType":"YulLiteral","src":"5728:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5703:6:25"},"nodeType":"YulFunctionCall","src":"5703:27:25"},"nodeType":"YulExpressionStatement","src":"5703:27:25"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5645:1:25"},{"name":"length","nodeType":"YulIdentifier","src":"5648:6:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5642:2:25"},"nodeType":"YulFunctionCall","src":"5642:13:25"},"nodeType":"YulIf","src":"5639:101:25"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5470:3:25","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5475:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"5480:6:25","type":""}],"src":"5439:307:25"},{"body":{"nodeType":"YulBlock","src":"5800:54:25","statements":[{"nodeType":"YulAssignment","src":"5810:38:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5828:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"5835:2:25","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5824:3:25"},"nodeType":"YulFunctionCall","src":"5824:14:25"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5844:2:25","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5840:3:25"},"nodeType":"YulFunctionCall","src":"5840:7:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5820:3:25"},"nodeType":"YulFunctionCall","src":"5820:28:25"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"5810:6:25"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5783:5:25","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"5793:6:25","type":""}],"src":"5752:102:25"},{"body":{"nodeType":"YulBlock","src":"5950:270:25","statements":[{"nodeType":"YulVariableDeclaration","src":"5960:52:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6006:5:25"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"5974:31:25"},"nodeType":"YulFunctionCall","src":"5974:38:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5964:6:25","type":""}]},{"nodeType":"YulAssignment","src":"6021:77:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6086:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"6091:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6028:57:25"},"nodeType":"YulFunctionCall","src":"6028:70:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6021:3:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6133:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"6140:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6129:3:25"},"nodeType":"YulFunctionCall","src":"6129:16:25"},{"name":"pos","nodeType":"YulIdentifier","src":"6147:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"6152:6:25"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"6107:21:25"},"nodeType":"YulFunctionCall","src":"6107:52:25"},"nodeType":"YulExpressionStatement","src":"6107:52:25"},{"nodeType":"YulAssignment","src":"6168:46:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6179:3:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6206:6:25"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"6184:21:25"},"nodeType":"YulFunctionCall","src":"6184:29:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6175:3:25"},"nodeType":"YulFunctionCall","src":"6175:39:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6168:3:25"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5931:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5938:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5946:3:25","type":""}],"src":"5860:360:25"},{"body":{"nodeType":"YulBlock","src":"6268:48:25","statements":[{"nodeType":"YulAssignment","src":"6278:32:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6303:5:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6296:6:25"},"nodeType":"YulFunctionCall","src":"6296:13:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6289:6:25"},"nodeType":"YulFunctionCall","src":"6289:21:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6278:7:25"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6250:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6260:7:25","type":""}],"src":"6226:90:25"},{"body":{"nodeType":"YulBlock","src":"6381:50:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6398:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6418:5:25"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6403:14:25"},"nodeType":"YulFunctionCall","src":"6403:21:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6391:6:25"},"nodeType":"YulFunctionCall","src":"6391:34:25"},"nodeType":"YulExpressionStatement","src":"6391:34:25"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6369:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6376:3:25","type":""}],"src":"6322:109:25"},{"body":{"nodeType":"YulBlock","src":"6575:269:25","statements":[{"nodeType":"YulAssignment","src":"6585:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6597:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"6608:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6593:3:25"},"nodeType":"YulFunctionCall","src":"6593:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6585:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6632:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"6643:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6628:3:25"},"nodeType":"YulFunctionCall","src":"6628:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"6651:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"6657:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6647:3:25"},"nodeType":"YulFunctionCall","src":"6647:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6621:6:25"},"nodeType":"YulFunctionCall","src":"6621:47:25"},"nodeType":"YulExpressionStatement","src":"6621:47:25"},{"nodeType":"YulAssignment","src":"6677:84:25","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6747:6:25"},{"name":"tail","nodeType":"YulIdentifier","src":"6756:4:25"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6685:61:25"},"nodeType":"YulFunctionCall","src":"6685:76:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6677:4:25"}]},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6809:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6822:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"6833:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6818:3:25"},"nodeType":"YulFunctionCall","src":"6818:18:25"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"6771:37:25"},"nodeType":"YulFunctionCall","src":"6771:66:25"},"nodeType":"YulExpressionStatement","src":"6771:66:25"}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_bool__to_t_bytes_memory_ptr_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6539:9:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6551:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6559:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6570:4:25","type":""}],"src":"6437:407:25"},{"body":{"nodeType":"YulBlock","src":"6893:79:25","statements":[{"body":{"nodeType":"YulBlock","src":"6950:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6959:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6962:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6952:6:25"},"nodeType":"YulFunctionCall","src":"6952:12:25"},"nodeType":"YulExpressionStatement","src":"6952:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6916:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6941:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6923:17:25"},"nodeType":"YulFunctionCall","src":"6923:24:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6913:2:25"},"nodeType":"YulFunctionCall","src":"6913:35:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6906:6:25"},"nodeType":"YulFunctionCall","src":"6906:43:25"},"nodeType":"YulIf","src":"6903:63:25"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6886:5:25","type":""}],"src":"6850:122:25"},{"body":{"nodeType":"YulBlock","src":"7030:87:25","statements":[{"nodeType":"YulAssignment","src":"7040:29:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7062:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7049:12:25"},"nodeType":"YulFunctionCall","src":"7049:20:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7040:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7105:5:25"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"7078:26:25"},"nodeType":"YulFunctionCall","src":"7078:33:25"},"nodeType":"YulExpressionStatement","src":"7078:33:25"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7008:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"7016:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"7024:5:25","type":""}],"src":"6978:139:25"},{"body":{"nodeType":"YulBlock","src":"7163:76:25","statements":[{"body":{"nodeType":"YulBlock","src":"7217:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7226:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7229:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7219:6:25"},"nodeType":"YulFunctionCall","src":"7219:12:25"},"nodeType":"YulExpressionStatement","src":"7219:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7186:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7208:5:25"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"7193:14:25"},"nodeType":"YulFunctionCall","src":"7193:21:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7183:2:25"},"nodeType":"YulFunctionCall","src":"7183:32:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7176:6:25"},"nodeType":"YulFunctionCall","src":"7176:40:25"},"nodeType":"YulIf","src":"7173:60:25"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7156:5:25","type":""}],"src":"7123:116:25"},{"body":{"nodeType":"YulBlock","src":"7294:84:25","statements":[{"nodeType":"YulAssignment","src":"7304:29:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7326:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7313:12:25"},"nodeType":"YulFunctionCall","src":"7313:20:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7304:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7366:5:25"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"7342:23:25"},"nodeType":"YulFunctionCall","src":"7342:30:25"},"nodeType":"YulExpressionStatement","src":"7342:30:25"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7272:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"7280:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"7288:5:25","type":""}],"src":"7245:133:25"},{"body":{"nodeType":"YulBlock","src":"7464:388:25","statements":[{"body":{"nodeType":"YulBlock","src":"7510:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"7512:77:25"},"nodeType":"YulFunctionCall","src":"7512:79:25"},"nodeType":"YulExpressionStatement","src":"7512:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7485:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"7494:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7481:3:25"},"nodeType":"YulFunctionCall","src":"7481:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"7506:2:25","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7477:3:25"},"nodeType":"YulFunctionCall","src":"7477:32:25"},"nodeType":"YulIf","src":"7474:119:25"},{"nodeType":"YulBlock","src":"7603:117:25","statements":[{"nodeType":"YulVariableDeclaration","src":"7618:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"7632:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7622:6:25","type":""}]},{"nodeType":"YulAssignment","src":"7647:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7682:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"7693:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7678:3:25"},"nodeType":"YulFunctionCall","src":"7678:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7702:7:25"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"7657:20:25"},"nodeType":"YulFunctionCall","src":"7657:53:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7647:6:25"}]}]},{"nodeType":"YulBlock","src":"7730:115:25","statements":[{"nodeType":"YulVariableDeclaration","src":"7745:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"7759:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7749:6:25","type":""}]},{"nodeType":"YulAssignment","src":"7775:60:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7807:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"7818:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7803:3:25"},"nodeType":"YulFunctionCall","src":"7803:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7827:7:25"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"7785:17:25"},"nodeType":"YulFunctionCall","src":"7785:50:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7775:6:25"}]}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7426:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7437:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7449:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7457:6:25","type":""}],"src":"7384:468:25"},{"body":{"nodeType":"YulBlock","src":"7923:53:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7940:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7963:5:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7945:17:25"},"nodeType":"YulFunctionCall","src":"7945:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7933:6:25"},"nodeType":"YulFunctionCall","src":"7933:37:25"},"nodeType":"YulExpressionStatement","src":"7933:37:25"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7911:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7918:3:25","type":""}],"src":"7858:118:25"},{"body":{"nodeType":"YulBlock","src":"8080:124:25","statements":[{"nodeType":"YulAssignment","src":"8090:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8102:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"8113:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8098:3:25"},"nodeType":"YulFunctionCall","src":"8098:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8090:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8170:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8183:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"8194:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8179:3:25"},"nodeType":"YulFunctionCall","src":"8179:17:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"8126:43:25"},"nodeType":"YulFunctionCall","src":"8126:71:25"},"nodeType":"YulExpressionStatement","src":"8126:71:25"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8052:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8064:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8075:4:25","type":""}],"src":"7982:222:25"},{"body":{"nodeType":"YulBlock","src":"8263:51:25","statements":[{"nodeType":"YulAssignment","src":"8273:35:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8302:5:25"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"8284:17:25"},"nodeType":"YulFunctionCall","src":"8284:24:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8273:7:25"}]}]},"name":"cleanup_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8245:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8255:7:25","type":""}],"src":"8210:104:25"},{"body":{"nodeType":"YulBlock","src":"8371:87:25","statements":[{"body":{"nodeType":"YulBlock","src":"8436:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8445:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8448:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8438:6:25"},"nodeType":"YulFunctionCall","src":"8438:12:25"},"nodeType":"YulExpressionStatement","src":"8438:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8394:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8427:5:25"}],"functionName":{"name":"cleanup_t_address_payable","nodeType":"YulIdentifier","src":"8401:25:25"},"nodeType":"YulFunctionCall","src":"8401:32:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8391:2:25"},"nodeType":"YulFunctionCall","src":"8391:43:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8384:6:25"},"nodeType":"YulFunctionCall","src":"8384:51:25"},"nodeType":"YulIf","src":"8381:71:25"}]},"name":"validator_revert_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8364:5:25","type":""}],"src":"8320:138:25"},{"body":{"nodeType":"YulBlock","src":"8524:95:25","statements":[{"nodeType":"YulAssignment","src":"8534:29:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8556:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8543:12:25"},"nodeType":"YulFunctionCall","src":"8543:20:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8534:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8607:5:25"}],"functionName":{"name":"validator_revert_t_address_payable","nodeType":"YulIdentifier","src":"8572:34:25"},"nodeType":"YulFunctionCall","src":"8572:41:25"},"nodeType":"YulExpressionStatement","src":"8572:41:25"}]},"name":"abi_decode_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8502:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"8510:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"8518:5:25","type":""}],"src":"8464:155:25"},{"body":{"nodeType":"YulBlock","src":"8716:399:25","statements":[{"body":{"nodeType":"YulBlock","src":"8762:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8764:77:25"},"nodeType":"YulFunctionCall","src":"8764:79:25"},"nodeType":"YulExpressionStatement","src":"8764:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8737:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"8746:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8733:3:25"},"nodeType":"YulFunctionCall","src":"8733:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"8758:2:25","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8729:3:25"},"nodeType":"YulFunctionCall","src":"8729:32:25"},"nodeType":"YulIf","src":"8726:119:25"},{"nodeType":"YulBlock","src":"8855:117:25","statements":[{"nodeType":"YulVariableDeclaration","src":"8870:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"8884:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8874:6:25","type":""}]},{"nodeType":"YulAssignment","src":"8899:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8934:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"8945:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8930:3:25"},"nodeType":"YulFunctionCall","src":"8930:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8954:7:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"8909:20:25"},"nodeType":"YulFunctionCall","src":"8909:53:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8899:6:25"}]}]},{"nodeType":"YulBlock","src":"8982:126:25","statements":[{"nodeType":"YulVariableDeclaration","src":"8997:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"9011:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9001:6:25","type":""}]},{"nodeType":"YulAssignment","src":"9027:71:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9070:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"9081:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9066:3:25"},"nodeType":"YulFunctionCall","src":"9066:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9090:7:25"}],"functionName":{"name":"abi_decode_t_address_payable","nodeType":"YulIdentifier","src":"9037:28:25"},"nodeType":"YulFunctionCall","src":"9037:61:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9027:6:25"}]}]}]},"name":"abi_decode_tuple_t_uint256t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8678:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8689:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8701:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8709:6:25","type":""}],"src":"8625:490:25"},{"body":{"nodeType":"YulBlock","src":"9187:263:25","statements":[{"body":{"nodeType":"YulBlock","src":"9233:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9235:77:25"},"nodeType":"YulFunctionCall","src":"9235:79:25"},"nodeType":"YulExpressionStatement","src":"9235:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9208:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"9217:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9204:3:25"},"nodeType":"YulFunctionCall","src":"9204:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"9229:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9200:3:25"},"nodeType":"YulFunctionCall","src":"9200:32:25"},"nodeType":"YulIf","src":"9197:119:25"},{"nodeType":"YulBlock","src":"9326:117:25","statements":[{"nodeType":"YulVariableDeclaration","src":"9341:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"9355:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9345:6:25","type":""}]},{"nodeType":"YulAssignment","src":"9370:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9405:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"9416:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9401:3:25"},"nodeType":"YulFunctionCall","src":"9401:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9425:7:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"9380:20:25"},"nodeType":"YulFunctionCall","src":"9380:53:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9370:6:25"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9157:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9168:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9180:6:25","type":""}],"src":"9121:329:25"},{"body":{"nodeType":"YulBlock","src":"9522:263:25","statements":[{"body":{"nodeType":"YulBlock","src":"9568:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9570:77:25"},"nodeType":"YulFunctionCall","src":"9570:79:25"},"nodeType":"YulExpressionStatement","src":"9570:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9543:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"9552:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9539:3:25"},"nodeType":"YulFunctionCall","src":"9539:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"9564:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9535:3:25"},"nodeType":"YulFunctionCall","src":"9535:32:25"},"nodeType":"YulIf","src":"9532:119:25"},{"nodeType":"YulBlock","src":"9661:117:25","statements":[{"nodeType":"YulVariableDeclaration","src":"9676:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"9690:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9680:6:25","type":""}]},{"nodeType":"YulAssignment","src":"9705:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9740:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"9751:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9736:3:25"},"nodeType":"YulFunctionCall","src":"9736:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9760:7:25"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9715:20:25"},"nodeType":"YulFunctionCall","src":"9715:53:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9705:6:25"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9492:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9503:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9515:6:25","type":""}],"src":"9456:329:25"},{"body":{"nodeType":"YulBlock","src":"9819:152:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9836:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9839:77:25","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9829:6:25"},"nodeType":"YulFunctionCall","src":"9829:88:25"},"nodeType":"YulExpressionStatement","src":"9829:88:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9933:1:25","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9936:4:25","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9926:6:25"},"nodeType":"YulFunctionCall","src":"9926:15:25"},"nodeType":"YulExpressionStatement","src":"9926:15:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9957:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9960:4:25","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9950:6:25"},"nodeType":"YulFunctionCall","src":"9950:15:25"},"nodeType":"YulExpressionStatement","src":"9950:15:25"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"9791:180:25"},{"body":{"nodeType":"YulBlock","src":"10020:238:25","statements":[{"nodeType":"YulVariableDeclaration","src":"10030:58:25","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10052:6:25"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"10082:4:25"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"10060:21:25"},"nodeType":"YulFunctionCall","src":"10060:27:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10048:3:25"},"nodeType":"YulFunctionCall","src":"10048:40:25"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"10034:10:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"10199:22:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"10201:16:25"},"nodeType":"YulFunctionCall","src":"10201:18:25"},"nodeType":"YulExpressionStatement","src":"10201:18:25"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"10142:10:25"},{"kind":"number","nodeType":"YulLiteral","src":"10154:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10139:2:25"},"nodeType":"YulFunctionCall","src":"10139:34:25"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"10178:10:25"},{"name":"memPtr","nodeType":"YulIdentifier","src":"10190:6:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10175:2:25"},"nodeType":"YulFunctionCall","src":"10175:22:25"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"10136:2:25"},"nodeType":"YulFunctionCall","src":"10136:62:25"},"nodeType":"YulIf","src":"10133:88:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10237:2:25","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"10241:10:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10230:6:25"},"nodeType":"YulFunctionCall","src":"10230:22:25"},"nodeType":"YulExpressionStatement","src":"10230:22:25"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"10006:6:25","type":""},{"name":"size","nodeType":"YulTypedName","src":"10014:4:25","type":""}],"src":"9977:281:25"},{"body":{"nodeType":"YulBlock","src":"10305:88:25","statements":[{"nodeType":"YulAssignment","src":"10315:30:25","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"10325:18:25"},"nodeType":"YulFunctionCall","src":"10325:20:25"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10315:6:25"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10374:6:25"},{"name":"size","nodeType":"YulIdentifier","src":"10382:4:25"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"10354:19:25"},"nodeType":"YulFunctionCall","src":"10354:33:25"},"nodeType":"YulExpressionStatement","src":"10354:33:25"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"10289:4:25","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"10298:6:25","type":""}],"src":"10264:129:25"},{"body":{"nodeType":"YulBlock","src":"10481:229:25","statements":[{"body":{"nodeType":"YulBlock","src":"10586:22:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"10588:16:25"},"nodeType":"YulFunctionCall","src":"10588:18:25"},"nodeType":"YulExpressionStatement","src":"10588:18:25"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10558:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"10566:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10555:2:25"},"nodeType":"YulFunctionCall","src":"10555:30:25"},"nodeType":"YulIf","src":"10552:56:25"},{"nodeType":"YulAssignment","src":"10618:25:25","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10630:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"10638:4:25","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10626:3:25"},"nodeType":"YulFunctionCall","src":"10626:17:25"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"10618:4:25"}]},{"nodeType":"YulAssignment","src":"10680:23:25","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"10692:4:25"},{"kind":"number","nodeType":"YulLiteral","src":"10698:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10688:3:25"},"nodeType":"YulFunctionCall","src":"10688:15:25"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"10680:4:25"}]}]},"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"10465:6:25","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"10476:4:25","type":""}],"src":"10399:311:25"},{"body":{"nodeType":"YulBlock","src":"10835:608:25","statements":[{"nodeType":"YulAssignment","src":"10845:90:25","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10927:6:25"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10870:56:25"},"nodeType":"YulFunctionCall","src":"10870:64:25"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"10854:15:25"},"nodeType":"YulFunctionCall","src":"10854:81:25"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"10845:5:25"}]},{"nodeType":"YulVariableDeclaration","src":"10944:16:25","value":{"name":"array","nodeType":"YulIdentifier","src":"10955:5:25"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"10948:3:25","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10977:5:25"},{"name":"length","nodeType":"YulIdentifier","src":"10984:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10970:6:25"},"nodeType":"YulFunctionCall","src":"10970:21:25"},"nodeType":"YulExpressionStatement","src":"10970:21:25"},{"nodeType":"YulAssignment","src":"11000:23:25","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11011:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"11018:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11007:3:25"},"nodeType":"YulFunctionCall","src":"11007:16:25"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"11000:3:25"}]},{"nodeType":"YulVariableDeclaration","src":"11033:44:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11051:6:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11063:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"11071:4:25","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"11059:3:25"},"nodeType":"YulFunctionCall","src":"11059:17:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11047:3:25"},"nodeType":"YulFunctionCall","src":"11047:30:25"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"11037:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"11105:103:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"11119:77:25"},"nodeType":"YulFunctionCall","src":"11119:79:25"},"nodeType":"YulExpressionStatement","src":"11119:79:25"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"11092:6:25"},{"name":"end","nodeType":"YulIdentifier","src":"11100:3:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11089:2:25"},"nodeType":"YulFunctionCall","src":"11089:15:25"},"nodeType":"YulIf","src":"11086:122:25"},{"body":{"nodeType":"YulBlock","src":"11293:144:25","statements":[{"nodeType":"YulVariableDeclaration","src":"11308:21:25","value":{"name":"src","nodeType":"YulIdentifier","src":"11326:3:25"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"11312:10:25","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"11350:3:25"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"11376:10:25"},{"name":"end","nodeType":"YulIdentifier","src":"11388:3:25"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"11355:20:25"},"nodeType":"YulFunctionCall","src":"11355:37:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11343:6:25"},"nodeType":"YulFunctionCall","src":"11343:50:25"},"nodeType":"YulExpressionStatement","src":"11343:50:25"},{"nodeType":"YulAssignment","src":"11406:21:25","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"11417:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"11422:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11413:3:25"},"nodeType":"YulFunctionCall","src":"11413:14:25"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"11406:3:25"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11246:3:25"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"11251:6:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11243:2:25"},"nodeType":"YulFunctionCall","src":"11243:15:25"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11259:25:25","statements":[{"nodeType":"YulAssignment","src":"11261:21:25","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11272:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"11277:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11268:3:25"},"nodeType":"YulFunctionCall","src":"11268:14:25"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"11261:3:25"}]}]},"pre":{"nodeType":"YulBlock","src":"11221:21:25","statements":[{"nodeType":"YulVariableDeclaration","src":"11223:17:25","value":{"name":"offset","nodeType":"YulIdentifier","src":"11234:6:25"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"11227:3:25","type":""}]}]},"src":"11217:220:25"}]},"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"10805:6:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"10813:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"10821:3:25","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"10829:5:25","type":""}],"src":"10733:710:25"},{"body":{"nodeType":"YulBlock","src":"11543:293:25","statements":[{"body":{"nodeType":"YulBlock","src":"11592:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"11594:77:25"},"nodeType":"YulFunctionCall","src":"11594:79:25"},"nodeType":"YulExpressionStatement","src":"11594:79:25"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11571:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"11579:4:25","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11567:3:25"},"nodeType":"YulFunctionCall","src":"11567:17:25"},{"name":"end","nodeType":"YulIdentifier","src":"11586:3:25"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11563:3:25"},"nodeType":"YulFunctionCall","src":"11563:27:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11556:6:25"},"nodeType":"YulFunctionCall","src":"11556:35:25"},"nodeType":"YulIf","src":"11553:122:25"},{"nodeType":"YulVariableDeclaration","src":"11684:34:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11711:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11698:12:25"},"nodeType":"YulFunctionCall","src":"11698:20:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11688:6:25","type":""}]},{"nodeType":"YulAssignment","src":"11727:103:25","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11803:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"11811:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11799:3:25"},"nodeType":"YulFunctionCall","src":"11799:17:25"},{"name":"length","nodeType":"YulIdentifier","src":"11818:6:25"},{"name":"end","nodeType":"YulIdentifier","src":"11826:3:25"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11736:62:25"},"nodeType":"YulFunctionCall","src":"11736:94:25"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"11727:5:25"}]}]},"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11521:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"11529:3:25","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"11537:5:25","type":""}],"src":"11466:370:25"},{"body":{"nodeType":"YulBlock","src":"11950:576:25","statements":[{"body":{"nodeType":"YulBlock","src":"11996:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"11998:77:25"},"nodeType":"YulFunctionCall","src":"11998:79:25"},"nodeType":"YulExpressionStatement","src":"11998:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11971:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"11980:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11967:3:25"},"nodeType":"YulFunctionCall","src":"11967:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"11992:2:25","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11963:3:25"},"nodeType":"YulFunctionCall","src":"11963:32:25"},"nodeType":"YulIf","src":"11960:119:25"},{"nodeType":"YulBlock","src":"12089:117:25","statements":[{"nodeType":"YulVariableDeclaration","src":"12104:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"12118:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"12108:6:25","type":""}]},{"nodeType":"YulAssignment","src":"12133:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12168:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"12179:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12164:3:25"},"nodeType":"YulFunctionCall","src":"12164:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"12188:7:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"12143:20:25"},"nodeType":"YulFunctionCall","src":"12143:53:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12133:6:25"}]}]},{"nodeType":"YulBlock","src":"12216:303:25","statements":[{"nodeType":"YulVariableDeclaration","src":"12231:46:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12262:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"12273:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12258:3:25"},"nodeType":"YulFunctionCall","src":"12258:18:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12245:12:25"},"nodeType":"YulFunctionCall","src":"12245:32:25"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"12235:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"12324:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"12326:77:25"},"nodeType":"YulFunctionCall","src":"12326:79:25"},"nodeType":"YulExpressionStatement","src":"12326:79:25"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12296:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"12304:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12293:2:25"},"nodeType":"YulFunctionCall","src":"12293:30:25"},"nodeType":"YulIf","src":"12290:117:25"},{"nodeType":"YulAssignment","src":"12421:88:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12481:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"12492:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12477:3:25"},"nodeType":"YulFunctionCall","src":"12477:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"12501:7:25"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"12431:45:25"},"nodeType":"YulFunctionCall","src":"12431:78:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12421:6:25"}]}]}]},"name":"abi_decode_tuple_t_uint256t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11912:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11923:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11935:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11943:6:25","type":""}],"src":"11842:684:25"},{"body":{"nodeType":"YulBlock","src":"12646:153:25","statements":[{"body":{"nodeType":"YulBlock","src":"12686:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d","nodeType":"YulIdentifier","src":"12688:77:25"},"nodeType":"YulFunctionCall","src":"12688:79:25"},"nodeType":"YulExpressionStatement","src":"12688:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"12667:3:25"},{"name":"offset","nodeType":"YulIdentifier","src":"12672:6:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12663:3:25"},"nodeType":"YulFunctionCall","src":"12663:16:25"},{"kind":"number","nodeType":"YulLiteral","src":"12681:3:25","type":"","value":"256"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12659:3:25"},"nodeType":"YulFunctionCall","src":"12659:26:25"},"nodeType":"YulIf","src":"12656:113:25"},{"nodeType":"YulAssignment","src":"12778:15:25","value":{"name":"offset","nodeType":"YulIdentifier","src":"12787:6:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"12778:5:25"}]}]},"name":"abi_decode_t_struct$_RelayData_$1326_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"12624:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"12632:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"12640:5:25","type":""}],"src":"12565:234:25"},{"body":{"nodeType":"YulBlock","src":"12967:1013:25","statements":[{"body":{"nodeType":"YulBlock","src":"13014:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"13016:77:25"},"nodeType":"YulFunctionCall","src":"13016:79:25"},"nodeType":"YulExpressionStatement","src":"13016:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12988:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"12997:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12984:3:25"},"nodeType":"YulFunctionCall","src":"12984:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"13009:3:25","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12980:3:25"},"nodeType":"YulFunctionCall","src":"12980:33:25"},"nodeType":"YulIf","src":"12977:120:25"},{"nodeType":"YulBlock","src":"13107:296:25","statements":[{"nodeType":"YulVariableDeclaration","src":"13122:45:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13153:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"13164:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13149:3:25"},"nodeType":"YulFunctionCall","src":"13149:17:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13136:12:25"},"nodeType":"YulFunctionCall","src":"13136:31:25"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13126:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"13214:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13216:77:25"},"nodeType":"YulFunctionCall","src":"13216:79:25"},"nodeType":"YulExpressionStatement","src":"13216:79:25"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13186:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"13194:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13183:2:25"},"nodeType":"YulFunctionCall","src":"13183:30:25"},"nodeType":"YulIf","src":"13180:117:25"},{"nodeType":"YulAssignment","src":"13311:82:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13365:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"13376:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13361:3:25"},"nodeType":"YulFunctionCall","src":"13361:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13385:7:25"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"13329:31:25"},"nodeType":"YulFunctionCall","src":"13329:64:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13311:6:25"},{"name":"value1","nodeType":"YulIdentifier","src":"13319:6:25"}]}]},{"nodeType":"YulBlock","src":"13413:115:25","statements":[{"nodeType":"YulVariableDeclaration","src":"13428:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"13442:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13432:6:25","type":""}]},{"nodeType":"YulAssignment","src":"13458:60:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13490:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"13501:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13486:3:25"},"nodeType":"YulFunctionCall","src":"13486:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13510:7:25"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"13468:17:25"},"nodeType":"YulFunctionCall","src":"13468:50:25"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"13458:6:25"}]}]},{"nodeType":"YulBlock","src":"13538:118:25","statements":[{"nodeType":"YulVariableDeclaration","src":"13553:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"13567:2:25","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13557:6:25","type":""}]},{"nodeType":"YulAssignment","src":"13583:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13618:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"13629:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13614:3:25"},"nodeType":"YulFunctionCall","src":"13614:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13638:7:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"13593:20:25"},"nodeType":"YulFunctionCall","src":"13593:53:25"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"13583:6:25"}]}]},{"nodeType":"YulBlock","src":"13666:307:25","statements":[{"nodeType":"YulVariableDeclaration","src":"13681:46:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13712:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"13723:2:25","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13708:3:25"},"nodeType":"YulFunctionCall","src":"13708:18:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13695:12:25"},"nodeType":"YulFunctionCall","src":"13695:32:25"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13685:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"13774:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13776:77:25"},"nodeType":"YulFunctionCall","src":"13776:79:25"},"nodeType":"YulExpressionStatement","src":"13776:79:25"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13746:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"13754:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13743:2:25"},"nodeType":"YulFunctionCall","src":"13743:30:25"},"nodeType":"YulIf","src":"13740:117:25"},{"nodeType":"YulAssignment","src":"13871:92:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13935:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"13946:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13931:3:25"},"nodeType":"YulFunctionCall","src":"13931:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13955:7:25"}],"functionName":{"name":"abi_decode_t_struct$_RelayData_$1326_calldata_ptr","nodeType":"YulIdentifier","src":"13881:49:25"},"nodeType":"YulFunctionCall","src":"13881:82:25"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"13871:6:25"}]}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptrt_boolt_uint256t_struct$_RelayData_$1326_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12905:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12916:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12928:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12936:6:25","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12944:6:25","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12952:6:25","type":""},{"name":"value4","nodeType":"YulTypedName","src":"12960:6:25","type":""}],"src":"12805:1175:25"},{"body":{"nodeType":"YulBlock","src":"14048:51:25","statements":[{"nodeType":"YulAssignment","src":"14058:35:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14087:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"14069:17:25"},"nodeType":"YulFunctionCall","src":"14069:24:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"14058:7:25"}]}]},"name":"cleanup_t_contract$_IRelayHub_$737","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14030:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"14040:7:25","type":""}],"src":"13986:113:25"},{"body":{"nodeType":"YulBlock","src":"14165:96:25","statements":[{"body":{"nodeType":"YulBlock","src":"14239:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14248:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14251:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14241:6:25"},"nodeType":"YulFunctionCall","src":"14241:12:25"},"nodeType":"YulExpressionStatement","src":"14241:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14188:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14230:5:25"}],"functionName":{"name":"cleanup_t_contract$_IRelayHub_$737","nodeType":"YulIdentifier","src":"14195:34:25"},"nodeType":"YulFunctionCall","src":"14195:41:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"14185:2:25"},"nodeType":"YulFunctionCall","src":"14185:52:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14178:6:25"},"nodeType":"YulFunctionCall","src":"14178:60:25"},"nodeType":"YulIf","src":"14175:80:25"}]},"name":"validator_revert_t_contract$_IRelayHub_$737","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14158:5:25","type":""}],"src":"14105:156:25"},{"body":{"nodeType":"YulBlock","src":"14336:104:25","statements":[{"nodeType":"YulAssignment","src":"14346:29:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14368:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14355:12:25"},"nodeType":"YulFunctionCall","src":"14355:20:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14346:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14428:5:25"}],"functionName":{"name":"validator_revert_t_contract$_IRelayHub_$737","nodeType":"YulIdentifier","src":"14384:43:25"},"nodeType":"YulFunctionCall","src":"14384:50:25"},"nodeType":"YulExpressionStatement","src":"14384:50:25"}]},"name":"abi_decode_t_contract$_IRelayHub_$737","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"14314:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"14322:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"14330:5:25","type":""}],"src":"14267:173:25"},{"body":{"nodeType":"YulBlock","src":"14529:280:25","statements":[{"body":{"nodeType":"YulBlock","src":"14575:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"14577:77:25"},"nodeType":"YulFunctionCall","src":"14577:79:25"},"nodeType":"YulExpressionStatement","src":"14577:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14550:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"14559:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14546:3:25"},"nodeType":"YulFunctionCall","src":"14546:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"14571:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14542:3:25"},"nodeType":"YulFunctionCall","src":"14542:32:25"},"nodeType":"YulIf","src":"14539:119:25"},{"nodeType":"YulBlock","src":"14668:134:25","statements":[{"nodeType":"YulVariableDeclaration","src":"14683:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"14697:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14687:6:25","type":""}]},{"nodeType":"YulAssignment","src":"14712:80:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14764:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"14775:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14760:3:25"},"nodeType":"YulFunctionCall","src":"14760:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14784:7:25"}],"functionName":{"name":"abi_decode_t_contract$_IRelayHub_$737","nodeType":"YulIdentifier","src":"14722:37:25"},"nodeType":"YulFunctionCall","src":"14722:70:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"14712:6:25"}]}]}]},"name":"abi_decode_tuple_t_contract$_IRelayHub_$737","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14499:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"14510:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14522:6:25","type":""}],"src":"14446:363:25"},{"body":{"nodeType":"YulBlock","src":"14874:40:25","statements":[{"nodeType":"YulAssignment","src":"14885:22:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14901:5:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14895:5:25"},"nodeType":"YulFunctionCall","src":"14895:12:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"14885:6:25"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14857:5:25","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"14867:6:25","type":""}],"src":"14815:99:25"},{"body":{"nodeType":"YulBlock","src":"15012:272:25","statements":[{"nodeType":"YulVariableDeclaration","src":"15022:53:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15069:5:25"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"15036:32:25"},"nodeType":"YulFunctionCall","src":"15036:39:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"15026:6:25","type":""}]},{"nodeType":"YulAssignment","src":"15084:78:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15150:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"15155:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15091:58:25"},"nodeType":"YulFunctionCall","src":"15091:71:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15084:3:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15197:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"15204:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15193:3:25"},"nodeType":"YulFunctionCall","src":"15193:16:25"},{"name":"pos","nodeType":"YulIdentifier","src":"15211:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"15216:6:25"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"15171:21:25"},"nodeType":"YulFunctionCall","src":"15171:52:25"},"nodeType":"YulExpressionStatement","src":"15171:52:25"},{"nodeType":"YulAssignment","src":"15232:46:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15243:3:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"15270:6:25"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"15248:21:25"},"nodeType":"YulFunctionCall","src":"15248:29:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15239:3:25"},"nodeType":"YulFunctionCall","src":"15239:39:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15232:3:25"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14993:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"15000:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15008:3:25","type":""}],"src":"14920:364:25"},{"body":{"nodeType":"YulBlock","src":"15408:195:25","statements":[{"nodeType":"YulAssignment","src":"15418:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15430:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"15441:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15426:3:25"},"nodeType":"YulFunctionCall","src":"15426:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15418:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15465:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"15476:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15461:3:25"},"nodeType":"YulFunctionCall","src":"15461:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15484:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"15490:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15480:3:25"},"nodeType":"YulFunctionCall","src":"15480:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15454:6:25"},"nodeType":"YulFunctionCall","src":"15454:47:25"},"nodeType":"YulExpressionStatement","src":"15454:47:25"},{"nodeType":"YulAssignment","src":"15510:86:25","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15582:6:25"},{"name":"tail","nodeType":"YulIdentifier","src":"15591:4:25"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15518:63:25"},"nodeType":"YulFunctionCall","src":"15518:78:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15510:4:25"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15380:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15392:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15403:4:25","type":""}],"src":"15290:313:25"},{"body":{"nodeType":"YulBlock","src":"15707:455:25","statements":[{"body":{"nodeType":"YulBlock","src":"15753:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"15755:77:25"},"nodeType":"YulFunctionCall","src":"15755:79:25"},"nodeType":"YulExpressionStatement","src":"15755:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"15728:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"15737:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15724:3:25"},"nodeType":"YulFunctionCall","src":"15724:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"15749:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"15720:3:25"},"nodeType":"YulFunctionCall","src":"15720:32:25"},"nodeType":"YulIf","src":"15717:119:25"},{"nodeType":"YulBlock","src":"15846:309:25","statements":[{"nodeType":"YulVariableDeclaration","src":"15861:45:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15892:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"15903:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15888:3:25"},"nodeType":"YulFunctionCall","src":"15888:17:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"15875:12:25"},"nodeType":"YulFunctionCall","src":"15875:31:25"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"15865:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"15953:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"15955:77:25"},"nodeType":"YulFunctionCall","src":"15955:79:25"},"nodeType":"YulExpressionStatement","src":"15955:79:25"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15925:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"15933:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15922:2:25"},"nodeType":"YulFunctionCall","src":"15922:30:25"},"nodeType":"YulIf","src":"15919:117:25"},{"nodeType":"YulAssignment","src":"16050:95:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16117:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"16128:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16113:3:25"},"nodeType":"YulFunctionCall","src":"16113:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"16137:7:25"}],"functionName":{"name":"abi_decode_t_struct$_RelayRequest_$1333_calldata_ptr","nodeType":"YulIdentifier","src":"16060:52:25"},"nodeType":"YulFunctionCall","src":"16060:85:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"16050:6:25"}]}]}]},"name":"abi_decode_tuple_t_struct$_RelayRequest_$1333_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15677:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"15688:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"15700:6:25","type":""}],"src":"15609:553:25"},{"body":{"nodeType":"YulBlock","src":"16294:206:25","statements":[{"nodeType":"YulAssignment","src":"16304:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16316:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"16327:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16312:3:25"},"nodeType":"YulFunctionCall","src":"16312:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16304:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16384:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16397:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"16408:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16393:3:25"},"nodeType":"YulFunctionCall","src":"16393:17:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16340:43:25"},"nodeType":"YulFunctionCall","src":"16340:71:25"},"nodeType":"YulExpressionStatement","src":"16340:71:25"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"16465:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16478:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"16489:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16474:3:25"},"nodeType":"YulFunctionCall","src":"16474:18:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"16421:43:25"},"nodeType":"YulFunctionCall","src":"16421:72:25"},"nodeType":"YulExpressionStatement","src":"16421:72:25"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16258:9:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16270:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16278:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16289:4:25","type":""}],"src":"16168:332:25"},{"body":{"nodeType":"YulBlock","src":"16561:53:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16578:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16601:5:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16583:17:25"},"nodeType":"YulFunctionCall","src":"16583:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16571:6:25"},"nodeType":"YulFunctionCall","src":"16571:37:25"},"nodeType":"YulExpressionStatement","src":"16571:37:25"}]},"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16549:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16556:3:25","type":""}],"src":"16506:108:25"},{"body":{"nodeType":"YulBlock","src":"16832:801:25","statements":[{"nodeType":"YulVariableDeclaration","src":"16842:26:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16858:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"16863:4:25","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16854:3:25"},"nodeType":"YulFunctionCall","src":"16854:14:25"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"16846:4:25","type":""}]},{"nodeType":"YulBlock","src":"16878:176:25","statements":[{"nodeType":"YulVariableDeclaration","src":"16925:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16955:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"16962:4:25","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16951:3:25"},"nodeType":"YulFunctionCall","src":"16951:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16945:5:25"},"nodeType":"YulFunctionCall","src":"16945:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"16929:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"17015:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17033:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"17038:4:25","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17029:3:25"},"nodeType":"YulFunctionCall","src":"17029:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"16981:33:25"},"nodeType":"YulFunctionCall","src":"16981:63:25"},"nodeType":"YulExpressionStatement","src":"16981:63:25"}]},{"nodeType":"YulBlock","src":"17064:182:25","statements":[{"nodeType":"YulVariableDeclaration","src":"17117:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17147:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"17154:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17143:3:25"},"nodeType":"YulFunctionCall","src":"17143:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17137:5:25"},"nodeType":"YulFunctionCall","src":"17137:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"17121:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"17207:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17225:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"17230:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17221:3:25"},"nodeType":"YulFunctionCall","src":"17221:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"17173:33:25"},"nodeType":"YulFunctionCall","src":"17173:63:25"},"nodeType":"YulExpressionStatement","src":"17173:63:25"}]},{"nodeType":"YulBlock","src":"17256:183:25","statements":[{"nodeType":"YulVariableDeclaration","src":"17310:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17340:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"17347:4:25","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17336:3:25"},"nodeType":"YulFunctionCall","src":"17336:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17330:5:25"},"nodeType":"YulFunctionCall","src":"17330:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"17314:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"17400:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17418:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"17423:4:25","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17414:3:25"},"nodeType":"YulFunctionCall","src":"17414:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"17366:33:25"},"nodeType":"YulFunctionCall","src":"17366:63:25"},"nodeType":"YulExpressionStatement","src":"17366:63:25"}]},{"nodeType":"YulBlock","src":"17449:177:25","statements":[{"nodeType":"YulVariableDeclaration","src":"17497:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17527:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"17534:4:25","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17523:3:25"},"nodeType":"YulFunctionCall","src":"17523:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17517:5:25"},"nodeType":"YulFunctionCall","src":"17517:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"17501:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"17587:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17605:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"17610:4:25","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17601:3:25"},"nodeType":"YulFunctionCall","src":"17601:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"17553:33:25"},"nodeType":"YulFunctionCall","src":"17553:63:25"},"nodeType":"YulExpressionStatement","src":"17553:63:25"}]}]},"name":"abi_encode_t_struct$_GasAndDataLimits_$401_memory_ptr_to_t_struct$_GasAndDataLimits_$401_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16819:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16826:3:25","type":""}],"src":"16700:933:25"},{"body":{"nodeType":"YulBlock","src":"17803:191:25","statements":[{"nodeType":"YulAssignment","src":"17813:27:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17825:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"17836:3:25","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17821:3:25"},"nodeType":"YulFunctionCall","src":"17821:19:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17813:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17960:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17973:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"17984:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17969:3:25"},"nodeType":"YulFunctionCall","src":"17969:17:25"}],"functionName":{"name":"abi_encode_t_struct$_GasAndDataLimits_$401_memory_ptr_to_t_struct$_GasAndDataLimits_$401_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17850:109:25"},"nodeType":"YulFunctionCall","src":"17850:137:25"},"nodeType":"YulExpressionStatement","src":"17850:137:25"}]},"name":"abi_encode_tuple_t_struct$_GasAndDataLimits_$401_memory_ptr__to_t_struct$_GasAndDataLimits_$401_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17775:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17787:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17798:4:25","type":""}],"src":"17639:355:25"},{"body":{"nodeType":"YulBlock","src":"18092:118:25","statements":[{"nodeType":"YulAssignment","src":"18102:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18114:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"18125:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18110:3:25"},"nodeType":"YulFunctionCall","src":"18110:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18102:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18176:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18189:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"18200:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18185:3:25"},"nodeType":"YulFunctionCall","src":"18185:17:25"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"18138:37:25"},"nodeType":"YulFunctionCall","src":"18138:65:25"},"nodeType":"YulExpressionStatement","src":"18138:65:25"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18064:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18076:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18087:4:25","type":""}],"src":"18000:210:25"},{"body":{"nodeType":"YulBlock","src":"18322:55:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18344:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"18352:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18340:3:25"},"nodeType":"YulFunctionCall","src":"18340:14:25"},{"hexValue":"5377617020706175736564","kind":"string","nodeType":"YulLiteral","src":"18356:13:25","type":"","value":"Swap paused"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18333:6:25"},"nodeType":"YulFunctionCall","src":"18333:37:25"},"nodeType":"YulExpressionStatement","src":"18333:37:25"}]},"name":"store_literal_in_memory_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18314:6:25","type":""}],"src":"18216:161:25"},{"body":{"nodeType":"YulBlock","src":"18529:220:25","statements":[{"nodeType":"YulAssignment","src":"18539:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18605:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"18610:2:25","type":"","value":"11"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18546:58:25"},"nodeType":"YulFunctionCall","src":"18546:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18539:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18711:3:25"}],"functionName":{"name":"store_literal_in_memory_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e","nodeType":"YulIdentifier","src":"18622:88:25"},"nodeType":"YulFunctionCall","src":"18622:93:25"},"nodeType":"YulExpressionStatement","src":"18622:93:25"},{"nodeType":"YulAssignment","src":"18724:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18735:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"18740:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18731:3:25"},"nodeType":"YulFunctionCall","src":"18731:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18724:3:25"}]}]},"name":"abi_encode_t_stringliteral_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18517:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18525:3:25","type":""}],"src":"18383:366:25"},{"body":{"nodeType":"YulBlock","src":"18926:248:25","statements":[{"nodeType":"YulAssignment","src":"18936:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18948:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"18959:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18944:3:25"},"nodeType":"YulFunctionCall","src":"18944:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18936:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18983:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"18994:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18979:3:25"},"nodeType":"YulFunctionCall","src":"18979:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19002:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"19008:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18998:3:25"},"nodeType":"YulFunctionCall","src":"18998:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18972:6:25"},"nodeType":"YulFunctionCall","src":"18972:47:25"},"nodeType":"YulExpressionStatement","src":"18972:47:25"},{"nodeType":"YulAssignment","src":"19028:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19162:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19036:124:25"},"nodeType":"YulFunctionCall","src":"19036:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19028:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18906:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18921:4:25","type":""}],"src":"18755:419:25"},{"body":{"nodeType":"YulBlock","src":"19269:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19286:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19289:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19279:6:25"},"nodeType":"YulFunctionCall","src":"19279:12:25"},"nodeType":"YulExpressionStatement","src":"19279:12:25"}]},"name":"revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad","nodeType":"YulFunctionDefinition","src":"19180:117:25"},{"body":{"nodeType":"YulBlock","src":"19392:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19409:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19412:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19402:6:25"},"nodeType":"YulFunctionCall","src":"19402:12:25"},"nodeType":"YulExpressionStatement","src":"19402:12:25"}]},"name":"revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a","nodeType":"YulFunctionDefinition","src":"19303:117:25"},{"body":{"nodeType":"YulBlock","src":"19515:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19532:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19535:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19525:6:25"},"nodeType":"YulFunctionCall","src":"19525:12:25"},"nodeType":"YulExpressionStatement","src":"19525:12:25"}]},"name":"revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e","nodeType":"YulFunctionDefinition","src":"19426:117:25"},{"body":{"nodeType":"YulBlock","src":"19653:295:25","statements":[{"nodeType":"YulVariableDeclaration","src":"19663:51:25","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"19702:11:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"19689:12:25"},"nodeType":"YulFunctionCall","src":"19689:25:25"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"19667:18:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"19808:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad","nodeType":"YulIdentifier","src":"19810:77:25"},"nodeType":"YulFunctionCall","src":"19810:79:25"},"nodeType":"YulExpressionStatement","src":"19810:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"19737:18:25"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"19765:12:25"},"nodeType":"YulFunctionCall","src":"19765:14:25"},{"name":"base_ref","nodeType":"YulIdentifier","src":"19781:8:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19761:3:25"},"nodeType":"YulFunctionCall","src":"19761:29:25"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19796:4:25","type":"","value":"0xe0"},{"kind":"number","nodeType":"YulLiteral","src":"19802:1:25","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19792:3:25"},"nodeType":"YulFunctionCall","src":"19792:12:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19757:3:25"},"nodeType":"YulFunctionCall","src":"19757:48:25"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"19733:3:25"},"nodeType":"YulFunctionCall","src":"19733:73:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19726:6:25"},"nodeType":"YulFunctionCall","src":"19726:81:25"},"nodeType":"YulIf","src":"19723:168:25"},{"nodeType":"YulAssignment","src":"19900:41:25","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"19912:8:25"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"19922:18:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19908:3:25"},"nodeType":"YulFunctionCall","src":"19908:33:25"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"19900:4:25"}]}]},"name":"access_calldata_tail_t_struct$_ForwardRequest_$318_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"19622:8:25","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"19632:11:25","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"19648:4:25","type":""}],"src":"19549:399:25"},{"body":{"nodeType":"YulBlock","src":"20054:297:25","statements":[{"nodeType":"YulVariableDeclaration","src":"20064:51:25","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"20103:11:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"20090:12:25"},"nodeType":"YulFunctionCall","src":"20090:25:25"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"20068:18:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"20211:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad","nodeType":"YulIdentifier","src":"20213:77:25"},"nodeType":"YulFunctionCall","src":"20213:79:25"},"nodeType":"YulExpressionStatement","src":"20213:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"20138:18:25"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"20166:12:25"},"nodeType":"YulFunctionCall","src":"20166:14:25"},{"name":"base_ref","nodeType":"YulIdentifier","src":"20182:8:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20162:3:25"},"nodeType":"YulFunctionCall","src":"20162:29:25"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20197:6:25","type":"","value":"0x0100"},{"kind":"number","nodeType":"YulLiteral","src":"20205:1:25","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20193:3:25"},"nodeType":"YulFunctionCall","src":"20193:14:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20158:3:25"},"nodeType":"YulFunctionCall","src":"20158:50:25"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"20134:3:25"},"nodeType":"YulFunctionCall","src":"20134:75:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"20127:6:25"},"nodeType":"YulFunctionCall","src":"20127:83:25"},"nodeType":"YulIf","src":"20124:170:25"},{"nodeType":"YulAssignment","src":"20303:41:25","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"20315:8:25"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"20325:18:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20311:3:25"},"nodeType":"YulFunctionCall","src":"20311:33:25"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"20303:4:25"}]}]},"name":"access_calldata_tail_t_struct$_RelayData_$1326_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"20023:8:25","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"20033:11:25","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"20049:4:25","type":""}],"src":"19954:397:25"},{"body":{"nodeType":"YulBlock","src":"20446:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20463:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"20466:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"20456:6:25"},"nodeType":"YulFunctionCall","src":"20456:12:25"},"nodeType":"YulExpressionStatement","src":"20456:12:25"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"20357:117:25"},{"body":{"nodeType":"YulBlock","src":"20569:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20586:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"20589:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"20579:6:25"},"nodeType":"YulFunctionCall","src":"20579:12:25"},"nodeType":"YulExpressionStatement","src":"20579:12:25"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"20480:117:25"},{"body":{"nodeType":"YulBlock","src":"20692:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"20709:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"20712:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"20702:6:25"},"nodeType":"YulFunctionCall","src":"20702:12:25"},"nodeType":"YulExpressionStatement","src":"20702:12:25"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"20603:117:25"},{"body":{"nodeType":"YulBlock","src":"20792:241:25","statements":[{"body":{"nodeType":"YulBlock","src":"20897:22:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"20899:16:25"},"nodeType":"YulFunctionCall","src":"20899:18:25"},"nodeType":"YulExpressionStatement","src":"20899:18:25"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"20869:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"20877:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"20866:2:25"},"nodeType":"YulFunctionCall","src":"20866:30:25"},"nodeType":"YulIf","src":"20863:56:25"},{"nodeType":"YulAssignment","src":"20929:37:25","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"20959:6:25"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"20937:21:25"},"nodeType":"YulFunctionCall","src":"20937:29:25"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"20929:4:25"}]},{"nodeType":"YulAssignment","src":"21003:23:25","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"21015:4:25"},{"kind":"number","nodeType":"YulLiteral","src":"21021:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21011:3:25"},"nodeType":"YulFunctionCall","src":"21011:15:25"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"21003:4:25"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"20776:6:25","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"20787:4:25","type":""}],"src":"20726:307:25"},{"body":{"nodeType":"YulBlock","src":"21090:103:25","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"21113:3:25"},{"name":"src","nodeType":"YulIdentifier","src":"21118:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"21123:6:25"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"21100:12:25"},"nodeType":"YulFunctionCall","src":"21100:30:25"},"nodeType":"YulExpressionStatement","src":"21100:30:25"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"21171:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"21176:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21167:3:25"},"nodeType":"YulFunctionCall","src":"21167:16:25"},{"kind":"number","nodeType":"YulLiteral","src":"21185:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21160:6:25"},"nodeType":"YulFunctionCall","src":"21160:27:25"},"nodeType":"YulExpressionStatement","src":"21160:27:25"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"21072:3:25","type":""},{"name":"dst","nodeType":"YulTypedName","src":"21077:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"21082:6:25","type":""}],"src":"21039:154:25"},{"body":{"nodeType":"YulBlock","src":"21282:327:25","statements":[{"nodeType":"YulAssignment","src":"21292:74:25","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"21358:6:25"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"21317:40:25"},"nodeType":"YulFunctionCall","src":"21317:48:25"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"21301:15:25"},"nodeType":"YulFunctionCall","src":"21301:65:25"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"21292:5:25"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"21382:5:25"},{"name":"length","nodeType":"YulIdentifier","src":"21389:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21375:6:25"},"nodeType":"YulFunctionCall","src":"21375:21:25"},"nodeType":"YulExpressionStatement","src":"21375:21:25"},{"nodeType":"YulVariableDeclaration","src":"21405:27:25","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"21420:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"21427:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21416:3:25"},"nodeType":"YulFunctionCall","src":"21416:16:25"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"21409:3:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"21470:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"21472:77:25"},"nodeType":"YulFunctionCall","src":"21472:79:25"},"nodeType":"YulExpressionStatement","src":"21472:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"21451:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"21456:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21447:3:25"},"nodeType":"YulFunctionCall","src":"21447:16:25"},{"name":"end","nodeType":"YulIdentifier","src":"21465:3:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"21444:2:25"},"nodeType":"YulFunctionCall","src":"21444:25:25"},"nodeType":"YulIf","src":"21441:112:25"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"21586:3:25"},{"name":"dst","nodeType":"YulIdentifier","src":"21591:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"21596:6:25"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"21562:23:25"},"nodeType":"YulFunctionCall","src":"21562:41:25"},"nodeType":"YulExpressionStatement","src":"21562:41:25"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"21255:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"21260:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"21268:3:25","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"21276:5:25","type":""}],"src":"21199:410:25"},{"body":{"nodeType":"YulBlock","src":"21689:277:25","statements":[{"body":{"nodeType":"YulBlock","src":"21738:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"21740:77:25"},"nodeType":"YulFunctionCall","src":"21740:79:25"},"nodeType":"YulExpressionStatement","src":"21740:79:25"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"21717:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"21725:4:25","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21713:3:25"},"nodeType":"YulFunctionCall","src":"21713:17:25"},{"name":"end","nodeType":"YulIdentifier","src":"21732:3:25"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"21709:3:25"},"nodeType":"YulFunctionCall","src":"21709:27:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"21702:6:25"},"nodeType":"YulFunctionCall","src":"21702:35:25"},"nodeType":"YulIf","src":"21699:122:25"},{"nodeType":"YulVariableDeclaration","src":"21830:34:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"21857:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"21844:12:25"},"nodeType":"YulFunctionCall","src":"21844:20:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"21834:6:25","type":""}]},{"nodeType":"YulAssignment","src":"21873:87:25","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"21933:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"21941:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21929:3:25"},"nodeType":"YulFunctionCall","src":"21929:17:25"},{"name":"length","nodeType":"YulIdentifier","src":"21948:6:25"},{"name":"end","nodeType":"YulIdentifier","src":"21956:3:25"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"21882:46:25"},"nodeType":"YulFunctionCall","src":"21882:78:25"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"21873:5:25"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"21667:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"21675:3:25","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"21683:5:25","type":""}],"src":"21628:338:25"},{"body":{"nodeType":"YulBlock","src":"22087:1686:25","statements":[{"body":{"nodeType":"YulBlock","src":"22133:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"22135:77:25"},"nodeType":"YulFunctionCall","src":"22135:79:25"},"nodeType":"YulExpressionStatement","src":"22135:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"22108:3:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"22113:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22104:3:25"},"nodeType":"YulFunctionCall","src":"22104:19:25"},{"kind":"number","nodeType":"YulLiteral","src":"22125:6:25","type":"","value":"0x0100"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22100:3:25"},"nodeType":"YulFunctionCall","src":"22100:32:25"},"nodeType":"YulIf","src":"22097:119:25"},{"nodeType":"YulAssignment","src":"22225:32:25","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22250:6:25","type":"","value":"0x0100"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"22234:15:25"},"nodeType":"YulFunctionCall","src":"22234:23:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"22225:5:25"}]},{"nodeType":"YulBlock","src":"22267:154:25","statements":[{"nodeType":"YulVariableDeclaration","src":"22306:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"22320:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22310:6:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22346:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"22353:4:25","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22342:3:25"},"nodeType":"YulFunctionCall","src":"22342:16:25"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22385:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"22396:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22381:3:25"},"nodeType":"YulFunctionCall","src":"22381:22:25"},{"name":"end","nodeType":"YulIdentifier","src":"22405:3:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"22360:20:25"},"nodeType":"YulFunctionCall","src":"22360:49:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22335:6:25"},"nodeType":"YulFunctionCall","src":"22335:75:25"},"nodeType":"YulExpressionStatement","src":"22335:75:25"}]},{"nodeType":"YulBlock","src":"22431:158:25","statements":[{"nodeType":"YulVariableDeclaration","src":"22473:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"22487:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22477:6:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22514:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"22521:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22510:3:25"},"nodeType":"YulFunctionCall","src":"22510:16:25"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22553:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"22564:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22549:3:25"},"nodeType":"YulFunctionCall","src":"22549:22:25"},{"name":"end","nodeType":"YulIdentifier","src":"22573:3:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"22528:20:25"},"nodeType":"YulFunctionCall","src":"22528:49:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22503:6:25"},"nodeType":"YulFunctionCall","src":"22503:75:25"},"nodeType":"YulExpressionStatement","src":"22503:75:25"}]},{"nodeType":"YulBlock","src":"22599:159:25","statements":[{"nodeType":"YulVariableDeclaration","src":"22642:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"22656:2:25","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22646:6:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22683:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"22690:4:25","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22679:3:25"},"nodeType":"YulFunctionCall","src":"22679:16:25"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22722:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"22733:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22718:3:25"},"nodeType":"YulFunctionCall","src":"22718:22:25"},{"name":"end","nodeType":"YulIdentifier","src":"22742:3:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"22697:20:25"},"nodeType":"YulFunctionCall","src":"22697:49:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22672:6:25"},"nodeType":"YulFunctionCall","src":"22672:75:25"},"nodeType":"YulExpressionStatement","src":"22672:75:25"}]},{"nodeType":"YulBlock","src":"22768:158:25","statements":[{"nodeType":"YulVariableDeclaration","src":"22810:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"22824:2:25","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22814:6:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22851:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"22858:4:25","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22847:3:25"},"nodeType":"YulFunctionCall","src":"22847:16:25"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22890:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"22901:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22886:3:25"},"nodeType":"YulFunctionCall","src":"22886:22:25"},{"name":"end","nodeType":"YulIdentifier","src":"22910:3:25"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"22865:20:25"},"nodeType":"YulFunctionCall","src":"22865:49:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22840:6:25"},"nodeType":"YulFunctionCall","src":"22840:75:25"},"nodeType":"YulExpressionStatement","src":"22840:75:25"}]},{"nodeType":"YulBlock","src":"22936:157:25","statements":[{"nodeType":"YulVariableDeclaration","src":"22976:17:25","value":{"kind":"number","nodeType":"YulLiteral","src":"22990:3:25","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22980:6:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23018:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"23025:4:25","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23014:3:25"},"nodeType":"YulFunctionCall","src":"23014:16:25"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23057:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"23068:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23053:3:25"},"nodeType":"YulFunctionCall","src":"23053:22:25"},{"name":"end","nodeType":"YulIdentifier","src":"23077:3:25"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"23032:20:25"},"nodeType":"YulFunctionCall","src":"23032:49:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23007:6:25"},"nodeType":"YulFunctionCall","src":"23007:75:25"},"nodeType":"YulExpressionStatement","src":"23007:75:25"}]},{"nodeType":"YulBlock","src":"23103:157:25","statements":[{"nodeType":"YulVariableDeclaration","src":"23143:17:25","value":{"kind":"number","nodeType":"YulLiteral","src":"23157:3:25","type":"","value":"160"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23147:6:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23185:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"23192:4:25","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23181:3:25"},"nodeType":"YulFunctionCall","src":"23181:16:25"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23224:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"23235:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23220:3:25"},"nodeType":"YulFunctionCall","src":"23220:22:25"},{"name":"end","nodeType":"YulIdentifier","src":"23244:3:25"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"23199:20:25"},"nodeType":"YulFunctionCall","src":"23199:49:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23174:6:25"},"nodeType":"YulFunctionCall","src":"23174:75:25"},"nodeType":"YulExpressionStatement","src":"23174:75:25"}]},{"nodeType":"YulBlock","src":"23270:330:25","statements":[{"nodeType":"YulVariableDeclaration","src":"23314:47:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23345:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"23356:3:25","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23341:3:25"},"nodeType":"YulFunctionCall","src":"23341:19:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"23328:12:25"},"nodeType":"YulFunctionCall","src":"23328:33:25"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23318:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"23408:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulIdentifier","src":"23410:77:25"},"nodeType":"YulFunctionCall","src":"23410:79:25"},"nodeType":"YulExpressionStatement","src":"23410:79:25"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23380:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"23388:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"23377:2:25"},"nodeType":"YulFunctionCall","src":"23377:30:25"},"nodeType":"YulIf","src":"23374:117:25"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23516:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"23523:4:25","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23512:3:25"},"nodeType":"YulFunctionCall","src":"23512:16:25"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23564:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"23575:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23560:3:25"},"nodeType":"YulFunctionCall","src":"23560:22:25"},{"name":"end","nodeType":"YulIdentifier","src":"23584:3:25"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"23530:29:25"},"nodeType":"YulFunctionCall","src":"23530:58:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23505:6:25"},"nodeType":"YulFunctionCall","src":"23505:84:25"},"nodeType":"YulExpressionStatement","src":"23505:84:25"}]},{"nodeType":"YulBlock","src":"23610:156:25","statements":[{"nodeType":"YulVariableDeclaration","src":"23649:17:25","value":{"kind":"number","nodeType":"YulLiteral","src":"23663:3:25","type":"","value":"224"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23653:6:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23691:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"23698:4:25","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23687:3:25"},"nodeType":"YulFunctionCall","src":"23687:16:25"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23730:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"23741:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23726:3:25"},"nodeType":"YulFunctionCall","src":"23726:22:25"},{"name":"end","nodeType":"YulIdentifier","src":"23750:3:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"23705:20:25"},"nodeType":"YulFunctionCall","src":"23705:49:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23680:6:25"},"nodeType":"YulFunctionCall","src":"23680:75:25"},"nodeType":"YulExpressionStatement","src":"23680:75:25"}]}]},"name":"abi_decode_t_struct$_RelayData_$1326_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22062:9:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"22073:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"22081:5:25","type":""}],"src":"22005:1768:25"},{"body":{"nodeType":"YulBlock","src":"23895:101:25","statements":[{"nodeType":"YulAssignment","src":"23906:83:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23967:5:25"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"23974:12:25"},"nodeType":"YulFunctionCall","src":"23974:14:25"}],"functionName":{"name":"abi_decode_t_struct$_RelayData_$1326_memory_ptr","nodeType":"YulIdentifier","src":"23919:47:25"},"nodeType":"YulFunctionCall","src":"23919:70:25"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"23906:9:25"}]}]},"name":"convert_t_struct$_RelayData_$1326_calldata_ptr_to_t_struct$_RelayData_$1326_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23875:5:25","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"23885:9:25","type":""}],"src":"23779:217:25"},{"body":{"nodeType":"YulBlock","src":"24108:58:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24130:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"24138:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24126:3:25"},"nodeType":"YulFunctionCall","src":"24126:14:25"},{"hexValue":"556e6b6e6f776e20746172676574","kind":"string","nodeType":"YulLiteral","src":"24142:16:25","type":"","value":"Unknown target"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24119:6:25"},"nodeType":"YulFunctionCall","src":"24119:40:25"},"nodeType":"YulExpressionStatement","src":"24119:40:25"}]},"name":"store_literal_in_memory_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24100:6:25","type":""}],"src":"24002:164:25"},{"body":{"nodeType":"YulBlock","src":"24318:220:25","statements":[{"nodeType":"YulAssignment","src":"24328:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24394:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"24399:2:25","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24335:58:25"},"nodeType":"YulFunctionCall","src":"24335:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24328:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24500:3:25"}],"functionName":{"name":"store_literal_in_memory_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189","nodeType":"YulIdentifier","src":"24411:88:25"},"nodeType":"YulFunctionCall","src":"24411:93:25"},"nodeType":"YulExpressionStatement","src":"24411:93:25"},{"nodeType":"YulAssignment","src":"24513:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24524:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"24529:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24520:3:25"},"nodeType":"YulFunctionCall","src":"24520:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24513:3:25"}]}]},"name":"abi_encode_t_stringliteral_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"24306:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24314:3:25","type":""}],"src":"24172:366:25"},{"body":{"nodeType":"YulBlock","src":"24715:248:25","statements":[{"nodeType":"YulAssignment","src":"24725:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24737:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"24748:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24733:3:25"},"nodeType":"YulFunctionCall","src":"24733:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24725:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24772:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"24783:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24768:3:25"},"nodeType":"YulFunctionCall","src":"24768:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24791:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"24797:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24787:3:25"},"nodeType":"YulFunctionCall","src":"24787:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24761:6:25"},"nodeType":"YulFunctionCall","src":"24761:47:25"},"nodeType":"YulExpressionStatement","src":"24761:47:25"},{"nodeType":"YulAssignment","src":"24817:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24951:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24825:124:25"},"nodeType":"YulFunctionCall","src":"24825:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24817:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24695:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24710:4:25","type":""}],"src":"24544:419:25"},{"body":{"nodeType":"YulBlock","src":"25059:634:25","statements":[{"nodeType":"YulVariableDeclaration","src":"25069:51:25","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"25108:11:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"25095:12:25"},"nodeType":"YulFunctionCall","src":"25095:25:25"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"25073:18:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"25214:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad","nodeType":"YulIdentifier","src":"25216:77:25"},"nodeType":"YulFunctionCall","src":"25216:79:25"},"nodeType":"YulExpressionStatement","src":"25216:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"25143:18:25"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"25171:12:25"},"nodeType":"YulFunctionCall","src":"25171:14:25"},{"name":"base_ref","nodeType":"YulIdentifier","src":"25187:8:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25167:3:25"},"nodeType":"YulFunctionCall","src":"25167:29:25"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25202:4:25","type":"","value":"0x20"},{"kind":"number","nodeType":"YulLiteral","src":"25208:1:25","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25198:3:25"},"nodeType":"YulFunctionCall","src":"25198:12:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25163:3:25"},"nodeType":"YulFunctionCall","src":"25163:48:25"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25139:3:25"},"nodeType":"YulFunctionCall","src":"25139:73:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25132:6:25"},"nodeType":"YulFunctionCall","src":"25132:81:25"},"nodeType":"YulIf","src":"25129:168:25"},{"nodeType":"YulAssignment","src":"25306:41:25","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"25318:8:25"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"25328:18:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25314:3:25"},"nodeType":"YulFunctionCall","src":"25314:33:25"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"25306:4:25"}]},{"nodeType":"YulAssignment","src":"25357:28:25","value":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"25380:4:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"25367:12:25"},"nodeType":"YulFunctionCall","src":"25367:18:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"25357:6:25"}]},{"body":{"nodeType":"YulBlock","src":"25428:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1e55d03107e9c4f1b5e21c76a16fba166a461117ab153bcce65e6a4ea8e5fc8a","nodeType":"YulIdentifier","src":"25430:77:25"},"nodeType":"YulFunctionCall","src":"25430:79:25"},"nodeType":"YulExpressionStatement","src":"25430:79:25"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25400:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"25408:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"25397:2:25"},"nodeType":"YulFunctionCall","src":"25397:30:25"},"nodeType":"YulIf","src":"25394:117:25"},{"nodeType":"YulAssignment","src":"25520:21:25","value":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"25532:4:25"},{"kind":"number","nodeType":"YulLiteral","src":"25538:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25528:3:25"},"nodeType":"YulFunctionCall","src":"25528:13:25"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"25520:4:25"}]},{"body":{"nodeType":"YulBlock","src":"25603:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_977805620ff29572292dee35f70b0f3f3f73d3fdd0e9f4d7a901c2e43ab18a2e","nodeType":"YulIdentifier","src":"25605:77:25"},"nodeType":"YulFunctionCall","src":"25605:79:25"},"nodeType":"YulExpressionStatement","src":"25605:79:25"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"25557:4:25"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"25567:12:25"},"nodeType":"YulFunctionCall","src":"25567:14:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25587:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"25595:4:25","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"25583:3:25"},"nodeType":"YulFunctionCall","src":"25583:17:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25563:3:25"},"nodeType":"YulFunctionCall","src":"25563:38:25"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"25553:3:25"},"nodeType":"YulFunctionCall","src":"25553:49:25"},"nodeType":"YulIf","src":"25550:136:25"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"25020:8:25","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"25030:11:25","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"25046:4:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"25052:6:25","type":""}],"src":"24969:724:25"},{"body":{"nodeType":"YulBlock","src":"25788:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25805:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25808:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25798:6:25"},"nodeType":"YulFunctionCall","src":"25798:12:25"},"nodeType":"YulExpressionStatement","src":"25798:12:25"}]},"name":"revert_error_7678404c0552a58cf14944d1a786cf4c81aab3563e2735cb332aee47bbb57c4a","nodeType":"YulFunctionDefinition","src":"25699:117:25"},{"body":{"nodeType":"YulBlock","src":"25911:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25928:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25931:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25921:6:25"},"nodeType":"YulFunctionCall","src":"25921:12:25"},"nodeType":"YulExpressionStatement","src":"25921:12:25"}]},"name":"revert_error_46e3e63c93837e9efa638abb3b4e76ced8c11259a873f1381a0abdf6ae6a823c","nodeType":"YulFunctionDefinition","src":"25822:117:25"},{"body":{"nodeType":"YulBlock","src":"26071:343:25","statements":[{"body":{"nodeType":"YulBlock","src":"26109:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_7678404c0552a58cf14944d1a786cf4c81aab3563e2735cb332aee47bbb57c4a","nodeType":"YulIdentifier","src":"26111:77:25"},"nodeType":"YulFunctionCall","src":"26111:79:25"},"nodeType":"YulExpressionStatement","src":"26111:79:25"}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"26087:10:25"},{"name":"endIndex","nodeType":"YulIdentifier","src":"26099:8:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"26084:2:25"},"nodeType":"YulFunctionCall","src":"26084:24:25"},"nodeType":"YulIf","src":"26081:111:25"},{"body":{"nodeType":"YulBlock","src":"26225:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_46e3e63c93837e9efa638abb3b4e76ced8c11259a873f1381a0abdf6ae6a823c","nodeType":"YulIdentifier","src":"26227:77:25"},"nodeType":"YulFunctionCall","src":"26227:79:25"},"nodeType":"YulExpressionStatement","src":"26227:79:25"}]},"condition":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"26207:8:25"},{"name":"length","nodeType":"YulIdentifier","src":"26217:6:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"26204:2:25"},"nodeType":"YulFunctionCall","src":"26204:20:25"},"nodeType":"YulIf","src":"26201:107:25"},{"nodeType":"YulAssignment","src":"26317:44:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"26334:6:25"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"26346:10:25"},{"kind":"number","nodeType":"YulLiteral","src":"26358:1:25","type":"","value":"1"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"26342:3:25"},"nodeType":"YulFunctionCall","src":"26342:18:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26330:3:25"},"nodeType":"YulFunctionCall","src":"26330:31:25"},"variableNames":[{"name":"offsetOut","nodeType":"YulIdentifier","src":"26317:9:25"}]},{"nodeType":"YulAssignment","src":"26370:38:25","value":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"26387:8:25"},{"name":"startIndex","nodeType":"YulIdentifier","src":"26397:10:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26383:3:25"},"nodeType":"YulFunctionCall","src":"26383:25:25"},"variableNames":[{"name":"lengthOut","nodeType":"YulIdentifier","src":"26370:9:25"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"26009:6:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"26017:6:25","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"26025:10:25","type":""},{"name":"endIndex","nodeType":"YulTypedName","src":"26037:8:25","type":""}],"returnVariables":[{"name":"offsetOut","nodeType":"YulTypedName","src":"26050:9:25","type":""},{"name":"lengthOut","nodeType":"YulTypedName","src":"26061:9:25","type":""}],"src":"25945:469:25"},{"body":{"nodeType":"YulBlock","src":"26511:399:25","statements":[{"body":{"nodeType":"YulBlock","src":"26557:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"26559:77:25"},"nodeType":"YulFunctionCall","src":"26559:79:25"},"nodeType":"YulExpressionStatement","src":"26559:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"26532:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"26541:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26528:3:25"},"nodeType":"YulFunctionCall","src":"26528:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"26553:2:25","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"26524:3:25"},"nodeType":"YulFunctionCall","src":"26524:32:25"},"nodeType":"YulIf","src":"26521:119:25"},{"nodeType":"YulBlock","src":"26650:125:25","statements":[{"nodeType":"YulVariableDeclaration","src":"26665:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"26679:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26669:6:25","type":""}]},{"nodeType":"YulAssignment","src":"26694:71:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26737:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"26748:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26733:3:25"},"nodeType":"YulFunctionCall","src":"26733:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"26757:7:25"}],"functionName":{"name":"abi_decode_t_address_payable","nodeType":"YulIdentifier","src":"26704:28:25"},"nodeType":"YulFunctionCall","src":"26704:61:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"26694:6:25"}]}]},{"nodeType":"YulBlock","src":"26785:118:25","statements":[{"nodeType":"YulVariableDeclaration","src":"26800:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"26814:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26804:6:25","type":""}]},{"nodeType":"YulAssignment","src":"26830:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26865:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"26876:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26861:3:25"},"nodeType":"YulFunctionCall","src":"26861:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"26885:7:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"26840:20:25"},"nodeType":"YulFunctionCall","src":"26840:53:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"26830:6:25"}]}]}]},"name":"abi_decode_tuple_t_address_payablet_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26473:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"26484:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"26496:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"26504:6:25","type":""}],"src":"26420:490:25"},{"body":{"nodeType":"YulBlock","src":"27022:65:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"27044:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"27052:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27040:3:25"},"nodeType":"YulFunctionCall","src":"27040:14:25"},{"hexValue":"546f6b656e206e6f742077686974656c6973746564","kind":"string","nodeType":"YulLiteral","src":"27056:23:25","type":"","value":"Token not whitelisted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27033:6:25"},"nodeType":"YulFunctionCall","src":"27033:47:25"},"nodeType":"YulExpressionStatement","src":"27033:47:25"}]},"name":"store_literal_in_memory_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"27014:6:25","type":""}],"src":"26916:171:25"},{"body":{"nodeType":"YulBlock","src":"27239:220:25","statements":[{"nodeType":"YulAssignment","src":"27249:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27315:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"27320:2:25","type":"","value":"21"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27256:58:25"},"nodeType":"YulFunctionCall","src":"27256:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"27249:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27421:3:25"}],"functionName":{"name":"store_literal_in_memory_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312","nodeType":"YulIdentifier","src":"27332:88:25"},"nodeType":"YulFunctionCall","src":"27332:93:25"},"nodeType":"YulExpressionStatement","src":"27332:93:25"},{"nodeType":"YulAssignment","src":"27434:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27445:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"27450:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27441:3:25"},"nodeType":"YulFunctionCall","src":"27441:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"27434:3:25"}]}]},"name":"abi_encode_t_stringliteral_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"27227:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"27235:3:25","type":""}],"src":"27093:366:25"},{"body":{"nodeType":"YulBlock","src":"27636:248:25","statements":[{"nodeType":"YulAssignment","src":"27646:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27658:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"27669:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27654:3:25"},"nodeType":"YulFunctionCall","src":"27654:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27646:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27693:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"27704:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27689:3:25"},"nodeType":"YulFunctionCall","src":"27689:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27712:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"27718:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27708:3:25"},"nodeType":"YulFunctionCall","src":"27708:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27682:6:25"},"nodeType":"YulFunctionCall","src":"27682:47:25"},"nodeType":"YulExpressionStatement","src":"27682:47:25"},{"nodeType":"YulAssignment","src":"27738:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27872:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27746:124:25"},"nodeType":"YulFunctionCall","src":"27746:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27738:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27616:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27631:4:25","type":""}],"src":"27465:419:25"},{"body":{"nodeType":"YulBlock","src":"27918:152:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"27935:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"27938:77:25","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27928:6:25"},"nodeType":"YulFunctionCall","src":"27928:88:25"},"nodeType":"YulExpressionStatement","src":"27928:88:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28032:1:25","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"28035:4:25","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"28025:6:25"},"nodeType":"YulFunctionCall","src":"28025:15:25"},"nodeType":"YulExpressionStatement","src":"28025:15:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28056:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28059:4:25","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"28049:6:25"},"nodeType":"YulFunctionCall","src":"28049:15:25"},"nodeType":"YulExpressionStatement","src":"28049:15:25"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"27890:180:25"},{"body":{"nodeType":"YulBlock","src":"28120:261:25","statements":[{"nodeType":"YulAssignment","src":"28130:25:25","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"28153:1:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"28135:17:25"},"nodeType":"YulFunctionCall","src":"28135:20:25"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"28130:1:25"}]},{"nodeType":"YulAssignment","src":"28164:25:25","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"28187:1:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"28169:17:25"},"nodeType":"YulFunctionCall","src":"28169:20:25"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"28164:1:25"}]},{"body":{"nodeType":"YulBlock","src":"28327:22:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"28329:16:25"},"nodeType":"YulFunctionCall","src":"28329:18:25"},"nodeType":"YulExpressionStatement","src":"28329:18:25"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"28248:1:25"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28255:66:25","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"28323:1:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28251:3:25"},"nodeType":"YulFunctionCall","src":"28251:74:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"28245:2:25"},"nodeType":"YulFunctionCall","src":"28245:81:25"},"nodeType":"YulIf","src":"28242:107:25"},{"nodeType":"YulAssignment","src":"28359:16:25","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"28370:1:25"},{"name":"y","nodeType":"YulIdentifier","src":"28373:1:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28366:3:25"},"nodeType":"YulFunctionCall","src":"28366:9:25"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"28359:3:25"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"28107:1:25","type":""},{"name":"y","nodeType":"YulTypedName","src":"28110:1:25","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"28116:3:25","type":""}],"src":"28076:305:25"},{"body":{"nodeType":"YulBlock","src":"28513:206:25","statements":[{"nodeType":"YulAssignment","src":"28523:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28535:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"28546:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28531:3:25"},"nodeType":"YulFunctionCall","src":"28531:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"28523:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"28603:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28616:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"28627:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28612:3:25"},"nodeType":"YulFunctionCall","src":"28612:17:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"28559:43:25"},"nodeType":"YulFunctionCall","src":"28559:71:25"},"nodeType":"YulExpressionStatement","src":"28559:71:25"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"28684:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28697:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"28708:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28693:3:25"},"nodeType":"YulFunctionCall","src":"28693:18:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"28640:43:25"},"nodeType":"YulFunctionCall","src":"28640:72:25"},"nodeType":"YulExpressionStatement","src":"28640:72:25"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28477:9:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"28489:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"28497:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"28508:4:25","type":""}],"src":"28387:332:25"},{"body":{"nodeType":"YulBlock","src":"28788:80:25","statements":[{"nodeType":"YulAssignment","src":"28798:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"28813:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"28807:5:25"},"nodeType":"YulFunctionCall","src":"28807:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"28798:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28856:5:25"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"28829:26:25"},"nodeType":"YulFunctionCall","src":"28829:33:25"},"nodeType":"YulExpressionStatement","src":"28829:33:25"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"28766:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"28774:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"28782:5:25","type":""}],"src":"28725:143:25"},{"body":{"nodeType":"YulBlock","src":"28951:274:25","statements":[{"body":{"nodeType":"YulBlock","src":"28997:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"28999:77:25"},"nodeType":"YulFunctionCall","src":"28999:79:25"},"nodeType":"YulExpressionStatement","src":"28999:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"28972:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"28981:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28968:3:25"},"nodeType":"YulFunctionCall","src":"28968:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"28993:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"28964:3:25"},"nodeType":"YulFunctionCall","src":"28964:32:25"},"nodeType":"YulIf","src":"28961:119:25"},{"nodeType":"YulBlock","src":"29090:128:25","statements":[{"nodeType":"YulVariableDeclaration","src":"29105:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"29119:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"29109:6:25","type":""}]},{"nodeType":"YulAssignment","src":"29134:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29180:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"29191:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29176:3:25"},"nodeType":"YulFunctionCall","src":"29176:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"29200:7:25"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"29144:31:25"},"nodeType":"YulFunctionCall","src":"29144:64:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"29134:6:25"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28921:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"28932:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"28944:6:25","type":""}],"src":"28874:351:25"},{"body":{"nodeType":"YulBlock","src":"29337:76:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"29359:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"29367:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29355:3:25"},"nodeType":"YulFunctionCall","src":"29355:14:25"},{"hexValue":"4665652b616d6f756e743a204e6f7420656e6f75676820616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"29371:34:25","type":"","value":"Fee+amount: Not enough allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29348:6:25"},"nodeType":"YulFunctionCall","src":"29348:58:25"},"nodeType":"YulExpressionStatement","src":"29348:58:25"}]},"name":"store_literal_in_memory_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"29329:6:25","type":""}],"src":"29231:182:25"},{"body":{"nodeType":"YulBlock","src":"29565:220:25","statements":[{"nodeType":"YulAssignment","src":"29575:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29641:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"29646:2:25","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"29582:58:25"},"nodeType":"YulFunctionCall","src":"29582:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"29575:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29747:3:25"}],"functionName":{"name":"store_literal_in_memory_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d","nodeType":"YulIdentifier","src":"29658:88:25"},"nodeType":"YulFunctionCall","src":"29658:93:25"},"nodeType":"YulExpressionStatement","src":"29658:93:25"},{"nodeType":"YulAssignment","src":"29760:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29771:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"29776:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29767:3:25"},"nodeType":"YulFunctionCall","src":"29767:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"29760:3:25"}]}]},"name":"abi_encode_t_stringliteral_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"29553:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"29561:3:25","type":""}],"src":"29419:366:25"},{"body":{"nodeType":"YulBlock","src":"29962:248:25","statements":[{"nodeType":"YulAssignment","src":"29972:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29984:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"29995:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29980:3:25"},"nodeType":"YulFunctionCall","src":"29980:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29972:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30019:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"30030:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30015:3:25"},"nodeType":"YulFunctionCall","src":"30015:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"30038:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"30044:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"30034:3:25"},"nodeType":"YulFunctionCall","src":"30034:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30008:6:25"},"nodeType":"YulFunctionCall","src":"30008:47:25"},"nodeType":"YulExpressionStatement","src":"30008:47:25"},{"nodeType":"YulAssignment","src":"30064:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"30198:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"30072:124:25"},"nodeType":"YulFunctionCall","src":"30072:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30064:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29942:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"29957:4:25","type":""}],"src":"29791:419:25"},{"body":{"nodeType":"YulBlock","src":"30322:74:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"30344:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"30352:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30340:3:25"},"nodeType":"YulFunctionCall","src":"30340:14:25"},{"hexValue":"4665652b616d6f756e743a204e6f7420656e6f7567682062616c616e6365","kind":"string","nodeType":"YulLiteral","src":"30356:32:25","type":"","value":"Fee+amount: Not enough balance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30333:6:25"},"nodeType":"YulFunctionCall","src":"30333:56:25"},"nodeType":"YulExpressionStatement","src":"30333:56:25"}]},"name":"store_literal_in_memory_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"30314:6:25","type":""}],"src":"30216:180:25"},{"body":{"nodeType":"YulBlock","src":"30548:220:25","statements":[{"nodeType":"YulAssignment","src":"30558:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30624:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"30629:2:25","type":"","value":"30"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"30565:58:25"},"nodeType":"YulFunctionCall","src":"30565:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"30558:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30730:3:25"}],"functionName":{"name":"store_literal_in_memory_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2","nodeType":"YulIdentifier","src":"30641:88:25"},"nodeType":"YulFunctionCall","src":"30641:93:25"},"nodeType":"YulExpressionStatement","src":"30641:93:25"},{"nodeType":"YulAssignment","src":"30743:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30754:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"30759:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30750:3:25"},"nodeType":"YulFunctionCall","src":"30750:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"30743:3:25"}]}]},"name":"abi_encode_t_stringliteral_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"30536:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"30544:3:25","type":""}],"src":"30402:366:25"},{"body":{"nodeType":"YulBlock","src":"30945:248:25","statements":[{"nodeType":"YulAssignment","src":"30955:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30967:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"30978:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30963:3:25"},"nodeType":"YulFunctionCall","src":"30963:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30955:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31002:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"31013:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30998:3:25"},"nodeType":"YulFunctionCall","src":"30998:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"31021:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"31027:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"31017:3:25"},"nodeType":"YulFunctionCall","src":"31017:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30991:6:25"},"nodeType":"YulFunctionCall","src":"30991:47:25"},"nodeType":"YulExpressionStatement","src":"30991:47:25"},{"nodeType":"YulAssignment","src":"31047:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"31181:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31055:124:25"},"nodeType":"YulFunctionCall","src":"31055:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31047:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"30925:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"30940:4:25","type":""}],"src":"30774:419:25"},{"body":{"nodeType":"YulBlock","src":"31305:69:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"31327:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"31335:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31323:3:25"},"nodeType":"YulFunctionCall","src":"31323:14:25"},{"hexValue":"4665653a204e6f7420656e6f75676820616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"31339:27:25","type":"","value":"Fee: Not enough allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31316:6:25"},"nodeType":"YulFunctionCall","src":"31316:51:25"},"nodeType":"YulExpressionStatement","src":"31316:51:25"}]},"name":"store_literal_in_memory_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"31297:6:25","type":""}],"src":"31199:175:25"},{"body":{"nodeType":"YulBlock","src":"31526:220:25","statements":[{"nodeType":"YulAssignment","src":"31536:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31602:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"31607:2:25","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31543:58:25"},"nodeType":"YulFunctionCall","src":"31543:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"31536:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31708:3:25"}],"functionName":{"name":"store_literal_in_memory_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0","nodeType":"YulIdentifier","src":"31619:88:25"},"nodeType":"YulFunctionCall","src":"31619:93:25"},"nodeType":"YulExpressionStatement","src":"31619:93:25"},{"nodeType":"YulAssignment","src":"31721:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31732:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"31737:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31728:3:25"},"nodeType":"YulFunctionCall","src":"31728:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"31721:3:25"}]}]},"name":"abi_encode_t_stringliteral_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"31514:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"31522:3:25","type":""}],"src":"31380:366:25"},{"body":{"nodeType":"YulBlock","src":"31923:248:25","statements":[{"nodeType":"YulAssignment","src":"31933:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31945:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"31956:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31941:3:25"},"nodeType":"YulFunctionCall","src":"31941:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31933:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31980:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"31991:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31976:3:25"},"nodeType":"YulFunctionCall","src":"31976:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"31999:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"32005:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"31995:3:25"},"nodeType":"YulFunctionCall","src":"31995:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31969:6:25"},"nodeType":"YulFunctionCall","src":"31969:47:25"},"nodeType":"YulExpressionStatement","src":"31969:47:25"},{"nodeType":"YulAssignment","src":"32025:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"32159:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"32033:124:25"},"nodeType":"YulFunctionCall","src":"32033:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"32025:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31903:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"31918:4:25","type":""}],"src":"31752:419:25"},{"body":{"nodeType":"YulBlock","src":"32283:67:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"32305:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"32313:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32301:3:25"},"nodeType":"YulFunctionCall","src":"32301:14:25"},{"hexValue":"4665653a204e6f7420656e6f7567682062616c616e6365","kind":"string","nodeType":"YulLiteral","src":"32317:25:25","type":"","value":"Fee: Not enough balance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32294:6:25"},"nodeType":"YulFunctionCall","src":"32294:49:25"},"nodeType":"YulExpressionStatement","src":"32294:49:25"}]},"name":"store_literal_in_memory_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"32275:6:25","type":""}],"src":"32177:173:25"},{"body":{"nodeType":"YulBlock","src":"32502:220:25","statements":[{"nodeType":"YulAssignment","src":"32512:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32578:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"32583:2:25","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"32519:58:25"},"nodeType":"YulFunctionCall","src":"32519:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"32512:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32684:3:25"}],"functionName":{"name":"store_literal_in_memory_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf","nodeType":"YulIdentifier","src":"32595:88:25"},"nodeType":"YulFunctionCall","src":"32595:93:25"},"nodeType":"YulExpressionStatement","src":"32595:93:25"},{"nodeType":"YulAssignment","src":"32697:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"32708:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"32713:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32704:3:25"},"nodeType":"YulFunctionCall","src":"32704:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"32697:3:25"}]}]},"name":"abi_encode_t_stringliteral_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"32490:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"32498:3:25","type":""}],"src":"32356:366:25"},{"body":{"nodeType":"YulBlock","src":"32899:248:25","statements":[{"nodeType":"YulAssignment","src":"32909:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32921:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"32932:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32917:3:25"},"nodeType":"YulFunctionCall","src":"32917:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"32909:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32956:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"32967:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32952:3:25"},"nodeType":"YulFunctionCall","src":"32952:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"32975:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"32981:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"32971:3:25"},"nodeType":"YulFunctionCall","src":"32971:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32945:6:25"},"nodeType":"YulFunctionCall","src":"32945:47:25"},"nodeType":"YulExpressionStatement","src":"32945:47:25"},{"nodeType":"YulAssignment","src":"33001:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"33135:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"33009:124:25"},"nodeType":"YulFunctionCall","src":"33009:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"33001:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"32879:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"32894:4:25","type":""}],"src":"32728:419:25"},{"body":{"nodeType":"YulBlock","src":"33259:64:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"33281:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"33289:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33277:3:25"},"nodeType":"YulFunctionCall","src":"33277:14:25"},{"hexValue":"4e6f7420656e6f75676820616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"33293:22:25","type":"","value":"Not enough allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33270:6:25"},"nodeType":"YulFunctionCall","src":"33270:46:25"},"nodeType":"YulExpressionStatement","src":"33270:46:25"}]},"name":"store_literal_in_memory_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"33251:6:25","type":""}],"src":"33153:170:25"},{"body":{"nodeType":"YulBlock","src":"33475:220:25","statements":[{"nodeType":"YulAssignment","src":"33485:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33551:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"33556:2:25","type":"","value":"20"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"33492:58:25"},"nodeType":"YulFunctionCall","src":"33492:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"33485:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33657:3:25"}],"functionName":{"name":"store_literal_in_memory_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc","nodeType":"YulIdentifier","src":"33568:88:25"},"nodeType":"YulFunctionCall","src":"33568:93:25"},"nodeType":"YulExpressionStatement","src":"33568:93:25"},{"nodeType":"YulAssignment","src":"33670:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33681:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"33686:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33677:3:25"},"nodeType":"YulFunctionCall","src":"33677:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"33670:3:25"}]}]},"name":"abi_encode_t_stringliteral_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"33463:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"33471:3:25","type":""}],"src":"33329:366:25"},{"body":{"nodeType":"YulBlock","src":"33872:248:25","statements":[{"nodeType":"YulAssignment","src":"33882:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33894:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"33905:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33890:3:25"},"nodeType":"YulFunctionCall","src":"33890:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"33882:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33929:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"33940:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33925:3:25"},"nodeType":"YulFunctionCall","src":"33925:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"33948:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"33954:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"33944:3:25"},"nodeType":"YulFunctionCall","src":"33944:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33918:6:25"},"nodeType":"YulFunctionCall","src":"33918:47:25"},"nodeType":"YulExpressionStatement","src":"33918:47:25"},{"nodeType":"YulAssignment","src":"33974:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"34108:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"33982:124:25"},"nodeType":"YulFunctionCall","src":"33982:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"33974:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"33852:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"33867:4:25","type":""}],"src":"33701:419:25"},{"body":{"nodeType":"YulBlock","src":"34232:62:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"34254:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"34262:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34250:3:25"},"nodeType":"YulFunctionCall","src":"34250:14:25"},{"hexValue":"4e6f7420656e6f7567682062616c616e6365","kind":"string","nodeType":"YulLiteral","src":"34266:20:25","type":"","value":"Not enough balance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34243:6:25"},"nodeType":"YulFunctionCall","src":"34243:44:25"},"nodeType":"YulExpressionStatement","src":"34243:44:25"}]},"name":"store_literal_in_memory_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"34224:6:25","type":""}],"src":"34126:168:25"},{"body":{"nodeType":"YulBlock","src":"34446:220:25","statements":[{"nodeType":"YulAssignment","src":"34456:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"34522:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"34527:2:25","type":"","value":"18"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"34463:58:25"},"nodeType":"YulFunctionCall","src":"34463:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"34456:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"34628:3:25"}],"functionName":{"name":"store_literal_in_memory_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad","nodeType":"YulIdentifier","src":"34539:88:25"},"nodeType":"YulFunctionCall","src":"34539:93:25"},"nodeType":"YulExpressionStatement","src":"34539:93:25"},{"nodeType":"YulAssignment","src":"34641:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"34652:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"34657:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34648:3:25"},"nodeType":"YulFunctionCall","src":"34648:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"34641:3:25"}]}]},"name":"abi_encode_t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"34434:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"34442:3:25","type":""}],"src":"34300:366:25"},{"body":{"nodeType":"YulBlock","src":"34843:248:25","statements":[{"nodeType":"YulAssignment","src":"34853:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34865:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"34876:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34861:3:25"},"nodeType":"YulFunctionCall","src":"34861:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34853:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"34900:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"34911:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"34896:3:25"},"nodeType":"YulFunctionCall","src":"34896:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"34919:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"34925:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"34915:3:25"},"nodeType":"YulFunctionCall","src":"34915:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"34889:6:25"},"nodeType":"YulFunctionCall","src":"34889:47:25"},"nodeType":"YulExpressionStatement","src":"34889:47:25"},{"nodeType":"YulAssignment","src":"34945:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"35079:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"34953:124:25"},"nodeType":"YulFunctionCall","src":"34953:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34945:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"34823:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"34838:4:25","type":""}],"src":"34672:419:25"},{"body":{"nodeType":"YulBlock","src":"35160:80:25","statements":[{"nodeType":"YulAssignment","src":"35170:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"35185:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"35179:5:25"},"nodeType":"YulFunctionCall","src":"35179:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"35170:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"35228:5:25"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"35201:26:25"},"nodeType":"YulFunctionCall","src":"35201:33:25"},"nodeType":"YulExpressionStatement","src":"35201:33:25"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"35138:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"35146:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"35154:5:25","type":""}],"src":"35097:143:25"},{"body":{"nodeType":"YulBlock","src":"35323:274:25","statements":[{"body":{"nodeType":"YulBlock","src":"35369:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"35371:77:25"},"nodeType":"YulFunctionCall","src":"35371:79:25"},"nodeType":"YulExpressionStatement","src":"35371:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"35344:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"35353:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"35340:3:25"},"nodeType":"YulFunctionCall","src":"35340:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"35365:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"35336:3:25"},"nodeType":"YulFunctionCall","src":"35336:32:25"},"nodeType":"YulIf","src":"35333:119:25"},{"nodeType":"YulBlock","src":"35462:128:25","statements":[{"nodeType":"YulVariableDeclaration","src":"35477:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"35491:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"35481:6:25","type":""}]},{"nodeType":"YulAssignment","src":"35506:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"35552:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"35563:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35548:3:25"},"nodeType":"YulFunctionCall","src":"35548:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"35572:7:25"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"35516:31:25"},"nodeType":"YulFunctionCall","src":"35516:64:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"35506:6:25"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"35293:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"35304:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"35316:6:25","type":""}],"src":"35246:351:25"},{"body":{"nodeType":"YulBlock","src":"35658:53:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35675:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"35698:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"35680:17:25"},"nodeType":"YulFunctionCall","src":"35680:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35668:6:25"},"nodeType":"YulFunctionCall","src":"35668:37:25"},"nodeType":"YulExpressionStatement","src":"35668:37:25"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"35646:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"35653:3:25","type":""}],"src":"35603:108:25"},{"body":{"nodeType":"YulBlock","src":"35802:73:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35819:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"35824:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"35812:6:25"},"nodeType":"YulFunctionCall","src":"35812:19:25"},"nodeType":"YulExpressionStatement","src":"35812:19:25"},{"nodeType":"YulAssignment","src":"35840:29:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"35859:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"35864:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"35855:3:25"},"nodeType":"YulFunctionCall","src":"35855:14:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"35840:11:25"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"35774:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"35779:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"35790:11:25","type":""}],"src":"35717:158:25"},{"body":{"nodeType":"YulBlock","src":"35961:260:25","statements":[{"nodeType":"YulVariableDeclaration","src":"35971:52:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36017:5:25"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"35985:31:25"},"nodeType":"YulFunctionCall","src":"35985:38:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"35975:6:25","type":""}]},{"nodeType":"YulAssignment","src":"36032:67:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36087:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"36092:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"36039:47:25"},"nodeType":"YulFunctionCall","src":"36039:60:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"36032:3:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36134:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"36141:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36130:3:25"},"nodeType":"YulFunctionCall","src":"36130:16:25"},{"name":"pos","nodeType":"YulIdentifier","src":"36148:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"36153:6:25"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"36108:21:25"},"nodeType":"YulFunctionCall","src":"36108:52:25"},"nodeType":"YulExpressionStatement","src":"36108:52:25"},{"nodeType":"YulAssignment","src":"36169:46:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36180:3:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"36207:6:25"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"36185:21:25"},"nodeType":"YulFunctionCall","src":"36185:29:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36176:3:25"},"nodeType":"YulFunctionCall","src":"36176:39:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"36169:3:25"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"35942:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"35949:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"35957:3:25","type":""}],"src":"35881:340:25"},{"body":{"nodeType":"YulBlock","src":"36417:1575:25","statements":[{"nodeType":"YulVariableDeclaration","src":"36427:28:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36443:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"36448:6:25","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36439:3:25"},"nodeType":"YulFunctionCall","src":"36439:16:25"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"36431:4:25","type":""}]},{"nodeType":"YulBlock","src":"36465:168:25","statements":[{"nodeType":"YulVariableDeclaration","src":"36504:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36534:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"36541:4:25","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36530:3:25"},"nodeType":"YulFunctionCall","src":"36530:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"36524:5:25"},"nodeType":"YulFunctionCall","src":"36524:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"36508:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"36594:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36612:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"36617:4:25","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36608:3:25"},"nodeType":"YulFunctionCall","src":"36608:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"36560:33:25"},"nodeType":"YulFunctionCall","src":"36560:63:25"},"nodeType":"YulExpressionStatement","src":"36560:63:25"}]},{"nodeType":"YulBlock","src":"36643:171:25","statements":[{"nodeType":"YulVariableDeclaration","src":"36685:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36715:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"36722:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36711:3:25"},"nodeType":"YulFunctionCall","src":"36711:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"36705:5:25"},"nodeType":"YulFunctionCall","src":"36705:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"36689:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"36775:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36793:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"36798:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36789:3:25"},"nodeType":"YulFunctionCall","src":"36789:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"36741:33:25"},"nodeType":"YulFunctionCall","src":"36741:63:25"},"nodeType":"YulExpressionStatement","src":"36741:63:25"}]},{"nodeType":"YulBlock","src":"36824:172:25","statements":[{"nodeType":"YulVariableDeclaration","src":"36867:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"36897:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"36904:4:25","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36893:3:25"},"nodeType":"YulFunctionCall","src":"36893:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"36887:5:25"},"nodeType":"YulFunctionCall","src":"36887:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"36871:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"36957:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"36975:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"36980:4:25","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"36971:3:25"},"nodeType":"YulFunctionCall","src":"36971:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"36923:33:25"},"nodeType":"YulFunctionCall","src":"36923:63:25"},"nodeType":"YulExpressionStatement","src":"36923:63:25"}]},{"nodeType":"YulBlock","src":"37006:171:25","statements":[{"nodeType":"YulVariableDeclaration","src":"37048:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37078:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"37085:4:25","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37074:3:25"},"nodeType":"YulFunctionCall","src":"37074:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"37068:5:25"},"nodeType":"YulFunctionCall","src":"37068:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"37052:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"37138:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"37156:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"37161:4:25","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37152:3:25"},"nodeType":"YulFunctionCall","src":"37152:14:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"37104:33:25"},"nodeType":"YulFunctionCall","src":"37104:63:25"},"nodeType":"YulExpressionStatement","src":"37104:63:25"}]},{"nodeType":"YulBlock","src":"37187:169:25","statements":[{"nodeType":"YulVariableDeclaration","src":"37227:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37257:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"37264:4:25","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37253:3:25"},"nodeType":"YulFunctionCall","src":"37253:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"37247:5:25"},"nodeType":"YulFunctionCall","src":"37247:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"37231:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"37317:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"37335:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"37340:4:25","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37331:3:25"},"nodeType":"YulFunctionCall","src":"37331:14:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"37283:33:25"},"nodeType":"YulFunctionCall","src":"37283:63:25"},"nodeType":"YulExpressionStatement","src":"37283:63:25"}]},{"nodeType":"YulBlock","src":"37366:169:25","statements":[{"nodeType":"YulVariableDeclaration","src":"37406:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37436:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"37443:4:25","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37432:3:25"},"nodeType":"YulFunctionCall","src":"37432:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"37426:5:25"},"nodeType":"YulFunctionCall","src":"37426:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"37410:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"37496:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"37514:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"37519:4:25","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37510:3:25"},"nodeType":"YulFunctionCall","src":"37510:14:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"37462:33:25"},"nodeType":"YulFunctionCall","src":"37462:63:25"},"nodeType":"YulExpressionStatement","src":"37462:63:25"}]},{"nodeType":"YulBlock","src":"37545:242:25","statements":[{"nodeType":"YulVariableDeclaration","src":"37589:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37619:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"37626:4:25","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37615:3:25"},"nodeType":"YulFunctionCall","src":"37615:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"37609:5:25"},"nodeType":"YulFunctionCall","src":"37609:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"37593:12:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"37657:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"37662:4:25","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37653:3:25"},"nodeType":"YulFunctionCall","src":"37653:14:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"37673:4:25"},{"name":"pos","nodeType":"YulIdentifier","src":"37679:3:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"37669:3:25"},"nodeType":"YulFunctionCall","src":"37669:14:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"37646:6:25"},"nodeType":"YulFunctionCall","src":"37646:38:25"},"nodeType":"YulExpressionStatement","src":"37646:38:25"},{"nodeType":"YulAssignment","src":"37697:79:25","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"37757:12:25"},{"name":"tail","nodeType":"YulIdentifier","src":"37771:4:25"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"37705:51:25"},"nodeType":"YulFunctionCall","src":"37705:71:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"37697:4:25"}]}]},{"nodeType":"YulBlock","src":"37797:168:25","statements":[{"nodeType":"YulVariableDeclaration","src":"37836:43:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"37866:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"37873:4:25","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37862:3:25"},"nodeType":"YulFunctionCall","src":"37862:16:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"37856:5:25"},"nodeType":"YulFunctionCall","src":"37856:23:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"37840:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"37926:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"37944:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"37949:4:25","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"37940:3:25"},"nodeType":"YulFunctionCall","src":"37940:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"37892:33:25"},"nodeType":"YulFunctionCall","src":"37892:63:25"},"nodeType":"YulExpressionStatement","src":"37892:63:25"}]},{"nodeType":"YulAssignment","src":"37975:11:25","value":{"name":"tail","nodeType":"YulIdentifier","src":"37982:4:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"37975:3:25"}]}]},"name":"abi_encode_t_struct$_RelayData_$1326_memory_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"36396:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"36403:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"36412:3:25","type":""}],"src":"36289:1703:25"},{"body":{"nodeType":"YulBlock","src":"38178:311:25","statements":[{"nodeType":"YulAssignment","src":"38188:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"38200:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"38211:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38196:3:25"},"nodeType":"YulFunctionCall","src":"38196:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"38188:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"38268:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"38281:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"38292:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38277:3:25"},"nodeType":"YulFunctionCall","src":"38277:17:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"38224:43:25"},"nodeType":"YulFunctionCall","src":"38224:71:25"},"nodeType":"YulExpressionStatement","src":"38224:71:25"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"38316:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"38327:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38312:3:25"},"nodeType":"YulFunctionCall","src":"38312:18:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"38336:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"38342:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"38332:3:25"},"nodeType":"YulFunctionCall","src":"38332:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"38305:6:25"},"nodeType":"YulFunctionCall","src":"38305:48:25"},"nodeType":"YulExpressionStatement","src":"38305:48:25"},{"nodeType":"YulAssignment","src":"38362:120:25","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"38468:6:25"},{"name":"tail","nodeType":"YulIdentifier","src":"38477:4:25"}],"functionName":{"name":"abi_encode_t_struct$_RelayData_$1326_memory_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"38370:97:25"},"nodeType":"YulFunctionCall","src":"38370:112:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"38362:4:25"}]}]},"name":"abi_encode_tuple_t_uint256_t_struct$_RelayData_$1326_memory_ptr__to_t_uint256_t_struct$_RelayData_$1326_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"38142:9:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"38154:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"38162:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"38173:4:25","type":""}],"src":"37998:491:25"},{"body":{"nodeType":"YulBlock","src":"38601:68:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"38623:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"38631:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"38619:3:25"},"nodeType":"YulFunctionCall","src":"38619:14:25"},{"hexValue":"4e6f7420656e6f75676820746f2070617920666f72207478","kind":"string","nodeType":"YulLiteral","src":"38635:26:25","type":"","value":"Not enough to pay for tx"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"38612:6:25"},"nodeType":"YulFunctionCall","src":"38612:50:25"},"nodeType":"YulExpressionStatement","src":"38612:50:25"}]},"name":"store_literal_in_memory_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"38593:6:25","type":""}],"src":"38495:174:25"},{"body":{"nodeType":"YulBlock","src":"38821:220:25","statements":[{"nodeType":"YulAssignment","src":"38831:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"38897:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"38902:2:25","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"38838:58:25"},"nodeType":"YulFunctionCall","src":"38838:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"38831:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"39003:3:25"}],"functionName":{"name":"store_literal_in_memory_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e","nodeType":"YulIdentifier","src":"38914:88:25"},"nodeType":"YulFunctionCall","src":"38914:93:25"},"nodeType":"YulExpressionStatement","src":"38914:93:25"},{"nodeType":"YulAssignment","src":"39016:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"39027:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"39032:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39023:3:25"},"nodeType":"YulFunctionCall","src":"39023:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"39016:3:25"}]}]},"name":"abi_encode_t_stringliteral_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"38809:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"38817:3:25","type":""}],"src":"38675:366:25"},{"body":{"nodeType":"YulBlock","src":"39218:248:25","statements":[{"nodeType":"YulAssignment","src":"39228:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"39240:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"39251:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39236:3:25"},"nodeType":"YulFunctionCall","src":"39236:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"39228:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"39275:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"39286:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39271:3:25"},"nodeType":"YulFunctionCall","src":"39271:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"39294:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"39300:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"39290:3:25"},"nodeType":"YulFunctionCall","src":"39290:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"39264:6:25"},"nodeType":"YulFunctionCall","src":"39264:47:25"},"nodeType":"YulExpressionStatement","src":"39264:47:25"},{"nodeType":"YulAssignment","src":"39320:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"39454:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"39328:124:25"},"nodeType":"YulFunctionCall","src":"39328:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"39320:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"39198:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"39213:4:25","type":""}],"src":"39047:419:25"},{"body":{"nodeType":"YulBlock","src":"39578:58:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"39600:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"39608:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39596:3:25"},"nodeType":"YulFunctionCall","src":"39596:14:25"},{"hexValue":"4e6f7420656e6f75676820676173","kind":"string","nodeType":"YulLiteral","src":"39612:16:25","type":"","value":"Not enough gas"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"39589:6:25"},"nodeType":"YulFunctionCall","src":"39589:40:25"},"nodeType":"YulExpressionStatement","src":"39589:40:25"}]},"name":"store_literal_in_memory_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"39570:6:25","type":""}],"src":"39472:164:25"},{"body":{"nodeType":"YulBlock","src":"39788:220:25","statements":[{"nodeType":"YulAssignment","src":"39798:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"39864:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"39869:2:25","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"39805:58:25"},"nodeType":"YulFunctionCall","src":"39805:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"39798:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"39970:3:25"}],"functionName":{"name":"store_literal_in_memory_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665","nodeType":"YulIdentifier","src":"39881:88:25"},"nodeType":"YulFunctionCall","src":"39881:93:25"},"nodeType":"YulExpressionStatement","src":"39881:93:25"},{"nodeType":"YulAssignment","src":"39983:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"39994:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"39999:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"39990:3:25"},"nodeType":"YulFunctionCall","src":"39990:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"39983:3:25"}]}]},"name":"abi_encode_t_stringliteral_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"39776:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"39784:3:25","type":""}],"src":"39642:366:25"},{"body":{"nodeType":"YulBlock","src":"40185:248:25","statements":[{"nodeType":"YulAssignment","src":"40195:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"40207:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"40218:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40203:3:25"},"nodeType":"YulFunctionCall","src":"40203:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"40195:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"40242:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"40253:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40238:3:25"},"nodeType":"YulFunctionCall","src":"40238:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"40261:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"40267:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"40257:3:25"},"nodeType":"YulFunctionCall","src":"40257:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"40231:6:25"},"nodeType":"YulFunctionCall","src":"40231:47:25"},"nodeType":"YulExpressionStatement","src":"40231:47:25"},{"nodeType":"YulAssignment","src":"40287:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"40421:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"40295:124:25"},"nodeType":"YulFunctionCall","src":"40295:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"40287:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"40165:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"40180:4:25","type":""}],"src":"40014:419:25"},{"body":{"nodeType":"YulBlock","src":"40593:288:25","statements":[{"nodeType":"YulAssignment","src":"40603:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"40615:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"40626:2:25","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40611:3:25"},"nodeType":"YulFunctionCall","src":"40611:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"40603:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"40683:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"40696:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"40707:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40692:3:25"},"nodeType":"YulFunctionCall","src":"40692:17:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"40639:43:25"},"nodeType":"YulFunctionCall","src":"40639:71:25"},"nodeType":"YulExpressionStatement","src":"40639:71:25"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"40764:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"40777:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"40788:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40773:3:25"},"nodeType":"YulFunctionCall","src":"40773:18:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"40720:43:25"},"nodeType":"YulFunctionCall","src":"40720:72:25"},"nodeType":"YulExpressionStatement","src":"40720:72:25"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"40846:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"40859:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"40870:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"40855:3:25"},"nodeType":"YulFunctionCall","src":"40855:18:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"40802:43:25"},"nodeType":"YulFunctionCall","src":"40802:72:25"},"nodeType":"YulExpressionStatement","src":"40802:72:25"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"40549:9:25","type":""},{"name":"value2","nodeType":"YulTypedName","src":"40561:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"40569:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"40577:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"40588:4:25","type":""}],"src":"40439:442:25"},{"body":{"nodeType":"YulBlock","src":"40993:62:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"41015:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"41023:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41011:3:25"},"nodeType":"YulFunctionCall","src":"41011:14:25"},{"hexValue":"546f6b656e20616464726573732069732030","kind":"string","nodeType":"YulLiteral","src":"41027:20:25","type":"","value":"Token address is 0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"41004:6:25"},"nodeType":"YulFunctionCall","src":"41004:44:25"},"nodeType":"YulExpressionStatement","src":"41004:44:25"}]},"name":"store_literal_in_memory_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"40985:6:25","type":""}],"src":"40887:168:25"},{"body":{"nodeType":"YulBlock","src":"41207:220:25","statements":[{"nodeType":"YulAssignment","src":"41217:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"41283:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"41288:2:25","type":"","value":"18"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"41224:58:25"},"nodeType":"YulFunctionCall","src":"41224:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"41217:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"41389:3:25"}],"functionName":{"name":"store_literal_in_memory_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08","nodeType":"YulIdentifier","src":"41300:88:25"},"nodeType":"YulFunctionCall","src":"41300:93:25"},"nodeType":"YulExpressionStatement","src":"41300:93:25"},{"nodeType":"YulAssignment","src":"41402:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"41413:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"41418:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41409:3:25"},"nodeType":"YulFunctionCall","src":"41409:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"41402:3:25"}]}]},"name":"abi_encode_t_stringliteral_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"41195:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"41203:3:25","type":""}],"src":"41061:366:25"},{"body":{"nodeType":"YulBlock","src":"41604:248:25","statements":[{"nodeType":"YulAssignment","src":"41614:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"41626:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"41637:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41622:3:25"},"nodeType":"YulFunctionCall","src":"41622:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"41614:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"41661:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"41672:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"41657:3:25"},"nodeType":"YulFunctionCall","src":"41657:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"41680:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"41686:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"41676:3:25"},"nodeType":"YulFunctionCall","src":"41676:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"41650:6:25"},"nodeType":"YulFunctionCall","src":"41650:47:25"},"nodeType":"YulExpressionStatement","src":"41650:47:25"},{"nodeType":"YulAssignment","src":"41706:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"41840:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"41714:124:25"},"nodeType":"YulFunctionCall","src":"41714:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"41706:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"41584:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"41599:4:25","type":""}],"src":"41433:419:25"},{"body":{"nodeType":"YulBlock","src":"41939:61:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"41956:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"41987:5:25"}],"functionName":{"name":"cleanup_t_address_payable","nodeType":"YulIdentifier","src":"41961:25:25"},"nodeType":"YulFunctionCall","src":"41961:32:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"41949:6:25"},"nodeType":"YulFunctionCall","src":"41949:45:25"},"nodeType":"YulExpressionStatement","src":"41949:45:25"}]},"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"41927:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"41934:3:25","type":""}],"src":"41858:142:25"},{"body":{"nodeType":"YulBlock","src":"42148:222:25","statements":[{"nodeType":"YulAssignment","src":"42158:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42170:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"42181:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42166:3:25"},"nodeType":"YulFunctionCall","src":"42166:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"42158:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"42238:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42251:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"42262:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42247:3:25"},"nodeType":"YulFunctionCall","src":"42247:17:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"42194:43:25"},"nodeType":"YulFunctionCall","src":"42194:71:25"},"nodeType":"YulExpressionStatement","src":"42194:71:25"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"42335:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"42348:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"42359:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42344:3:25"},"nodeType":"YulFunctionCall","src":"42344:18:25"}],"functionName":{"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nodeType":"YulIdentifier","src":"42275:59:25"},"nodeType":"YulFunctionCall","src":"42275:88:25"},"nodeType":"YulExpressionStatement","src":"42275:88:25"}]},"name":"abi_encode_tuple_t_uint256_t_address_payable__to_t_uint256_t_address_payable__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"42112:9:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"42124:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"42132:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"42143:4:25","type":""}],"src":"42006:364:25"},{"body":{"nodeType":"YulBlock","src":"42482:63:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"42504:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"42512:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42500:3:25"},"nodeType":"YulFunctionCall","src":"42500:14:25"},{"hexValue":"57726f6e67205061796d656e7420546f6b656e","kind":"string","nodeType":"YulLiteral","src":"42516:21:25","type":"","value":"Wrong Payment Token"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"42493:6:25"},"nodeType":"YulFunctionCall","src":"42493:45:25"},"nodeType":"YulExpressionStatement","src":"42493:45:25"}]},"name":"store_literal_in_memory_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"42474:6:25","type":""}],"src":"42376:169:25"},{"body":{"nodeType":"YulBlock","src":"42697:220:25","statements":[{"nodeType":"YulAssignment","src":"42707:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42773:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"42778:2:25","type":"","value":"19"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"42714:58:25"},"nodeType":"YulFunctionCall","src":"42714:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"42707:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42879:3:25"}],"functionName":{"name":"store_literal_in_memory_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a","nodeType":"YulIdentifier","src":"42790:88:25"},"nodeType":"YulFunctionCall","src":"42790:93:25"},"nodeType":"YulExpressionStatement","src":"42790:93:25"},{"nodeType":"YulAssignment","src":"42892:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"42903:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"42908:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"42899:3:25"},"nodeType":"YulFunctionCall","src":"42899:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"42892:3:25"}]}]},"name":"abi_encode_t_stringliteral_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"42685:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"42693:3:25","type":""}],"src":"42551:366:25"},{"body":{"nodeType":"YulBlock","src":"43094:248:25","statements":[{"nodeType":"YulAssignment","src":"43104:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"43116:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"43127:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43112:3:25"},"nodeType":"YulFunctionCall","src":"43112:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"43104:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"43151:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"43162:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43147:3:25"},"nodeType":"YulFunctionCall","src":"43147:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"43170:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"43176:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"43166:3:25"},"nodeType":"YulFunctionCall","src":"43166:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43140:6:25"},"nodeType":"YulFunctionCall","src":"43140:47:25"},"nodeType":"YulExpressionStatement","src":"43140:47:25"},{"nodeType":"YulAssignment","src":"43196:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"43330:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"43204:124:25"},"nodeType":"YulFunctionCall","src":"43204:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"43196:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"43074:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"43089:4:25","type":""}],"src":"42923:419:25"},{"body":{"nodeType":"YulBlock","src":"43422:40:25","statements":[{"nodeType":"YulAssignment","src":"43433:22:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"43449:5:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"43443:5:25"},"nodeType":"YulFunctionCall","src":"43443:12:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"43433:6:25"}]}]},"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"43405:5:25","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"43415:6:25","type":""}],"src":"43348:114:25"},{"body":{"nodeType":"YulBlock","src":"43579:73:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43596:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"43601:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"43589:6:25"},"nodeType":"YulFunctionCall","src":"43589:19:25"},"nodeType":"YulExpressionStatement","src":"43589:19:25"},{"nodeType":"YulAssignment","src":"43617:29:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43636:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"43641:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43632:3:25"},"nodeType":"YulFunctionCall","src":"43632:14:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"43617:11:25"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"43551:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"43556:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"43567:11:25","type":""}],"src":"43468:184:25"},{"body":{"nodeType":"YulBlock","src":"43730:60:25","statements":[{"nodeType":"YulAssignment","src":"43740:11:25","value":{"name":"ptr","nodeType":"YulIdentifier","src":"43748:3:25"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"43740:4:25"}]},{"nodeType":"YulAssignment","src":"43761:22:25","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"43773:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"43778:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43769:3:25"},"nodeType":"YulFunctionCall","src":"43769:14:25"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"43761:4:25"}]}]},"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"43717:3:25","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"43725:4:25","type":""}],"src":"43658:132:25"},{"body":{"nodeType":"YulBlock","src":"43876:99:25","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"43920:6:25"},{"name":"pos","nodeType":"YulIdentifier","src":"43928:3:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"43886:33:25"},"nodeType":"YulFunctionCall","src":"43886:46:25"},"nodeType":"YulExpressionStatement","src":"43886:46:25"},{"nodeType":"YulAssignment","src":"43941:28:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"43959:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"43964:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"43955:3:25"},"nodeType":"YulFunctionCall","src":"43955:14:25"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"43941:10:25"}]}]},"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"43849:6:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"43857:3:25","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"43865:10:25","type":""}],"src":"43796:179:25"},{"body":{"nodeType":"YulBlock","src":"44056:38:25","statements":[{"nodeType":"YulAssignment","src":"44066:22:25","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"44078:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"44083:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44074:3:25"},"nodeType":"YulFunctionCall","src":"44074:14:25"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"44066:4:25"}]}]},"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"44043:3:25","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"44051:4:25","type":""}],"src":"43981:113:25"},{"body":{"nodeType":"YulBlock","src":"44254:608:25","statements":[{"nodeType":"YulVariableDeclaration","src":"44264:68:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"44326:5:25"}],"functionName":{"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"44278:47:25"},"nodeType":"YulFunctionCall","src":"44278:54:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"44268:6:25","type":""}]},{"nodeType":"YulAssignment","src":"44341:93:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"44422:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"44427:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"44348:73:25"},"nodeType":"YulFunctionCall","src":"44348:86:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"44341:3:25"}]},{"nodeType":"YulVariableDeclaration","src":"44443:71:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"44508:5:25"}],"functionName":{"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"44458:49:25"},"nodeType":"YulFunctionCall","src":"44458:56:25"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"44447:7:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"44523:21:25","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"44537:7:25"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"44527:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"44613:224:25","statements":[{"nodeType":"YulVariableDeclaration","src":"44627:34:25","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"44654:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"44648:5:25"},"nodeType":"YulFunctionCall","src":"44648:13:25"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"44631:13:25","type":""}]},{"nodeType":"YulAssignment","src":"44674:70:25","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"44725:13:25"},{"name":"pos","nodeType":"YulIdentifier","src":"44740:3:25"}],"functionName":{"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulIdentifier","src":"44681:43:25"},"nodeType":"YulFunctionCall","src":"44681:63:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"44674:3:25"}]},{"nodeType":"YulAssignment","src":"44757:70:25","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"44820:6:25"}],"functionName":{"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"44767:52:25"},"nodeType":"YulFunctionCall","src":"44767:60:25"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"44757:6:25"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"44575:1:25"},{"name":"length","nodeType":"YulIdentifier","src":"44578:6:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"44572:2:25"},"nodeType":"YulFunctionCall","src":"44572:13:25"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"44586:18:25","statements":[{"nodeType":"YulAssignment","src":"44588:14:25","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"44597:1:25"},{"kind":"number","nodeType":"YulLiteral","src":"44600:1:25","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"44593:3:25"},"nodeType":"YulFunctionCall","src":"44593:9:25"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"44588:1:25"}]}]},"pre":{"nodeType":"YulBlock","src":"44557:14:25","statements":[{"nodeType":"YulVariableDeclaration","src":"44559:10:25","value":{"kind":"number","nodeType":"YulLiteral","src":"44568:1:25","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"44563:1:25","type":""}]}]},"src":"44553:284:25"},{"nodeType":"YulAssignment","src":"44846:10:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"44853:3:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"44846:3:25"}]}]},"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"44233:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"44240:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"44249:3:25","type":""}],"src":"44130:732:25"},{"body":{"nodeType":"YulBlock","src":"45044:307:25","statements":[{"nodeType":"YulAssignment","src":"45054:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45066:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"45077:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45062:3:25"},"nodeType":"YulFunctionCall","src":"45062:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45054:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"45134:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45147:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"45158:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45143:3:25"},"nodeType":"YulFunctionCall","src":"45143:17:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"45090:43:25"},"nodeType":"YulFunctionCall","src":"45090:71:25"},"nodeType":"YulExpressionStatement","src":"45090:71:25"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"45182:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"45193:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45178:3:25"},"nodeType":"YulFunctionCall","src":"45178:18:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"45202:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"45208:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"45198:3:25"},"nodeType":"YulFunctionCall","src":"45198:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45171:6:25"},"nodeType":"YulFunctionCall","src":"45171:48:25"},"nodeType":"YulExpressionStatement","src":"45171:48:25"},{"nodeType":"YulAssignment","src":"45228:116:25","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"45330:6:25"},{"name":"tail","nodeType":"YulIdentifier","src":"45339:4:25"}],"functionName":{"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"45236:93:25"},"nodeType":"YulFunctionCall","src":"45236:108:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"45228:4:25"}]}]},"name":"abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_memory_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"45008:9:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"45020:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"45028:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"45039:4:25","type":""}],"src":"44868:483:25"},{"body":{"nodeType":"YulBlock","src":"45439:229:25","statements":[{"body":{"nodeType":"YulBlock","src":"45544:22:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"45546:16:25"},"nodeType":"YulFunctionCall","src":"45546:18:25"},"nodeType":"YulExpressionStatement","src":"45546:18:25"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"45516:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"45524:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"45513:2:25"},"nodeType":"YulFunctionCall","src":"45513:30:25"},"nodeType":"YulIf","src":"45510:56:25"},{"nodeType":"YulAssignment","src":"45576:25:25","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"45588:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"45596:4:25","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"45584:3:25"},"nodeType":"YulFunctionCall","src":"45584:17:25"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"45576:4:25"}]},{"nodeType":"YulAssignment","src":"45638:23:25","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"45650:4:25"},{"kind":"number","nodeType":"YulLiteral","src":"45656:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45646:3:25"},"nodeType":"YulFunctionCall","src":"45646:15:25"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"45638:4:25"}]}]},"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"45423:6:25","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"45434:4:25","type":""}],"src":"45357:311:25"},{"body":{"nodeType":"YulBlock","src":"45804:619:25","statements":[{"nodeType":"YulAssignment","src":"45814:90:25","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"45896:6:25"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"45839:56:25"},"nodeType":"YulFunctionCall","src":"45839:64:25"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"45823:15:25"},"nodeType":"YulFunctionCall","src":"45823:81:25"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"45814:5:25"}]},{"nodeType":"YulVariableDeclaration","src":"45913:16:25","value":{"name":"array","nodeType":"YulIdentifier","src":"45924:5:25"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"45917:3:25","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"45946:5:25"},{"name":"length","nodeType":"YulIdentifier","src":"45953:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"45939:6:25"},"nodeType":"YulFunctionCall","src":"45939:21:25"},"nodeType":"YulExpressionStatement","src":"45939:21:25"},{"nodeType":"YulAssignment","src":"45969:23:25","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"45980:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"45987:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"45976:3:25"},"nodeType":"YulFunctionCall","src":"45976:16:25"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"45969:3:25"}]},{"nodeType":"YulVariableDeclaration","src":"46002:44:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"46020:6:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"46032:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"46040:4:25","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"46028:3:25"},"nodeType":"YulFunctionCall","src":"46028:17:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46016:3:25"},"nodeType":"YulFunctionCall","src":"46016:30:25"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"46006:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"46074:103:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"46088:77:25"},"nodeType":"YulFunctionCall","src":"46088:79:25"},"nodeType":"YulExpressionStatement","src":"46088:79:25"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"46061:6:25"},{"name":"end","nodeType":"YulIdentifier","src":"46069:3:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"46058:2:25"},"nodeType":"YulFunctionCall","src":"46058:15:25"},"nodeType":"YulIf","src":"46055:122:25"},{"body":{"nodeType":"YulBlock","src":"46262:155:25","statements":[{"nodeType":"YulVariableDeclaration","src":"46277:21:25","value":{"name":"src","nodeType":"YulIdentifier","src":"46295:3:25"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"46281:10:25","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"46319:3:25"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"46356:10:25"},{"name":"end","nodeType":"YulIdentifier","src":"46368:3:25"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"46324:31:25"},"nodeType":"YulFunctionCall","src":"46324:48:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"46312:6:25"},"nodeType":"YulFunctionCall","src":"46312:61:25"},"nodeType":"YulExpressionStatement","src":"46312:61:25"},{"nodeType":"YulAssignment","src":"46386:21:25","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"46397:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"46402:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46393:3:25"},"nodeType":"YulFunctionCall","src":"46393:14:25"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"46386:3:25"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"46215:3:25"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"46220:6:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"46212:2:25"},"nodeType":"YulFunctionCall","src":"46212:15:25"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"46228:25:25","statements":[{"nodeType":"YulAssignment","src":"46230:21:25","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"46241:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"46246:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46237:3:25"},"nodeType":"YulFunctionCall","src":"46237:14:25"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"46230:3:25"}]}]},"pre":{"nodeType":"YulBlock","src":"46190:21:25","statements":[{"nodeType":"YulVariableDeclaration","src":"46192:17:25","value":{"name":"offset","nodeType":"YulIdentifier","src":"46203:6:25"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"46196:3:25","type":""}]}]},"src":"46186:231:25"}]},"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"45774:6:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"45782:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"45790:3:25","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"45798:5:25","type":""}],"src":"45691:732:25"},{"body":{"nodeType":"YulBlock","src":"46534:297:25","statements":[{"body":{"nodeType":"YulBlock","src":"46583:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"46585:77:25"},"nodeType":"YulFunctionCall","src":"46585:79:25"},"nodeType":"YulExpressionStatement","src":"46585:79:25"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"46562:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"46570:4:25","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46558:3:25"},"nodeType":"YulFunctionCall","src":"46558:17:25"},{"name":"end","nodeType":"YulIdentifier","src":"46577:3:25"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"46554:3:25"},"nodeType":"YulFunctionCall","src":"46554:27:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"46547:6:25"},"nodeType":"YulFunctionCall","src":"46547:35:25"},"nodeType":"YulIf","src":"46544:122:25"},{"nodeType":"YulVariableDeclaration","src":"46675:27:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"46695:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"46689:5:25"},"nodeType":"YulFunctionCall","src":"46689:13:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"46679:6:25","type":""}]},{"nodeType":"YulAssignment","src":"46711:114:25","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"46798:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"46806:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"46794:3:25"},"nodeType":"YulFunctionCall","src":"46794:17:25"},{"name":"length","nodeType":"YulIdentifier","src":"46813:6:25"},{"name":"end","nodeType":"YulIdentifier","src":"46821:3:25"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"46720:73:25"},"nodeType":"YulFunctionCall","src":"46720:105:25"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"46711:5:25"}]}]},"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"46512:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"46520:3:25","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"46528:5:25","type":""}],"src":"46446:385:25"},{"body":{"nodeType":"YulBlock","src":"46939:452:25","statements":[{"body":{"nodeType":"YulBlock","src":"46985:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"46987:77:25"},"nodeType":"YulFunctionCall","src":"46987:79:25"},"nodeType":"YulExpressionStatement","src":"46987:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"46960:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"46969:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"46956:3:25"},"nodeType":"YulFunctionCall","src":"46956:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"46981:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"46952:3:25"},"nodeType":"YulFunctionCall","src":"46952:32:25"},"nodeType":"YulIf","src":"46949:119:25"},{"nodeType":"YulBlock","src":"47078:306:25","statements":[{"nodeType":"YulVariableDeclaration","src":"47093:38:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47117:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"47128:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47113:3:25"},"nodeType":"YulFunctionCall","src":"47113:17:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"47107:5:25"},"nodeType":"YulFunctionCall","src":"47107:24:25"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"47097:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"47178:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"47180:77:25"},"nodeType":"YulFunctionCall","src":"47180:79:25"},"nodeType":"YulExpressionStatement","src":"47180:79:25"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"47150:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"47158:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"47147:2:25"},"nodeType":"YulFunctionCall","src":"47147:30:25"},"nodeType":"YulIf","src":"47144:117:25"},{"nodeType":"YulAssignment","src":"47275:99:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"47346:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"47357:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47342:3:25"},"nodeType":"YulFunctionCall","src":"47342:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"47366:7:25"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"47285:56:25"},"nodeType":"YulFunctionCall","src":"47285:89:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"47275:6:25"}]}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"46909:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"46920:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"46932:6:25","type":""}],"src":"46837:554:25"},{"body":{"nodeType":"YulBlock","src":"47425:152:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"47442:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"47445:77:25","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47435:6:25"},"nodeType":"YulFunctionCall","src":"47435:88:25"},"nodeType":"YulExpressionStatement","src":"47435:88:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"47539:1:25","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"47542:4:25","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47532:6:25"},"nodeType":"YulFunctionCall","src":"47532:15:25"},"nodeType":"YulExpressionStatement","src":"47532:15:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"47563:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"47566:4:25","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"47556:6:25"},"nodeType":"YulFunctionCall","src":"47556:15:25"},"nodeType":"YulExpressionStatement","src":"47556:15:25"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"47397:180:25"},{"body":{"nodeType":"YulBlock","src":"47689:74:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"47711:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"47719:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"47707:3:25"},"nodeType":"YulFunctionCall","src":"47707:14:25"},{"hexValue":"63616e206f6e6c792062652063616c6c65642062792052656c6179487562","kind":"string","nodeType":"YulLiteral","src":"47723:32:25","type":"","value":"can only be called by RelayHub"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"47700:6:25"},"nodeType":"YulFunctionCall","src":"47700:56:25"},"nodeType":"YulExpressionStatement","src":"47700:56:25"}]},"name":"store_literal_in_memory_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"47681:6:25","type":""}],"src":"47583:180:25"},{"body":{"nodeType":"YulBlock","src":"47915:220:25","statements":[{"nodeType":"YulAssignment","src":"47925:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"47991:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"47996:2:25","type":"","value":"30"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"47932:58:25"},"nodeType":"YulFunctionCall","src":"47932:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"47925:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48097:3:25"}],"functionName":{"name":"store_literal_in_memory_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb","nodeType":"YulIdentifier","src":"48008:88:25"},"nodeType":"YulFunctionCall","src":"48008:93:25"},"nodeType":"YulExpressionStatement","src":"48008:93:25"},{"nodeType":"YulAssignment","src":"48110:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48121:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"48126:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48117:3:25"},"nodeType":"YulFunctionCall","src":"48117:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"48110:3:25"}]}]},"name":"abi_encode_t_stringliteral_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"47903:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"47911:3:25","type":""}],"src":"47769:366:25"},{"body":{"nodeType":"YulBlock","src":"48312:248:25","statements":[{"nodeType":"YulAssignment","src":"48322:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"48334:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"48345:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48330:3:25"},"nodeType":"YulFunctionCall","src":"48330:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"48322:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"48369:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"48380:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48365:3:25"},"nodeType":"YulFunctionCall","src":"48365:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"48388:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"48394:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"48384:3:25"},"nodeType":"YulFunctionCall","src":"48384:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48358:6:25"},"nodeType":"YulFunctionCall","src":"48358:47:25"},"nodeType":"YulExpressionStatement","src":"48358:47:25"},{"nodeType":"YulAssignment","src":"48414:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"48548:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"48422:124:25"},"nodeType":"YulFunctionCall","src":"48422:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"48414:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"48292:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"48307:4:25","type":""}],"src":"48141:419:25"},{"body":{"nodeType":"YulBlock","src":"48672:54:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"48694:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"48702:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"48690:3:25"},"nodeType":"YulFunctionCall","src":"48690:14:25"},{"hexValue":"4e6f2073756363657373","kind":"string","nodeType":"YulLiteral","src":"48706:12:25","type":"","value":"No success"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"48683:6:25"},"nodeType":"YulFunctionCall","src":"48683:36:25"},"nodeType":"YulExpressionStatement","src":"48683:36:25"}]},"name":"store_literal_in_memory_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"48664:6:25","type":""}],"src":"48566:160:25"},{"body":{"nodeType":"YulBlock","src":"48878:220:25","statements":[{"nodeType":"YulAssignment","src":"48888:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"48954:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"48959:2:25","type":"","value":"10"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"48895:58:25"},"nodeType":"YulFunctionCall","src":"48895:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"48888:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49060:3:25"}],"functionName":{"name":"store_literal_in_memory_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23","nodeType":"YulIdentifier","src":"48971:88:25"},"nodeType":"YulFunctionCall","src":"48971:93:25"},"nodeType":"YulExpressionStatement","src":"48971:93:25"},{"nodeType":"YulAssignment","src":"49073:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"49084:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"49089:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49080:3:25"},"nodeType":"YulFunctionCall","src":"49080:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"49073:3:25"}]}]},"name":"abi_encode_t_stringliteral_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"48866:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"48874:3:25","type":""}],"src":"48732:366:25"},{"body":{"nodeType":"YulBlock","src":"49275:248:25","statements":[{"nodeType":"YulAssignment","src":"49285:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49297:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"49308:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49293:3:25"},"nodeType":"YulFunctionCall","src":"49293:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49285:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49332:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"49343:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49328:3:25"},"nodeType":"YulFunctionCall","src":"49328:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"49351:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"49357:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"49347:3:25"},"nodeType":"YulFunctionCall","src":"49347:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"49321:6:25"},"nodeType":"YulFunctionCall","src":"49321:47:25"},"nodeType":"YulExpressionStatement","src":"49321:47:25"},{"nodeType":"YulAssignment","src":"49377:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"49511:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"49385:124:25"},"nodeType":"YulFunctionCall","src":"49385:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"49377:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49255:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"49270:4:25","type":""}],"src":"49104:419:25"},{"body":{"nodeType":"YulBlock","src":"49637:527:25","statements":[{"body":{"nodeType":"YulBlock","src":"49683:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"49685:77:25"},"nodeType":"YulFunctionCall","src":"49685:79:25"},"nodeType":"YulExpressionStatement","src":"49685:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"49658:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"49667:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"49654:3:25"},"nodeType":"YulFunctionCall","src":"49654:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"49679:2:25","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"49650:3:25"},"nodeType":"YulFunctionCall","src":"49650:32:25"},"nodeType":"YulIf","src":"49647:119:25"},{"nodeType":"YulBlock","src":"49776:125:25","statements":[{"nodeType":"YulVariableDeclaration","src":"49791:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"49805:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"49795:6:25","type":""}]},{"nodeType":"YulAssignment","src":"49820:71:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49863:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"49874:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49859:3:25"},"nodeType":"YulFunctionCall","src":"49859:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"49883:7:25"}],"functionName":{"name":"abi_decode_t_address_payable","nodeType":"YulIdentifier","src":"49830:28:25"},"nodeType":"YulFunctionCall","src":"49830:61:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"49820:6:25"}]}]},{"nodeType":"YulBlock","src":"49911:118:25","statements":[{"nodeType":"YulVariableDeclaration","src":"49926:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"49940:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"49930:6:25","type":""}]},{"nodeType":"YulAssignment","src":"49956:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"49991:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"50002:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"49987:3:25"},"nodeType":"YulFunctionCall","src":"49987:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"50011:7:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"49966:20:25"},"nodeType":"YulFunctionCall","src":"49966:53:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"49956:6:25"}]}]},{"nodeType":"YulBlock","src":"50039:118:25","statements":[{"nodeType":"YulVariableDeclaration","src":"50054:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"50068:2:25","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"50058:6:25","type":""}]},{"nodeType":"YulAssignment","src":"50084:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"50119:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"50130:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"50115:3:25"},"nodeType":"YulFunctionCall","src":"50115:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"50139:7:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"50094:20:25"},"nodeType":"YulFunctionCall","src":"50094:53:25"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"50084:6:25"}]}]}]},"name":"abi_decode_tuple_t_address_payablet_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49591:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"49602:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"49614:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"49622:6:25","type":""},{"name":"value2","nodeType":"YulTypedName","src":"49630:6:25","type":""}],"src":"49529:635:25"},{"body":{"nodeType":"YulBlock","src":"50228:64:25","statements":[{"nodeType":"YulAssignment","src":"50238:48:25","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"50268:3:25"},{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"50277:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"50282:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"50273:3:25"},"nodeType":"YulFunctionCall","src":"50273:12:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"50247:20:25"},"nodeType":"YulFunctionCall","src":"50247:39:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"50238:5:25"}]}]},"name":"calldata_access_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"baseRef","nodeType":"YulTypedName","src":"50205:7:25","type":""},{"name":"ptr","nodeType":"YulTypedName","src":"50214:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"50222:5:25","type":""}],"src":"50170:122:25"},{"body":{"nodeType":"YulBlock","src":"50356:64:25","statements":[{"nodeType":"YulAssignment","src":"50366:48:25","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"50396:3:25"},{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"50405:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"50410:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"50401:3:25"},"nodeType":"YulFunctionCall","src":"50401:12:25"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"50375:20:25"},"nodeType":"YulFunctionCall","src":"50375:39:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"50366:5:25"}]}]},"name":"calldata_access_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"baseRef","nodeType":"YulTypedName","src":"50333:7:25","type":""},{"name":"ptr","nodeType":"YulTypedName","src":"50342:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"50350:5:25","type":""}],"src":"50298:122:25"},{"body":{"nodeType":"YulBlock","src":"50515:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"50532:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"50535:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"50525:6:25"},"nodeType":"YulFunctionCall","src":"50525:12:25"},"nodeType":"YulExpressionStatement","src":"50525:12:25"}]},"name":"revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2","nodeType":"YulFunctionDefinition","src":"50426:117:25"},{"body":{"nodeType":"YulBlock","src":"50638:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"50655:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"50658:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"50648:6:25"},"nodeType":"YulFunctionCall","src":"50648:12:25"},"nodeType":"YulExpressionStatement","src":"50648:12:25"}]},"name":"revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20","nodeType":"YulFunctionDefinition","src":"50549:117:25"},{"body":{"nodeType":"YulBlock","src":"50761:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"50778:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"50781:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"50771:6:25"},"nodeType":"YulFunctionCall","src":"50771:12:25"},"nodeType":"YulExpressionStatement","src":"50771:12:25"}]},"name":"revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4","nodeType":"YulFunctionDefinition","src":"50672:117:25"},{"body":{"nodeType":"YulBlock","src":"50873:636:25","statements":[{"nodeType":"YulVariableDeclaration","src":"50883:43:25","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"50922:3:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"50909:12:25"},"nodeType":"YulFunctionCall","src":"50909:17:25"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"50887:18:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"51020:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4","nodeType":"YulIdentifier","src":"51022:77:25"},"nodeType":"YulFunctionCall","src":"51022:79:25"},"nodeType":"YulExpressionStatement","src":"51022:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"50949:18:25"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"50977:12:25"},"nodeType":"YulFunctionCall","src":"50977:14:25"},{"name":"base_ref","nodeType":"YulIdentifier","src":"50993:8:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"50973:3:25"},"nodeType":"YulFunctionCall","src":"50973:29:25"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"51008:4:25","type":"","value":"0x20"},{"kind":"number","nodeType":"YulLiteral","src":"51014:1:25","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"51004:3:25"},"nodeType":"YulFunctionCall","src":"51004:12:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"50969:3:25"},"nodeType":"YulFunctionCall","src":"50969:48:25"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"50945:3:25"},"nodeType":"YulFunctionCall","src":"50945:73:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"50938:6:25"},"nodeType":"YulFunctionCall","src":"50938:81:25"},"nodeType":"YulIf","src":"50935:168:25"},{"nodeType":"YulAssignment","src":"51112:42:25","value":{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"51125:18:25"},{"name":"base_ref","nodeType":"YulIdentifier","src":"51145:8:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"51121:3:25"},"nodeType":"YulFunctionCall","src":"51121:33:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"51112:5:25"}]},{"nodeType":"YulAssignment","src":"51164:29:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"51187:5:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"51174:12:25"},"nodeType":"YulFunctionCall","src":"51174:19:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"51164:6:25"}]},{"nodeType":"YulAssignment","src":"51202:25:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"51215:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"51222:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"51211:3:25"},"nodeType":"YulFunctionCall","src":"51211:16:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"51202:5:25"}]},{"body":{"nodeType":"YulBlock","src":"51270:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2","nodeType":"YulIdentifier","src":"51272:77:25"},"nodeType":"YulFunctionCall","src":"51272:79:25"},"nodeType":"YulExpressionStatement","src":"51272:79:25"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"51242:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"51250:18:25","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"51239:2:25"},"nodeType":"YulFunctionCall","src":"51239:30:25"},"nodeType":"YulIf","src":"51236:117:25"},{"body":{"nodeType":"YulBlock","src":"51419:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20","nodeType":"YulIdentifier","src":"51421:77:25"},"nodeType":"YulFunctionCall","src":"51421:79:25"},"nodeType":"YulExpressionStatement","src":"51421:79:25"}]},"condition":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"51369:8:25"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"51383:12:25"},"nodeType":"YulFunctionCall","src":"51383:14:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"51403:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"51411:4:25","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"51399:3:25"},"nodeType":"YulFunctionCall","src":"51399:17:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"51379:3:25"},"nodeType":"YulFunctionCall","src":"51379:38:25"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"51365:3:25"},"nodeType":"YulFunctionCall","src":"51365:53:25"},"nodeType":"YulIf","src":"51362:140:25"}]},"name":"calldata_access_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"50841:8:25","type":""},{"name":"ptr","nodeType":"YulTypedName","src":"50851:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"50859:5:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"50866:6:25","type":""}],"src":"50795:714:25"},{"body":{"nodeType":"YulBlock","src":"51627:191:25","statements":[{"nodeType":"YulAssignment","src":"51637:67:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"51692:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"51697:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"51644:47:25"},"nodeType":"YulFunctionCall","src":"51644:60:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"51637:3:25"}]},{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"51738:5:25"},{"name":"pos","nodeType":"YulIdentifier","src":"51745:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"51750:6:25"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"51714:23:25"},"nodeType":"YulFunctionCall","src":"51714:43:25"},"nodeType":"YulExpressionStatement","src":"51714:43:25"},{"nodeType":"YulAssignment","src":"51766:46:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"51777:3:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"51804:6:25"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"51782:21:25"},"nodeType":"YulFunctionCall","src":"51782:29:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"51773:3:25"},"nodeType":"YulFunctionCall","src":"51773:39:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"51766:3:25"}]}]},"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"51600:5:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"51607:6:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"51615:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"51623:3:25","type":""}],"src":"51537:281:25"},{"body":{"nodeType":"YulBlock","src":"52016:1832:25","statements":[{"nodeType":"YulVariableDeclaration","src":"52026:28:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"52042:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"52047:6:25","type":"","value":"0x0100"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52038:3:25"},"nodeType":"YulFunctionCall","src":"52038:16:25"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"52030:4:25","type":""}]},{"nodeType":"YulBlock","src":"52064:195:25","statements":[{"nodeType":"YulVariableDeclaration","src":"52103:70:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52149:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52160:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"52167:4:25","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52156:3:25"},"nodeType":"YulFunctionCall","src":"52156:16:25"}],"functionName":{"name":"calldata_access_t_uint256","nodeType":"YulIdentifier","src":"52123:25:25"},"nodeType":"YulFunctionCall","src":"52123:50:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"52107:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"52220:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"52238:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"52243:4:25","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52234:3:25"},"nodeType":"YulFunctionCall","src":"52234:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"52186:33:25"},"nodeType":"YulFunctionCall","src":"52186:63:25"},"nodeType":"YulExpressionStatement","src":"52186:63:25"}]},{"nodeType":"YulBlock","src":"52269:198:25","statements":[{"nodeType":"YulVariableDeclaration","src":"52311:70:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52357:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52368:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"52375:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52364:3:25"},"nodeType":"YulFunctionCall","src":"52364:16:25"}],"functionName":{"name":"calldata_access_t_uint256","nodeType":"YulIdentifier","src":"52331:25:25"},"nodeType":"YulFunctionCall","src":"52331:50:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"52315:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"52428:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"52446:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"52451:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52442:3:25"},"nodeType":"YulFunctionCall","src":"52442:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"52394:33:25"},"nodeType":"YulFunctionCall","src":"52394:63:25"},"nodeType":"YulExpressionStatement","src":"52394:63:25"}]},{"nodeType":"YulBlock","src":"52477:199:25","statements":[{"nodeType":"YulVariableDeclaration","src":"52520:70:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52566:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52577:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"52584:4:25","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52573:3:25"},"nodeType":"YulFunctionCall","src":"52573:16:25"}],"functionName":{"name":"calldata_access_t_uint256","nodeType":"YulIdentifier","src":"52540:25:25"},"nodeType":"YulFunctionCall","src":"52540:50:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"52524:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"52637:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"52655:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"52660:4:25","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52651:3:25"},"nodeType":"YulFunctionCall","src":"52651:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"52603:33:25"},"nodeType":"YulFunctionCall","src":"52603:63:25"},"nodeType":"YulExpressionStatement","src":"52603:63:25"}]},{"nodeType":"YulBlock","src":"52686:198:25","statements":[{"nodeType":"YulVariableDeclaration","src":"52728:70:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52774:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52785:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"52792:4:25","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52781:3:25"},"nodeType":"YulFunctionCall","src":"52781:16:25"}],"functionName":{"name":"calldata_access_t_address","nodeType":"YulIdentifier","src":"52748:25:25"},"nodeType":"YulFunctionCall","src":"52748:50:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"52732:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"52845:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"52863:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"52868:4:25","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52859:3:25"},"nodeType":"YulFunctionCall","src":"52859:14:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"52811:33:25"},"nodeType":"YulFunctionCall","src":"52811:63:25"},"nodeType":"YulExpressionStatement","src":"52811:63:25"}]},{"nodeType":"YulBlock","src":"52894:196:25","statements":[{"nodeType":"YulVariableDeclaration","src":"52934:70:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52980:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"52991:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"52998:4:25","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"52987:3:25"},"nodeType":"YulFunctionCall","src":"52987:16:25"}],"functionName":{"name":"calldata_access_t_address","nodeType":"YulIdentifier","src":"52954:25:25"},"nodeType":"YulFunctionCall","src":"52954:50:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"52938:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"53051:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"53069:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"53074:4:25","type":"","value":"0x80"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"53065:3:25"},"nodeType":"YulFunctionCall","src":"53065:14:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"53017:33:25"},"nodeType":"YulFunctionCall","src":"53017:63:25"},"nodeType":"YulExpressionStatement","src":"53017:63:25"}]},{"nodeType":"YulBlock","src":"53100:196:25","statements":[{"nodeType":"YulVariableDeclaration","src":"53140:70:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"53186:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"53197:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"53204:4:25","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"53193:3:25"},"nodeType":"YulFunctionCall","src":"53193:16:25"}],"functionName":{"name":"calldata_access_t_address","nodeType":"YulIdentifier","src":"53160:25:25"},"nodeType":"YulFunctionCall","src":"53160:50:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"53144:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"53257:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"53275:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"53280:4:25","type":"","value":"0xa0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"53271:3:25"},"nodeType":"YulFunctionCall","src":"53271:14:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"53223:33:25"},"nodeType":"YulFunctionCall","src":"53223:63:25"},"nodeType":"YulExpressionStatement","src":"53223:63:25"}]},{"nodeType":"YulBlock","src":"53306:310:25","statements":[{"nodeType":"YulVariableDeclaration","src":"53350:95:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"53421:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"53432:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"53439:4:25","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"53428:3:25"},"nodeType":"YulFunctionCall","src":"53428:16:25"}],"functionName":{"name":"calldata_access_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"53384:36:25"},"nodeType":"YulFunctionCall","src":"53384:61:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"53354:12:25","type":""},{"name":"memberValue1","nodeType":"YulTypedName","src":"53368:12:25","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"53470:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"53475:4:25","type":"","value":"0xc0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"53466:3:25"},"nodeType":"YulFunctionCall","src":"53466:14:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"53486:4:25"},{"name":"pos","nodeType":"YulIdentifier","src":"53492:3:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"53482:3:25"},"nodeType":"YulFunctionCall","src":"53482:14:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"53459:6:25"},"nodeType":"YulFunctionCall","src":"53459:38:25"},"nodeType":"YulExpressionStatement","src":"53459:38:25"},{"nodeType":"YulAssignment","src":"53510:95:25","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"53572:12:25"},{"name":"memberValue1","nodeType":"YulIdentifier","src":"53586:12:25"},{"name":"tail","nodeType":"YulIdentifier","src":"53600:4:25"}],"functionName":{"name":"abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"53518:53:25"},"nodeType":"YulFunctionCall","src":"53518:87:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"53510:4:25"}]}]},{"nodeType":"YulBlock","src":"53626:195:25","statements":[{"nodeType":"YulVariableDeclaration","src":"53665:70:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"53711:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"53722:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"53729:4:25","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"53718:3:25"},"nodeType":"YulFunctionCall","src":"53718:16:25"}],"functionName":{"name":"calldata_access_t_uint256","nodeType":"YulIdentifier","src":"53685:25:25"},"nodeType":"YulFunctionCall","src":"53685:50:25"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"53669:12:25","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"53782:12:25"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"53800:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"53805:4:25","type":"","value":"0xe0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"53796:3:25"},"nodeType":"YulFunctionCall","src":"53796:14:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256","nodeType":"YulIdentifier","src":"53748:33:25"},"nodeType":"YulFunctionCall","src":"53748:63:25"},"nodeType":"YulExpressionStatement","src":"53748:63:25"}]},{"nodeType":"YulAssignment","src":"53831:11:25","value":{"name":"tail","nodeType":"YulIdentifier","src":"53838:4:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"53831:3:25"}]}]},"name":"abi_encode_t_struct$_RelayData_$1326_calldata_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"51995:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"52002:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"52011:3:25","type":""}],"src":"51886:1962:25"},{"body":{"nodeType":"YulBlock","src":"54036:313:25","statements":[{"nodeType":"YulAssignment","src":"54046:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"54058:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"54069:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"54054:3:25"},"nodeType":"YulFunctionCall","src":"54054:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"54046:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"54126:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"54139:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"54150:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"54135:3:25"},"nodeType":"YulFunctionCall","src":"54135:17:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"54082:43:25"},"nodeType":"YulFunctionCall","src":"54082:71:25"},"nodeType":"YulExpressionStatement","src":"54082:71:25"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"54174:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"54185:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"54170:3:25"},"nodeType":"YulFunctionCall","src":"54170:18:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"54194:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"54200:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"54190:3:25"},"nodeType":"YulFunctionCall","src":"54190:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"54163:6:25"},"nodeType":"YulFunctionCall","src":"54163:48:25"},"nodeType":"YulExpressionStatement","src":"54163:48:25"},{"nodeType":"YulAssignment","src":"54220:122:25","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"54328:6:25"},{"name":"tail","nodeType":"YulIdentifier","src":"54337:4:25"}],"functionName":{"name":"abi_encode_t_struct$_RelayData_$1326_calldata_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"54228:99:25"},"nodeType":"YulFunctionCall","src":"54228:114:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"54220:4:25"}]}]},"name":"abi_encode_tuple_t_uint256_t_struct$_RelayData_$1326_calldata_ptr__to_t_uint256_t_struct$_RelayData_$1326_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"54000:9:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"54012:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"54020:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"54031:4:25","type":""}],"src":"53854:495:25"},{"body":{"nodeType":"YulBlock","src":"54400:146:25","statements":[{"nodeType":"YulAssignment","src":"54410:25:25","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"54433:1:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"54415:17:25"},"nodeType":"YulFunctionCall","src":"54415:20:25"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"54410:1:25"}]},{"nodeType":"YulAssignment","src":"54444:25:25","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"54467:1:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"54449:17:25"},"nodeType":"YulFunctionCall","src":"54449:20:25"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"54444:1:25"}]},{"body":{"nodeType":"YulBlock","src":"54491:22:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"54493:16:25"},"nodeType":"YulFunctionCall","src":"54493:18:25"},"nodeType":"YulExpressionStatement","src":"54493:18:25"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"54485:1:25"},{"name":"y","nodeType":"YulIdentifier","src":"54488:1:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"54482:2:25"},"nodeType":"YulFunctionCall","src":"54482:8:25"},"nodeType":"YulIf","src":"54479:34:25"},{"nodeType":"YulAssignment","src":"54523:17:25","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"54535:1:25"},{"name":"y","nodeType":"YulIdentifier","src":"54538:1:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"54531:3:25"},"nodeType":"YulFunctionCall","src":"54531:9:25"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"54523:4:25"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"54386:1:25","type":""},{"name":"y","nodeType":"YulTypedName","src":"54389:1:25","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54395:4:25","type":""}],"src":"54355:191:25"},{"body":{"nodeType":"YulBlock","src":"54658:68:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"54680:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"54688:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"54676:3:25"},"nodeType":"YulFunctionCall","src":"54676:14:25"},{"hexValue":"466f72776172646572206973206e6f742074727573746564","kind":"string","nodeType":"YulLiteral","src":"54692:26:25","type":"","value":"Forwarder is not trusted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"54669:6:25"},"nodeType":"YulFunctionCall","src":"54669:50:25"},"nodeType":"YulExpressionStatement","src":"54669:50:25"}]},"name":"store_literal_in_memory_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"54650:6:25","type":""}],"src":"54552:174:25"},{"body":{"nodeType":"YulBlock","src":"54878:220:25","statements":[{"nodeType":"YulAssignment","src":"54888:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"54954:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"54959:2:25","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"54895:58:25"},"nodeType":"YulFunctionCall","src":"54895:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"54888:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"55060:3:25"}],"functionName":{"name":"store_literal_in_memory_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429","nodeType":"YulIdentifier","src":"54971:88:25"},"nodeType":"YulFunctionCall","src":"54971:93:25"},"nodeType":"YulExpressionStatement","src":"54971:93:25"},{"nodeType":"YulAssignment","src":"55073:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"55084:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"55089:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"55080:3:25"},"nodeType":"YulFunctionCall","src":"55080:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"55073:3:25"}]}]},"name":"abi_encode_t_stringliteral_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"54866:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"54874:3:25","type":""}],"src":"54732:366:25"},{"body":{"nodeType":"YulBlock","src":"55275:248:25","statements":[{"nodeType":"YulAssignment","src":"55285:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"55297:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"55308:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"55293:3:25"},"nodeType":"YulFunctionCall","src":"55293:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"55285:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"55332:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"55343:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"55328:3:25"},"nodeType":"YulFunctionCall","src":"55328:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"55351:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"55357:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"55347:3:25"},"nodeType":"YulFunctionCall","src":"55347:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"55321:6:25"},"nodeType":"YulFunctionCall","src":"55321:47:25"},"nodeType":"YulExpressionStatement","src":"55321:47:25"},{"nodeType":"YulAssignment","src":"55377:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"55511:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"55385:124:25"},"nodeType":"YulFunctionCall","src":"55385:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"55377:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"55255:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"55270:4:25","type":""}],"src":"55104:419:25"},{"body":{"nodeType":"YulBlock","src":"55635:61:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"55657:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"55665:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"55653:3:25"},"nodeType":"YulFunctionCall","src":"55653:14:25"},{"hexValue":"57726f6e67206d696e2062616c616e6365","kind":"string","nodeType":"YulLiteral","src":"55669:19:25","type":"","value":"Wrong min balance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"55646:6:25"},"nodeType":"YulFunctionCall","src":"55646:43:25"},"nodeType":"YulExpressionStatement","src":"55646:43:25"}]},"name":"store_literal_in_memory_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"55627:6:25","type":""}],"src":"55529:167:25"},{"body":{"nodeType":"YulBlock","src":"55848:220:25","statements":[{"nodeType":"YulAssignment","src":"55858:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"55924:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"55929:2:25","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"55865:58:25"},"nodeType":"YulFunctionCall","src":"55865:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"55858:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"56030:3:25"}],"functionName":{"name":"store_literal_in_memory_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c","nodeType":"YulIdentifier","src":"55941:88:25"},"nodeType":"YulFunctionCall","src":"55941:93:25"},"nodeType":"YulExpressionStatement","src":"55941:93:25"},{"nodeType":"YulAssignment","src":"56043:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"56054:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"56059:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"56050:3:25"},"nodeType":"YulFunctionCall","src":"56050:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"56043:3:25"}]}]},"name":"abi_encode_t_stringliteral_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"55836:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"55844:3:25","type":""}],"src":"55702:366:25"},{"body":{"nodeType":"YulBlock","src":"56245:248:25","statements":[{"nodeType":"YulAssignment","src":"56255:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"56267:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"56278:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"56263:3:25"},"nodeType":"YulFunctionCall","src":"56263:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"56255:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"56302:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"56313:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"56298:3:25"},"nodeType":"YulFunctionCall","src":"56298:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"56321:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"56327:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"56317:3:25"},"nodeType":"YulFunctionCall","src":"56317:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56291:6:25"},"nodeType":"YulFunctionCall","src":"56291:47:25"},"nodeType":"YulExpressionStatement","src":"56291:47:25"},{"nodeType":"YulAssignment","src":"56347:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"56481:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"56355:124:25"},"nodeType":"YulFunctionCall","src":"56355:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"56347:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"56225:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"56240:4:25","type":""}],"src":"56074:419:25"},{"body":{"nodeType":"YulBlock","src":"56605:119:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"56627:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"56635:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"56623:3:25"},"nodeType":"YulFunctionCall","src":"56623:14:25"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"56639:34:25","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56616:6:25"},"nodeType":"YulFunctionCall","src":"56616:58:25"},"nodeType":"YulExpressionStatement","src":"56616:58:25"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"56695:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"56703:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"56691:3:25"},"nodeType":"YulFunctionCall","src":"56691:15:25"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"56708:8:25","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56684:6:25"},"nodeType":"YulFunctionCall","src":"56684:33:25"},"nodeType":"YulExpressionStatement","src":"56684:33:25"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"56597:6:25","type":""}],"src":"56499:225:25"},{"body":{"nodeType":"YulBlock","src":"56876:220:25","statements":[{"nodeType":"YulAssignment","src":"56886:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"56952:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"56957:2:25","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"56893:58:25"},"nodeType":"YulFunctionCall","src":"56893:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"56886:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"57058:3:25"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"56969:88:25"},"nodeType":"YulFunctionCall","src":"56969:93:25"},"nodeType":"YulExpressionStatement","src":"56969:93:25"},{"nodeType":"YulAssignment","src":"57071:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"57082:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"57087:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"57078:3:25"},"nodeType":"YulFunctionCall","src":"57078:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"57071:3:25"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"56864:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"56872:3:25","type":""}],"src":"56730:366:25"},{"body":{"nodeType":"YulBlock","src":"57273:248:25","statements":[{"nodeType":"YulAssignment","src":"57283:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"57295:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"57306:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"57291:3:25"},"nodeType":"YulFunctionCall","src":"57291:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"57283:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"57330:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"57341:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"57326:3:25"},"nodeType":"YulFunctionCall","src":"57326:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"57349:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"57355:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"57345:3:25"},"nodeType":"YulFunctionCall","src":"57345:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"57319:6:25"},"nodeType":"YulFunctionCall","src":"57319:47:25"},"nodeType":"YulExpressionStatement","src":"57319:47:25"},{"nodeType":"YulAssignment","src":"57375:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"57509:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"57383:124:25"},"nodeType":"YulFunctionCall","src":"57383:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"57375:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"57253:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"57268:4:25","type":""}],"src":"57102:419:25"},{"body":{"nodeType":"YulBlock","src":"57633:76:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57655:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"57663:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"57651:3:25"},"nodeType":"YulFunctionCall","src":"57651:14:25"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"57667:34:25","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"57644:6:25"},"nodeType":"YulFunctionCall","src":"57644:58:25"},"nodeType":"YulExpressionStatement","src":"57644:58:25"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"57625:6:25","type":""}],"src":"57527:182:25"},{"body":{"nodeType":"YulBlock","src":"57861:220:25","statements":[{"nodeType":"YulAssignment","src":"57871:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"57937:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"57942:2:25","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"57878:58:25"},"nodeType":"YulFunctionCall","src":"57878:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"57871:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"58043:3:25"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"57954:88:25"},"nodeType":"YulFunctionCall","src":"57954:93:25"},"nodeType":"YulExpressionStatement","src":"57954:93:25"},{"nodeType":"YulAssignment","src":"58056:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"58067:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"58072:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"58063:3:25"},"nodeType":"YulFunctionCall","src":"58063:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"58056:3:25"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"57849:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"57857:3:25","type":""}],"src":"57715:366:25"},{"body":{"nodeType":"YulBlock","src":"58258:248:25","statements":[{"nodeType":"YulAssignment","src":"58268:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"58280:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"58291:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"58276:3:25"},"nodeType":"YulFunctionCall","src":"58276:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"58268:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"58315:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"58326:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"58311:3:25"},"nodeType":"YulFunctionCall","src":"58311:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"58334:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"58340:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"58330:3:25"},"nodeType":"YulFunctionCall","src":"58330:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"58304:6:25"},"nodeType":"YulFunctionCall","src":"58304:47:25"},"nodeType":"YulExpressionStatement","src":"58304:47:25"},{"nodeType":"YulAssignment","src":"58360:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"58494:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"58368:124:25"},"nodeType":"YulFunctionCall","src":"58368:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"58360:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"58238:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"58253:4:25","type":""}],"src":"58087:419:25"},{"body":{"nodeType":"YulBlock","src":"58625:34:25","statements":[{"nodeType":"YulAssignment","src":"58635:18:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"58650:3:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"58635:11:25"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"58597:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"58602:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"58613:11:25","type":""}],"src":"58512:147:25"},{"body":{"nodeType":"YulBlock","src":"58773:265:25","statements":[{"nodeType":"YulVariableDeclaration","src":"58783:52:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"58829:5:25"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"58797:31:25"},"nodeType":"YulFunctionCall","src":"58797:38:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"58787:6:25","type":""}]},{"nodeType":"YulAssignment","src":"58844:95:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"58927:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"58932:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"58851:75:25"},"nodeType":"YulFunctionCall","src":"58851:88:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"58844:3:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"58974:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"58981:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"58970:3:25"},"nodeType":"YulFunctionCall","src":"58970:16:25"},{"name":"pos","nodeType":"YulIdentifier","src":"58988:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"58993:6:25"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"58948:21:25"},"nodeType":"YulFunctionCall","src":"58948:52:25"},"nodeType":"YulExpressionStatement","src":"58948:52:25"},{"nodeType":"YulAssignment","src":"59009:23:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"59020:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"59025:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"59016:3:25"},"nodeType":"YulFunctionCall","src":"59016:16:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"59009:3:25"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"58754:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"58761:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"58769:3:25","type":""}],"src":"58665:373:25"},{"body":{"nodeType":"YulBlock","src":"59178:137:25","statements":[{"nodeType":"YulAssignment","src":"59189:100:25","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"59276:6:25"},{"name":"pos","nodeType":"YulIdentifier","src":"59285:3:25"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"59196:79:25"},"nodeType":"YulFunctionCall","src":"59196:93:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"59189:3:25"}]},{"nodeType":"YulAssignment","src":"59299:10:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"59306:3:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"59299:3:25"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"59157:3:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"59163:6:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"59174:3:25","type":""}],"src":"59044:271:25"},{"body":{"nodeType":"YulBlock","src":"59427:72:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"59449:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"59457:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"59445:3:25"},"nodeType":"YulFunctionCall","src":"59445:14:25"},{"hexValue":"697354727573746564466f727761726465723a207265766572746564","kind":"string","nodeType":"YulLiteral","src":"59461:30:25","type":"","value":"isTrustedForwarder: reverted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"59438:6:25"},"nodeType":"YulFunctionCall","src":"59438:54:25"},"nodeType":"YulExpressionStatement","src":"59438:54:25"}]},"name":"store_literal_in_memory_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"59419:6:25","type":""}],"src":"59321:178:25"},{"body":{"nodeType":"YulBlock","src":"59651:220:25","statements":[{"nodeType":"YulAssignment","src":"59661:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"59727:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"59732:2:25","type":"","value":"28"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"59668:58:25"},"nodeType":"YulFunctionCall","src":"59668:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"59661:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"59833:3:25"}],"functionName":{"name":"store_literal_in_memory_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e","nodeType":"YulIdentifier","src":"59744:88:25"},"nodeType":"YulFunctionCall","src":"59744:93:25"},"nodeType":"YulExpressionStatement","src":"59744:93:25"},{"nodeType":"YulAssignment","src":"59846:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"59857:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"59862:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"59853:3:25"},"nodeType":"YulFunctionCall","src":"59853:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"59846:3:25"}]}]},"name":"abi_encode_t_stringliteral_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"59639:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"59647:3:25","type":""}],"src":"59505:366:25"},{"body":{"nodeType":"YulBlock","src":"60048:248:25","statements":[{"nodeType":"YulAssignment","src":"60058:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"60070:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"60081:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"60066:3:25"},"nodeType":"YulFunctionCall","src":"60066:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"60058:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"60105:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"60116:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"60101:3:25"},"nodeType":"YulFunctionCall","src":"60101:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"60124:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"60130:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"60120:3:25"},"nodeType":"YulFunctionCall","src":"60120:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"60094:6:25"},"nodeType":"YulFunctionCall","src":"60094:47:25"},"nodeType":"YulExpressionStatement","src":"60094:47:25"},{"nodeType":"YulAssignment","src":"60150:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"60284:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"60158:124:25"},"nodeType":"YulFunctionCall","src":"60158:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"60150:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"60028:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"60043:4:25","type":""}],"src":"59877:419:25"},{"body":{"nodeType":"YulBlock","src":"60408:76:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"60430:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"60438:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"60426:3:25"},"nodeType":"YulFunctionCall","src":"60426:14:25"},{"hexValue":"697354727573746564466f727761726465723a2062616420726573706f6e7365","kind":"string","nodeType":"YulLiteral","src":"60442:34:25","type":"","value":"isTrustedForwarder: bad response"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"60419:6:25"},"nodeType":"YulFunctionCall","src":"60419:58:25"},"nodeType":"YulExpressionStatement","src":"60419:58:25"}]},"name":"store_literal_in_memory_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"60400:6:25","type":""}],"src":"60302:182:25"},{"body":{"nodeType":"YulBlock","src":"60636:220:25","statements":[{"nodeType":"YulAssignment","src":"60646:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"60712:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"60717:2:25","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"60653:58:25"},"nodeType":"YulFunctionCall","src":"60653:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"60646:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"60818:3:25"}],"functionName":{"name":"store_literal_in_memory_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325","nodeType":"YulIdentifier","src":"60729:88:25"},"nodeType":"YulFunctionCall","src":"60729:93:25"},"nodeType":"YulExpressionStatement","src":"60729:93:25"},{"nodeType":"YulAssignment","src":"60831:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"60842:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"60847:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"60838:3:25"},"nodeType":"YulFunctionCall","src":"60838:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"60831:3:25"}]}]},"name":"abi_encode_t_stringliteral_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"60624:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"60632:3:25","type":""}],"src":"60490:366:25"},{"body":{"nodeType":"YulBlock","src":"61033:248:25","statements":[{"nodeType":"YulAssignment","src":"61043:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"61055:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"61066:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"61051:3:25"},"nodeType":"YulFunctionCall","src":"61051:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"61043:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"61090:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"61101:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"61086:3:25"},"nodeType":"YulFunctionCall","src":"61086:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"61109:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"61115:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"61105:3:25"},"nodeType":"YulFunctionCall","src":"61105:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"61079:6:25"},"nodeType":"YulFunctionCall","src":"61079:47:25"},"nodeType":"YulExpressionStatement","src":"61079:47:25"},{"nodeType":"YulAssignment","src":"61135:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"61269:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"61143:124:25"},"nodeType":"YulFunctionCall","src":"61143:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"61135:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61013:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"61028:4:25","type":""}],"src":"60862:419:25"},{"body":{"nodeType":"YulBlock","src":"61347:77:25","statements":[{"nodeType":"YulAssignment","src":"61357:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"61372:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"61366:5:25"},"nodeType":"YulFunctionCall","src":"61366:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"61357:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"61412:5:25"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"61388:23:25"},"nodeType":"YulFunctionCall","src":"61388:30:25"},"nodeType":"YulExpressionStatement","src":"61388:30:25"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"61325:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"61333:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"61341:5:25","type":""}],"src":"61287:137:25"},{"body":{"nodeType":"YulBlock","src":"61504:271:25","statements":[{"body":{"nodeType":"YulBlock","src":"61550:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"61552:77:25"},"nodeType":"YulFunctionCall","src":"61552:79:25"},"nodeType":"YulExpressionStatement","src":"61552:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"61525:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"61534:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"61521:3:25"},"nodeType":"YulFunctionCall","src":"61521:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"61546:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"61517:3:25"},"nodeType":"YulFunctionCall","src":"61517:32:25"},"nodeType":"YulIf","src":"61514:119:25"},{"nodeType":"YulBlock","src":"61643:125:25","statements":[{"nodeType":"YulVariableDeclaration","src":"61658:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"61672:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"61662:6:25","type":""}]},{"nodeType":"YulAssignment","src":"61687:71:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"61730:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"61741:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"61726:3:25"},"nodeType":"YulFunctionCall","src":"61726:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"61750:7:25"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"61697:28:25"},"nodeType":"YulFunctionCall","src":"61697:61:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"61687:6:25"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"61474:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"61485:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"61497:6:25","type":""}],"src":"61430:345:25"},{"body":{"nodeType":"YulBlock","src":"61887:75:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"61909:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"61917:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"61905:3:25"},"nodeType":"YulFunctionCall","src":"61905:14:25"},{"hexValue":"696e76616c696420666f7277617264657220666f7220726563697069656e74","kind":"string","nodeType":"YulLiteral","src":"61921:33:25","type":"","value":"invalid forwarder for recipient"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"61898:6:25"},"nodeType":"YulFunctionCall","src":"61898:57:25"},"nodeType":"YulExpressionStatement","src":"61898:57:25"}]},"name":"store_literal_in_memory_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"61879:6:25","type":""}],"src":"61781:181:25"},{"body":{"nodeType":"YulBlock","src":"62114:220:25","statements":[{"nodeType":"YulAssignment","src":"62124:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"62190:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"62195:2:25","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"62131:58:25"},"nodeType":"YulFunctionCall","src":"62131:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"62124:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"62296:3:25"}],"functionName":{"name":"store_literal_in_memory_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4","nodeType":"YulIdentifier","src":"62207:88:25"},"nodeType":"YulFunctionCall","src":"62207:93:25"},"nodeType":"YulExpressionStatement","src":"62207:93:25"},{"nodeType":"YulAssignment","src":"62309:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"62320:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"62325:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"62316:3:25"},"nodeType":"YulFunctionCall","src":"62316:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"62309:3:25"}]}]},"name":"abi_encode_t_stringliteral_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"62102:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"62110:3:25","type":""}],"src":"61968:366:25"},{"body":{"nodeType":"YulBlock","src":"62511:248:25","statements":[{"nodeType":"YulAssignment","src":"62521:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"62533:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"62544:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"62529:3:25"},"nodeType":"YulFunctionCall","src":"62529:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"62521:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"62568:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"62579:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"62564:3:25"},"nodeType":"YulFunctionCall","src":"62564:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"62587:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"62593:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"62583:3:25"},"nodeType":"YulFunctionCall","src":"62583:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"62557:6:25"},"nodeType":"YulFunctionCall","src":"62557:47:25"},"nodeType":"YulExpressionStatement","src":"62557:47:25"},{"nodeType":"YulAssignment","src":"62613:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"62747:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"62621:124:25"},"nodeType":"YulFunctionCall","src":"62621:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"62613:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"62491:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"62506:4:25","type":""}],"src":"62340:419:25"}]},"contents":"{\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_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313(memPtr) {\n\n        mstore(add(memPtr, 0), \"relay hub address not set\")\n\n    }\n\n    function abi_encode_t_stringliteral_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n        store_literal_in_memory_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313__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_2e4bcc216326d2d371e2433ec8e1af9c54827701515af7cd10f9acc79120d313_to_t_string_memory_ptr_fromStack( tail)\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 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 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 revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() {\n        revert(0, 0)\n    }\n\n    // struct GsnTypes.RelayRequest\n    function abi_decode_t_struct$_RelayRequest_$1333_calldata_ptr(offset, end) -> value {\n        if slt(sub(end, offset), 64) { revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() }\n        value := offset\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 cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function validator_revert_t_uint256(value) {\n        if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_uint256(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_struct$_RelayRequest_$1333_calldata_ptrt_bytes_calldata_ptrt_bytes_calldata_ptrt_uint256(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 := abi_decode_t_struct$_RelayRequest_$1333_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            value1, value2 := abi_decode_t_bytes_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            value3, value4 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 96\n\n            value5 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\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(src, dst, length) {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length)\n        {\n            // clear end\n            mstore(add(dst, length), 0)\n        }\n    }\n\n    function round_up_to_mul_of_32(value) -> result {\n        result := and(add(value, 31), not(31))\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function 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_bytes_memory_ptr_t_bool__to_t_bytes_memory_ptr_t_bool__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value0,  tail)\n\n        abi_encode_t_bool_to_t_bool_fromStack(value1,  add(headStart, 32))\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 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(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_bool(value)\n    }\n\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function cleanup_t_address_payable(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\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(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_address_payable(value)\n    }\n\n    function abi_decode_tuple_t_uint256t_address_payable(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_uint256(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address_payable(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_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 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_array$_t_address_$dyn_memory_ptr(length) -> size {\n        // Make sure we can allocate memory without overflow\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n        size := mul(length, 0x20)\n\n        // add length slot\n        size := add(size, 0x20)\n\n    }\n\n    // address[]\n    function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(offset, length, end) -> array {\n        array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n        let dst := array\n\n        mstore(array, length)\n        dst := add(array, 0x20)\n\n        let srcEnd := add(offset, mul(length, 0x20))\n        if gt(srcEnd, end) {\n            revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n        }\n        for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n\n            let elementPos := src\n\n            mstore(dst, abi_decode_t_address(elementPos, end))\n            dst := add(dst, 0x20)\n        }\n    }\n\n    // address[]\n    function abi_decode_t_array$_t_address_$dyn_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_array$_t_address_$dyn_memory_ptr(add(offset, 0x20), length, end)\n    }\n\n    function abi_decode_tuple_t_uint256t_array$_t_address_$dyn_memory_ptr(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_uint256(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 := abi_decode_t_array$_t_address_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    // struct GsnTypes.RelayData\n    function abi_decode_t_struct$_RelayData_$1326_calldata_ptr(offset, end) -> value {\n        if slt(sub(end, offset), 256) { revert_error_21fe6b43b4db61d76a176e95bf1a6b9ede4c301f93a4246f41fecb96e160861d() }\n        value := offset\n    }\n\n    function abi_decode_tuple_t_bytes_calldata_ptrt_boolt_uint256t_struct$_RelayData_$1326_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\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_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value2 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value3 := abi_decode_t_uint256(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 := abi_decode_t_struct$_RelayData_$1326_calldata_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_contract$_IRelayHub_$737(value) -> cleaned {\n        cleaned := cleanup_t_address(value)\n    }\n\n    function validator_revert_t_contract$_IRelayHub_$737(value) {\n        if iszero(eq(value, cleanup_t_contract$_IRelayHub_$737(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_contract$_IRelayHub_$737(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_contract$_IRelayHub_$737(value)\n    }\n\n    function abi_decode_tuple_t_contract$_IRelayHub_$737(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$_IRelayHub_$737(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 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(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 abi_decode_tuple_t_struct$_RelayRequest_$1333_calldata_ptr(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := calldataload(add(headStart, 0))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value0 := abi_decode_t_struct$_RelayRequest_$1333_calldata_ptr(add(headStart, offset), dataEnd)\n        }\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 abi_encode_t_uint256_to_t_uint256(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    // struct IPaymaster.GasAndDataLimits -> struct IPaymaster.GasAndDataLimits\n    function abi_encode_t_struct$_GasAndDataLimits_$401_memory_ptr_to_t_struct$_GasAndDataLimits_$401_memory_ptr_fromStack(value, pos)  {\n        let tail := add(pos, 0x80)\n\n        {\n            // acceptanceBudget\n\n            let memberValue0 := mload(add(value, 0x00))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n        }\n\n        {\n            // preRelayedCallGasLimit\n\n            let memberValue0 := mload(add(value, 0x20))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n        }\n\n        {\n            // postRelayedCallGasLimit\n\n            let memberValue0 := mload(add(value, 0x40))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x40))\n        }\n\n        {\n            // calldataSizeLimit\n\n            let memberValue0 := mload(add(value, 0x60))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x60))\n        }\n\n    }\n\n    function abi_encode_tuple_t_struct$_GasAndDataLimits_$401_memory_ptr__to_t_struct$_GasAndDataLimits_$401_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 128)\n\n        abi_encode_t_struct$_GasAndDataLimits_$401_memory_ptr_to_t_struct$_GasAndDataLimits_$401_memory_ptr_fromStack(value0,  add(headStart, 0))\n\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 store_literal_in_memory_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e(memPtr) {\n\n        mstore(add(memPtr, 0), \"Swap paused\")\n\n    }\n\n    function abi_encode_t_stringliteral_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 11)\n        store_literal_in_memory_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e__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_273e4368bf0ae8754d19f90964d6abdc5760f8c03c1d92bd829442fc5a37de6e_to_t_string_memory_ptr_fromStack( tail)\n\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_struct$_ForwardRequest_$318_calldata_ptr(base_ref, ptr_to_tail) -> addr {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0xe0, 1)))) { revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() }\n        addr := add(base_ref, rel_offset_of_tail)\n\n    }\n\n    function access_calldata_tail_t_struct$_RelayData_$1326_calldata_ptr(base_ref, ptr_to_tail) -> addr {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x0100, 1)))) { revert_error_356d538aaf70fba12156cc466564b792649f8f3befb07b071c91142253e175ad() }\n        addr := add(base_ref, rel_offset_of_tail)\n\n    }\n\n    function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n        revert(0, 0)\n    }\n\n    function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n        revert(0, 0)\n    }\n\n    function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n        revert(0, 0)\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(src, dst, length) {\n        calldatacopy(dst, src, length)\n        // clear end\n        mstore(add(dst, length), 0)\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(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    // struct GsnTypes.RelayData\n    function abi_decode_t_struct$_RelayData_$1326_memory_ptr(headStart, end) -> value {\n        if slt(sub(end, headStart), 0x0100) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n        value := allocate_memory(0x0100)\n\n        {\n            // gasPrice\n\n            let offset := 0\n\n            mstore(add(value, 0x00), abi_decode_t_uint256(add(headStart, offset), end))\n\n        }\n\n        {\n            // pctRelayFee\n\n            let offset := 32\n\n            mstore(add(value, 0x20), abi_decode_t_uint256(add(headStart, offset), end))\n\n        }\n\n        {\n            // baseRelayFee\n\n            let offset := 64\n\n            mstore(add(value, 0x40), abi_decode_t_uint256(add(headStart, offset), end))\n\n        }\n\n        {\n            // relayWorker\n\n            let offset := 96\n\n            mstore(add(value, 0x60), abi_decode_t_address(add(headStart, offset), end))\n\n        }\n\n        {\n            // paymaster\n\n            let offset := 128\n\n            mstore(add(value, 0x80), abi_decode_t_address(add(headStart, offset), end))\n\n        }\n\n        {\n            // forwarder\n\n            let offset := 160\n\n            mstore(add(value, 0xa0), abi_decode_t_address(add(headStart, offset), end))\n\n        }\n\n        {\n            // paymasterData\n\n            let offset := calldataload(add(headStart, 192))\n            if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n            mstore(add(value, 0xc0), abi_decode_t_bytes_memory_ptr(add(headStart, offset), end))\n\n        }\n\n        {\n            // clientId\n\n            let offset := 224\n\n            mstore(add(value, 0xe0), abi_decode_t_uint256(add(headStart, offset), end))\n\n        }\n\n    }\n\n    function convert_t_struct$_RelayData_$1326_calldata_ptr_to_t_struct$_RelayData_$1326_memory_ptr(value) -> converted {\n\n        converted := abi_decode_t_struct$_RelayData_$1326_memory_ptr(value, calldatasize())\n\n    }\n\n    function store_literal_in_memory_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189(memPtr) {\n\n        mstore(add(memPtr, 0), \"Unknown target\")\n\n    }\n\n    function abi_encode_t_stringliteral_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n        store_literal_in_memory_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189__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_df94f62198a8ac1ff828c9c8573348f66d3f2c43246d85e47e9d288c99712189_to_t_string_memory_ptr_fromStack( tail)\n\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 revert_error_7678404c0552a58cf14944d1a786cf4c81aab3563e2735cb332aee47bbb57c4a() {\n        revert(0, 0)\n    }\n\n    function revert_error_46e3e63c93837e9efa638abb3b4e76ced8c11259a873f1381a0abdf6ae6a823c() {\n        revert(0, 0)\n    }\n\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut {\n        if gt(startIndex, endIndex) { revert_error_7678404c0552a58cf14944d1a786cf4c81aab3563e2735cb332aee47bbb57c4a() }\n        if gt(endIndex, length) { revert_error_46e3e63c93837e9efa638abb3b4e76ced8c11259a873f1381a0abdf6ae6a823c() }\n        offsetOut := add(offset, mul(startIndex, 1))\n        lengthOut := sub(endIndex, startIndex)\n    }\n\n    function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address_payable(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 store_literal_in_memory_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312(memPtr) {\n\n        mstore(add(memPtr, 0), \"Token not whitelisted\")\n\n    }\n\n    function abi_encode_t_stringliteral_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 21)\n        store_literal_in_memory_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312__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_a8a590ce223befaf7d80c46dd8a79ab1acc914febe31544396be9a38974f0312_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\n        // overflow, if x > (maxValue - y)\n        if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n        sum := add(x, y)\n    }\n\n    function 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_t_uint256_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function store_literal_in_memory_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d(memPtr) {\n\n        mstore(add(memPtr, 0), \"Fee+amount: Not enough allowance\")\n\n    }\n\n    function abi_encode_t_stringliteral_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n        store_literal_in_memory_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d__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_98065b028de18d369b0eabde3ccced1df5580c28391f55a573ab03c709e96f0d_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2(memPtr) {\n\n        mstore(add(memPtr, 0), \"Fee+amount: Not enough balance\")\n\n    }\n\n    function abi_encode_t_stringliteral_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n        store_literal_in_memory_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2__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_8fe1a16987ad3b5a0a7a9ab44f16e83667a7557d02cf3568585d4a510754a5c2_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0(memPtr) {\n\n        mstore(add(memPtr, 0), \"Fee: Not enough allowance\")\n\n    }\n\n    function abi_encode_t_stringliteral_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n        store_literal_in_memory_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0__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_533c629f143e8d3b2d6d7e4c3d17653ed657109a2df1d9fdd13426c37b8cc1e0_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf(memPtr) {\n\n        mstore(add(memPtr, 0), \"Fee: Not enough balance\")\n\n    }\n\n    function abi_encode_t_stringliteral_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 23)\n        store_literal_in_memory_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf__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_9fa8084bcd022ca6300ef07f2cb9a2eeee2118c78de50f8e6de725bc4f038eaf_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc(memPtr) {\n\n        mstore(add(memPtr, 0), \"Not enough allowance\")\n\n    }\n\n    function abi_encode_t_stringliteral_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n        store_literal_in_memory_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc__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_b022b055ca598d53dea4e2d13bd2864e05a62be10c287a4dddfb651804a110cc_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad(memPtr) {\n\n        mstore(add(memPtr, 0), \"Not enough balance\")\n\n    }\n\n    function abi_encode_t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 18)\n        store_literal_in_memory_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad__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_62feb6dde0d8b91e793e4cfea2e07175444fe82cab5a2cd9e870981f43f4dbad_to_t_string_memory_ptr_fromStack( tail)\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 abi_encode_t_address_to_t_address(value, pos) {\n        mstore(pos, cleanup_t_address(value))\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    // struct GsnTypes.RelayData -> struct GsnTypes.RelayData\n    function abi_encode_t_struct$_RelayData_$1326_memory_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack(value, pos)  -> end  {\n        let tail := add(pos, 0x0100)\n\n        {\n            // gasPrice\n\n            let memberValue0 := mload(add(value, 0x00))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n        }\n\n        {\n            // pctRelayFee\n\n            let memberValue0 := mload(add(value, 0x20))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n        }\n\n        {\n            // baseRelayFee\n\n            let memberValue0 := mload(add(value, 0x40))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x40))\n        }\n\n        {\n            // relayWorker\n\n            let memberValue0 := mload(add(value, 0x60))\n            abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x60))\n        }\n\n        {\n            // paymaster\n\n            let memberValue0 := mload(add(value, 0x80))\n            abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x80))\n        }\n\n        {\n            // forwarder\n\n            let memberValue0 := mload(add(value, 0xa0))\n            abi_encode_t_address_to_t_address(memberValue0, add(pos, 0xa0))\n        }\n\n        {\n            // paymasterData\n\n            let memberValue0 := mload(add(value, 0xc0))\n\n            mstore(add(pos, 0xc0), sub(tail, pos))\n            tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(memberValue0, tail)\n\n        }\n\n        {\n            // clientId\n\n            let memberValue0 := mload(add(value, 0xe0))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0xe0))\n        }\n\n        end := tail\n    }\n\n    function abi_encode_tuple_t_uint256_t_struct$_RelayData_$1326_memory_ptr__to_t_uint256_t_struct$_RelayData_$1326_memory_ptr__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        mstore(add(headStart, 32), sub(tail, headStart))\n        tail := abi_encode_t_struct$_RelayData_$1326_memory_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack(value1,  tail)\n\n    }\n\n    function store_literal_in_memory_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e(memPtr) {\n\n        mstore(add(memPtr, 0), \"Not enough to pay for tx\")\n\n    }\n\n    function abi_encode_t_stringliteral_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n        store_literal_in_memory_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e__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_1212e82a4cd1aea8884ffe40a763159dbe93dab5bac80236c6f807f2956c9a1e_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665(memPtr) {\n\n        mstore(add(memPtr, 0), \"Not enough gas\")\n\n    }\n\n    function abi_encode_t_stringliteral_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n        store_literal_in_memory_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665__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_c505abcf401a813b707f2b72f0d3097205cb08cd1e3f782b51c6bbd3006ba665_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n        tail := add(headStart, 96)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value2,  add(headStart, 64))\n\n    }\n\n    function store_literal_in_memory_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08(memPtr) {\n\n        mstore(add(memPtr, 0), \"Token address is 0\")\n\n    }\n\n    function abi_encode_t_stringliteral_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 18)\n        store_literal_in_memory_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08__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_d5dae894af15fb44a112140690373ff43a6244b3e3bf578d7100c6ab55a6bb08_to_t_string_memory_ptr_fromStack( tail)\n\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 abi_encode_tuple_t_uint256_t_address_payable__to_t_uint256_t_address_payable__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_address_payable_to_t_address_payable_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function store_literal_in_memory_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a(memPtr) {\n\n        mstore(add(memPtr, 0), \"Wrong Payment Token\")\n\n    }\n\n    function abi_encode_t_stringliteral_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 19)\n        store_literal_in_memory_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a__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_f1bf1f34aa29dd78b3616ae01d2358e26f68d295e26eccc17af8cc3e6a01031a_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function array_length_t_array$_t_address_$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_address_$dyn_memory_ptr(ptr) -> data {\n        data := ptr\n\n        data := add(ptr, 0x20)\n\n    }\n\n    function abi_encodeUpdatedPos_t_address_to_t_address(value0, pos) -> updatedPos {\n        abi_encode_t_address_to_t_address(value0, pos)\n        updatedPos := add(pos, 0x20)\n    }\n\n    function array_nextElement_t_array$_t_address_$dyn_memory_ptr(ptr) -> next {\n        next := add(ptr, 0x20)\n    }\n\n    // address[] -> address[]\n    function abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value, pos)  -> end  {\n        let length := array_length_t_array$_t_address_$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_address_$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_address_to_t_address(elementValue0, pos)\n            srcPtr := array_nextElement_t_array$_t_address_$dyn_memory_ptr(srcPtr)\n        }\n        end := pos\n    }\n\n    function abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_memory_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__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        mstore(add(headStart, 32), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value1,  tail)\n\n    }\n\n    function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {\n        // Make sure we can allocate memory without overflow\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n        size := mul(length, 0x20)\n\n        // add length slot\n        size := add(size, 0x20)\n\n    }\n\n    // uint256[]\n    function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(offset, length, end) -> array {\n        array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n        let dst := array\n\n        mstore(array, length)\n        dst := add(array, 0x20)\n\n        let srcEnd := add(offset, mul(length, 0x20))\n        if gt(srcEnd, end) {\n            revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n        }\n        for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n\n            let elementPos := src\n\n            mstore(dst, abi_decode_t_uint256_fromMemory(elementPos, end))\n            dst := add(dst, 0x20)\n        }\n    }\n\n    // uint256[]\n    function abi_decode_t_array$_t_uint256_$dyn_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_array$_t_uint256_$dyn_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n    }\n\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := mload(add(headStart, 0))\n            if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n            value0 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function panic_error_0x32() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n\n    function store_literal_in_memory_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb(memPtr) {\n\n        mstore(add(memPtr, 0), \"can only be called by RelayHub\")\n\n    }\n\n    function abi_encode_t_stringliteral_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 30)\n        store_literal_in_memory_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb__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_d169f51e5e283c8c890697eb898c30495d34dbb12b80eb91ce172a0d9c75ebfb_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23(memPtr) {\n\n        mstore(add(memPtr, 0), \"No success\")\n\n    }\n\n    function abi_encode_t_stringliteral_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 10)\n        store_literal_in_memory_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23__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_6a3d43d735fb1e277c0dec34eb8dc230f0b4d52519b75073724e148b0eac0d23_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_decode_tuple_t_address_payablet_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_address_payable(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 calldata_access_t_uint256(baseRef, ptr) -> value {\n        value := abi_decode_t_uint256(ptr, add(ptr, 32))\n    }\n\n    function calldata_access_t_address(baseRef, ptr) -> value {\n        value := abi_decode_t_address(ptr, add(ptr, 32))\n    }\n\n    function revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2() {\n        revert(0, 0)\n    }\n\n    function revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20() {\n        revert(0, 0)\n    }\n\n    function revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4() {\n        revert(0, 0)\n    }\n\n    function calldata_access_t_bytes_calldata_ptr(base_ref, ptr) -> value, length {\n        let rel_offset_of_tail := calldataload(ptr)\n        if iszero(slt(rel_offset_of_tail, sub(sub(calldatasize(), base_ref), sub(0x20, 1)))) { revert_error_db64ea6d4a12deece376118739de8d9f517a2db5b58ea2ca332ea908c04c71d4() }\n        value := add(rel_offset_of_tail, base_ref)\n\n        length := calldataload(value)\n        value := add(value, 0x20)\n        if gt(length, 0xffffffffffffffff) { revert_error_0803104b3ab68501accf02de57372b8e5e6e1582158b771d3f89279dc6822fe2() }\n        if sgt(base_ref, sub(calldatasize(), mul(length, 0x01))) { revert_error_3894daff73bdbb8963c284e167b207f7abade3c031c50828ea230a16bdbc0f20() }\n\n    }\n\n    // bytes -> bytes\n    function abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr(start, length, pos) -> end {\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length)\n\n        copy_calldata_to_memory(start, pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    // struct GsnTypes.RelayData -> struct GsnTypes.RelayData\n    function abi_encode_t_struct$_RelayData_$1326_calldata_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack(value, pos)  -> end  {\n        let tail := add(pos, 0x0100)\n\n        {\n            // gasPrice\n\n            let memberValue0 := calldata_access_t_uint256(value, add(value, 0x00))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x00))\n        }\n\n        {\n            // pctRelayFee\n\n            let memberValue0 := calldata_access_t_uint256(value, add(value, 0x20))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n        }\n\n        {\n            // baseRelayFee\n\n            let memberValue0 := calldata_access_t_uint256(value, add(value, 0x40))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x40))\n        }\n\n        {\n            // relayWorker\n\n            let memberValue0 := calldata_access_t_address(value, add(value, 0x60))\n            abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x60))\n        }\n\n        {\n            // paymaster\n\n            let memberValue0 := calldata_access_t_address(value, add(value, 0x80))\n            abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x80))\n        }\n\n        {\n            // forwarder\n\n            let memberValue0 := calldata_access_t_address(value, add(value, 0xa0))\n            abi_encode_t_address_to_t_address(memberValue0, add(pos, 0xa0))\n        }\n\n        {\n            // paymasterData\n\n            let memberValue0, memberValue1 := calldata_access_t_bytes_calldata_ptr(value, add(value, 0xc0))\n\n            mstore(add(pos, 0xc0), sub(tail, pos))\n            tail := abi_encode_t_bytes_calldata_ptr_to_t_bytes_memory_ptr(memberValue0, memberValue1, tail)\n\n        }\n\n        {\n            // clientId\n\n            let memberValue0 := calldata_access_t_uint256(value, add(value, 0xe0))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0xe0))\n        }\n\n        end := tail\n    }\n\n    function abi_encode_tuple_t_uint256_t_struct$_RelayData_$1326_calldata_ptr__to_t_uint256_t_struct$_RelayData_$1326_memory_ptr__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        mstore(add(headStart, 32), sub(tail, headStart))\n        tail := abi_encode_t_struct$_RelayData_$1326_calldata_ptr_to_t_struct$_RelayData_$1326_memory_ptr_fromStack(value1,  tail)\n\n    }\n\n    function checked_sub_t_uint256(x, y) -> diff {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n\n        if lt(x, y) { panic_error_0x11() }\n\n        diff := sub(x, y)\n    }\n\n    function store_literal_in_memory_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429(memPtr) {\n\n        mstore(add(memPtr, 0), \"Forwarder is not trusted\")\n\n    }\n\n    function abi_encode_t_stringliteral_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n        store_literal_in_memory_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429__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_3a2fca03255f31860c82d52f1191f77065f7ff670c017cd47e3568fc231bf429_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c(memPtr) {\n\n        mstore(add(memPtr, 0), \"Wrong min balance\")\n\n    }\n\n    function abi_encode_t_stringliteral_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 17)\n        store_literal_in_memory_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c__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_4b70ae5bd2cf0fb8b585110f56e13f17307339f62b5966b60ae76c03ae701e0c_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n        mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n        mstore(add(memPtr, 32), \"ddress\")\n\n    }\n\n    function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n        store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n        end := add(pos, 64)\n    }\n\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_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_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(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_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e(memPtr) {\n\n        mstore(add(memPtr, 0), \"isTrustedForwarder: reverted\")\n\n    }\n\n    function abi_encode_t_stringliteral_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n        store_literal_in_memory_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e__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_29871498aacc097c93f180e11ad1fc7bbe7fd0af33ce4f55cda39c1be559cc5e_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function store_literal_in_memory_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325(memPtr) {\n\n        mstore(add(memPtr, 0), \"isTrustedForwarder: bad response\")\n\n    }\n\n    function abi_encode_t_stringliteral_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n        store_literal_in_memory_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325__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_8de434f38be4084093951d99ef6ad881eb532d2fda93e085bee354124c9fe325_to_t_string_memory_ptr_fromStack( tail)\n\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_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4(memPtr) {\n\n        mstore(add(memPtr, 0), \"invalid forwarder for recipient\")\n\n    }\n\n    function abi_encode_t_stringliteral_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n        store_literal_in_memory_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4__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_18a22d77ec00a6a6e3ef02db4f7f7b9054ded7d3fa47898d59b46e9844b2acb4_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n}\n","id":25,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"3617":[{"length":32,"start":4183},{"length":32,"start":5469}]},"linkReferences":{},"object":"6080604052600436106101fc5760003560e01c8063ad02b07d1161010d578063be37757a116100a0578063d4b839921161006f578063d4b83992146107fb578063da74222814610826578063df463a661461084f578063f2fde38b1461087a578063f9c002f7146108a35761031d565b8063be37757a14610765578063c4ae316814610790578063c5bb8758146107a7578063c91d956c146107d25761031d565b8063b039a88f116100dc578063b039a88f146106a7578063b5af090f146106d2578063b90b41cf1461070f578063bbdaa3c91461073a5761031d565b8063ad02b07d146105fe578063ad12e50e1461062a578063ad80e45114610655578063ae4f51cb1461067e5761031d565b8063715018a6116101905780637bb052641161015f5780637bb052641461052b5780637da0a877146105545780638da5cb5b1461057f578063921276ea146105aa578063a5dcd07b146105d55761031d565b8063715018a61461049757806374e861d6146104ae57806376fa01c3146104d9578063776d1a01146105025761031d565b80635c5e3db1116101cc5780635c5e3db1146103dd57806369fe0e2d146104085780636a326ab1146104315780636a8294181461045a5761031d565b8062be5dd4146103225780630ffb1d8b146103605780632afe31c1146103895780632d14c4b7146103b45761031d565b3661031d57600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102899061228a565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aa67c91934306040518363ffffffff1660e01b81526004016102ee91906122eb565b6000604051808303818588803b15801561030757600080fd5b505af115801561031b573d6000803e3d6000fd5b005b600080fd5b34801561032e57600080fd5b50610349600480360381019061034491906123d9565b6108ce565b604051610357929190612550565b60405180910390f35b34801561036c57600080fd5b50610387600480360381019061038291906125d8565b611276565b005b34801561039557600080fd5b5061039e611348565b6040516103ab9190612627565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d69190612680565b6113eb565b005b3480156103e957600080fd5b506103f2611485565b6040516103ff9190612627565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a91906126c0565b61148b565b005b34801561043d57600080fd5b50610458600480360381019061045391906126ed565b61149d565b005b34801561046657600080fd5b50610481600480360381019061047c9190612858565b611558565b60405161048e9190612627565b60405180910390f35b3480156104a357600080fd5b506104ac611623565b005b3480156104ba57600080fd5b506104c3611637565b6040516104d091906122eb565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb91906128d4565b611661565b005b34801561050e57600080fd5b50610529600480360381019061052491906126ed565b61193b565b005b34801561053757600080fd5b50610552600480360381019061054d91906129b6565b611987565b005b34801561056057600080fd5b506105696119d3565b60405161057691906122eb565b60405180910390f35b34801561058b57600080fd5b506105946119fd565b6040516105a191906122eb565b60405180910390f35b3480156105b657600080fd5b506105bf611a26565b6040516105cc9190612a27565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f79190612a49565b611a63565b005b34801561060a57600080fd5b50610613611b20565b604051610621929190612a92565b60405180910390f35b34801561063657600080fd5b5061063f611b51565b60405161064c9190612627565b60405180910390f35b34801561066157600080fd5b5061067c600480360381019061067791906126c0565b611b57565b005b34801561068a57600080fd5b506106a560048036038101906106a091906126c0565b611b69565b005b3480156106b357600080fd5b506106bc611b7b565b6040516106c99190612b1f565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906126ed565b611bc1565b6040516107069190612b3a565b60405180910390f35b34801561071b57600080fd5b50610724611c17565b6040516107319190612627565b60405180910390f35b34801561074657600080fd5b5061074f611c1d565b60405161075c9190612627565b60405180910390f35b34801561077157600080fd5b5061077a611c24565b6040516107879190612627565b60405180910390f35b34801561079c57600080fd5b506107a5611c2a565b005b3480156107b357600080fd5b506107bc611c5e565b6040516107c99190612627565b60405180910390f35b3480156107de57600080fd5b506107f960048036038101906107f491906126c0565b611c64565b005b34801561080757600080fd5b50610810611cb9565b60405161081d91906122eb565b60405180910390f35b34801561083257600080fd5b5061084d600480360381019061084891906126ed565b611cdf565b005b34801561085b57600080fd5b50610864611d2b565b6040516108719190612627565b60405180910390f35b34801561088657600080fd5b506108a1600480360381019061089c91906126ed565b611d3f565b005b3480156108af57600080fd5b506108b8611dc2565b6040516108c59190612627565b60405180910390f35b606060006108db88611a63565b600860149054906101000a900460ff161561092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092290612ba1565b60405180910390fd5b3688806000019061093c9190612bd0565b905060008980602001906109509190612bf8565b61095990612dc6565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260200160208101906109a791906126ed565b73ffffffffffffffffffffffffffffffffffffffff16146109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f490612e25565b60405180910390fd5b600080838060a00190610a109190612e45565b6004908092610a2193929190612eb2565b810190610a2e9190612eed565b91509150600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab590612f79565b60405180910390fd5b6000846000016020810190610ad391906126ed565b90506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610d0c5782600654610b5f9190612fc8565b8173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610bbc92919061301e565b602060405180830381865afa158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd919061305c565b1015610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c35906130d5565b60405180910390fd5b82600654610c4c9190612fc8565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610c8591906122eb565b602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc6919061305c565b1015610d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfe90613141565b60405180910390fd5b61104f565b6006548173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610d6c92919061301e565b602060405180830381865afa158015610d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad919061305c565b1015610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de5906131ad565b60405180910390fd5b6006548173ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401610e2a91906122eb565b602060405180830381865afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b919061305c565b1015610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390613219565b60405180910390fd5b6000849050838173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610f0f92919061301e565b602060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f50919061305c565b1015610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8890613285565b60405180910390fd5b838273ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610fcb91906122eb565b602060405180830381865afa158015610fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100c919061305c565b101561104d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611044906132f1565b60405180910390fd5b505b60006110e9857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e49190613326565b611dc9565b905060006110f78583611558565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e53548b8d8a6040518363ffffffff1660e01b815260040161115892919061345c565b602060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611199919061305c565b90508082116111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d4906134d8565b60405180910390fd5b60045489606001351015611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90613544565b60405180910390fd5b88600001602081019061123991906126ed565b818360405160200161124d93929190613564565b60405160208183030381529060405260019a509a50505050505050505050965096945050505050565b61127e611ebb565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e4906135e7565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113a591906122eb565b602060405180830381865afa1580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e6919061305c565b905090565b6113f3611ebb565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662f714ce83836040518363ffffffff1660e01b815260040161144f929190613616565b600060405180830381600087803b15801561146957600080fd5b505af115801561147d573d6000803e3d6000fd5b505050505050565b61290481565b611493611ebb565b8060068190555050565b6114a5611ebb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b9061368b565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d06ca61f85856040518363ffffffff1660e01b81526004016115b692919061375a565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115fc919061384d565b60018151811061160f5761160e613896565b5b602002602001015190508091505092915050565b61162b611ebb565b6116356000611f39565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611669611637565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613911565b60405180910390fd5b82611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d9061397d565b60405180910390fd5b6000806000878781019061172a919061399d565b9250925092506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16638e53548b600354896117839190612fc8565b886040518363ffffffff1660e01b81526004016117a1929190613baf565b602060405180830381865afa1580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e2919061305c565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161184191906122eb565b602060405180830381865afa15801561185e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611882919061305c565b90506000829050600081866118979190613bdf565b905060055481846118a89190613bdf565b10156118c05786915081866118bd9190613bdf565b90505b8473ffffffffffffffffffffffffffffffffffffffff1662f714ce828a6040518363ffffffff1660e01b81526004016118fa929190613616565b600060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b5050505050505050505050505050505050565b611943611ebb565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61198f611ebb565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280601e81526020017f322e322e302b6f70656e67736e2e746f6b656e2e697061796d61737465720000815250905090565b808060200190611a739190612bf8565b60a0016020810190611a8591906126ed565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90613c5f565b60405180910390fd5b611b1d81611ffd565b50565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654915091509091565b60035481565b611b5f611ebb565b8060048190555050565b611b71611ebb565b8060038190555050565b611b83612205565b604051806080016040528061c350620186a0611b9f9190612fc8565b8152602001620186a081526020016201adb08152602001612904815250905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61c35081565b6201adb081565b60045481565b611c32611ebb565b600860149054906101000a900460ff1615600860146101000a81548160ff021916908315150217905550565b60055481565b611c6c611ebb565b60008111611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca690613ccb565b60405180910390fd5b8060058190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ce7611ebb565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61c350620186a0611d3c9190612fc8565b81565b611d47611ebb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad90613d5d565b60405180910390fd5b611dbf81611f39565b50565b620186a081565b6060600267ffffffffffffffff811115611de657611de561271a565b5b604051908082528060200260200182016040528015611e145781602001602082028036833780820191505090505b5090508281600081518110611e2c57611e2b613896565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110611e7b57611e7a613896565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505092915050565b611ec36121fd565b73ffffffffffffffffffffffffffffffffffffffff16611ee16119fd565b73ffffffffffffffffffffffffffffffffffffffff1614611f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2e90613dc9565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808280600001906120109190612bd0565b602001602081019061202291906126ed565b73ffffffffffffffffffffffffffffffffffffffff1663572b6c0560e01b8480602001906120509190612bf8565b60a001602081019061206291906126ed565b60405160240161207291906122eb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516120dc9190613e25565b600060405180830381855afa9150503d8060008114612117576040519150601f19603f3d011682016040523d82523d6000602084013e61211c565b606091505b509150915081612161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215890613e88565b60405180910390fd5b60208151146121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90613ef4565b60405180910390fd5b808060200190518101906121b99190613f29565b6121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ef90613fa2565b60405180910390fd5b505050565b600033905090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600082825260208201905092915050565b7f72656c6179206875622061646472657373206e6f742073657400000000000000600082015250565b600061227460198361222d565b915061227f8261223e565b602082019050919050565b600060208201905081810360008301526122a381612267565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122d5826122aa565b9050919050565b6122e5816122ca565b82525050565b600060208201905061230060008301846122dc565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000604082840312156123355761233461231a565b5b81905092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126123635761236261233e565b5b8235905067ffffffffffffffff8111156123805761237f612343565b5b60208301915083600182028301111561239c5761239b612348565b5b9250929050565b6000819050919050565b6123b6816123a3565b81146123c157600080fd5b50565b6000813590506123d3816123ad565b92915050565b600080600080600080608087890312156123f6576123f5612310565b5b600087013567ffffffffffffffff81111561241457612413612315565b5b61242089828a0161231f565b965050602087013567ffffffffffffffff81111561244157612440612315565b5b61244d89828a0161234d565b9550955050604087013567ffffffffffffffff8111156124705761246f612315565b5b61247c89828a0161234d565b9350935050606061248f89828a016123c4565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b60005b838110156124d65780820151818401526020810190506124bb565b838111156124e5576000848401525b50505050565b6000601f19601f8301169050919050565b60006125078261249c565b61251181856124a7565b93506125218185602086016124b8565b61252a816124eb565b840191505092915050565b60008115159050919050565b61254a81612535565b82525050565b6000604082019050818103600083015261256a81856124fc565b90506125796020830184612541565b9392505050565b612589816122ca565b811461259457600080fd5b50565b6000813590506125a681612580565b92915050565b6125b581612535565b81146125c057600080fd5b50565b6000813590506125d2816125ac565b92915050565b600080604083850312156125ef576125ee612310565b5b60006125fd85828601612597565b925050602061260e858286016125c3565b9150509250929050565b612621816123a3565b82525050565b600060208201905061263c6000830184612618565b92915050565b600061264d826122aa565b9050919050565b61265d81612642565b811461266857600080fd5b50565b60008135905061267a81612654565b92915050565b6000806040838503121561269757612696612310565b5b60006126a5858286016123c4565b92505060206126b68582860161266b565b9150509250929050565b6000602082840312156126d6576126d5612310565b5b60006126e4848285016123c4565b91505092915050565b60006020828403121561270357612702612310565b5b600061271184828501612597565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612752826124eb565b810181811067ffffffffffffffff821117156127715761277061271a565b5b80604052505050565b6000612784612306565b90506127908282612749565b919050565b600067ffffffffffffffff8211156127b0576127af61271a565b5b602082029050602081019050919050565b60006127d46127cf84612795565b61277a565b905080838252602082019050602084028301858111156127f7576127f6612348565b5b835b81811015612820578061280c8882612597565b8452602084019350506020810190506127f9565b5050509392505050565b600082601f83011261283f5761283e61233e565b5b813561284f8482602086016127c1565b91505092915050565b6000806040838503121561286f5761286e612310565b5b600061287d858286016123c4565b925050602083013567ffffffffffffffff81111561289e5761289d612315565b5b6128aa8582860161282a565b9150509250929050565b600061010082840312156128cb576128ca61231a565b5b81905092915050565b6000806000806000608086880312156128f0576128ef612310565b5b600086013567ffffffffffffffff81111561290e5761290d612315565b5b61291a8882890161234d565b9550955050602061292d888289016125c3565b935050604061293e888289016123c4565b925050606086013567ffffffffffffffff81111561295f5761295e612315565b5b61296b888289016128b4565b9150509295509295909350565b6000612983826122ca565b9050919050565b61299381612978565b811461299e57600080fd5b50565b6000813590506129b08161298a565b92915050565b6000602082840312156129cc576129cb612310565b5b60006129da848285016129a1565b91505092915050565b600081519050919050565b60006129f9826129e3565b612a03818561222d565b9350612a138185602086016124b8565b612a1c816124eb565b840191505092915050565b60006020820190508181036000830152612a4181846129ee565b905092915050565b600060208284031215612a5f57612a5e612310565b5b600082013567ffffffffffffffff811115612a7d57612a7c612315565b5b612a898482850161231f565b91505092915050565b6000604082019050612aa760008301856122dc565b612ab46020830184612618565b9392505050565b612ac4816123a3565b82525050565b608082016000820151612ae06000850182612abb565b506020820151612af36020850182612abb565b506040820151612b066040850182612abb565b506060820151612b196060850182612abb565b50505050565b6000608082019050612b346000830184612aca565b92915050565b6000602082019050612b4f6000830184612541565b92915050565b7f5377617020706175736564000000000000000000000000000000000000000000600082015250565b6000612b8b600b8361222d565b9150612b9682612b55565b602082019050919050565b60006020820190508181036000830152612bba81612b7e565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160e003833603038112612bec57612beb612bc1565b5b80830191505092915050565b60008235600161010003833603038112612c1557612c14612bc1565b5b80830191505092915050565b600080fd5b600080fd5b600080fd5b600067ffffffffffffffff821115612c4b57612c4a61271a565b5b612c54826124eb565b9050602081019050919050565b82818337600083830152505050565b6000612c83612c7e84612c30565b61277a565b905082815260208101848484011115612c9f57612c9e612c2b565b5b612caa848285612c61565b509392505050565b600082601f830112612cc757612cc661233e565b5b8135612cd7848260208601612c70565b91505092915050565b60006101008284031215612cf757612cf6612c21565b5b612d0261010061277a565b90506000612d12848285016123c4565b6000830152506020612d26848285016123c4565b6020830152506040612d3a848285016123c4565b6040830152506060612d4e84828501612597565b6060830152506080612d6284828501612597565b60808301525060a0612d7684828501612597565b60a08301525060c082013567ffffffffffffffff811115612d9a57612d99612c26565b5b612da684828501612cb2565b60c08301525060e0612dba848285016123c4565b60e08301525092915050565b6000612dd23683612ce0565b9050919050565b7f556e6b6e6f776e20746172676574000000000000000000000000000000000000600082015250565b6000612e0f600e8361222d565b9150612e1a82612dd9565b602082019050919050565b60006020820190508181036000830152612e3e81612e02565b9050919050565b60008083356001602003843603038112612e6257612e61612bc1565b5b80840192508235915067ffffffffffffffff821115612e8457612e83612bc6565b5b602083019250600182023603831315612ea057612e9f612bcb565b5b509250929050565b600080fd5b600080fd5b60008085851115612ec657612ec5612ea8565b5b83861115612ed757612ed6612ead565b5b6001850283019150848603905094509492505050565b60008060408385031215612f0457612f03612310565b5b6000612f128582860161266b565b9250506020612f23858286016123c4565b9150509250929050565b7f546f6b656e206e6f742077686974656c69737465640000000000000000000000600082015250565b6000612f6360158361222d565b9150612f6e82612f2d565b602082019050919050565b60006020820190508181036000830152612f9281612f56565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fd3826123a3565b9150612fde836123a3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561301357613012612f99565b5b828201905092915050565b600060408201905061303360008301856122dc565b61304060208301846122dc565b9392505050565b600081519050613056816123ad565b92915050565b60006020828403121561307257613071612310565b5b600061308084828501613047565b91505092915050565b7f4665652b616d6f756e743a204e6f7420656e6f75676820616c6c6f77616e6365600082015250565b60006130bf60208361222d565b91506130ca82613089565b602082019050919050565b600060208201905081810360008301526130ee816130b2565b9050919050565b7f4665652b616d6f756e743a204e6f7420656e6f7567682062616c616e63650000600082015250565b600061312b601e8361222d565b9150613136826130f5565b602082019050919050565b6000602082019050818103600083015261315a8161311e565b9050919050565b7f4665653a204e6f7420656e6f75676820616c6c6f77616e636500000000000000600082015250565b600061319760198361222d565b91506131a282613161565b602082019050919050565b600060208201905081810360008301526131c68161318a565b9050919050565b7f4665653a204e6f7420656e6f7567682062616c616e6365000000000000000000600082015250565b600061320360178361222d565b915061320e826131cd565b602082019050919050565b60006020820190508181036000830152613232816131f6565b9050919050565b7f4e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000600082015250565b600061326f60148361222d565b915061327a82613239565b602082019050919050565b6000602082019050818103600083015261329e81613262565b9050919050565b7f4e6f7420656e6f7567682062616c616e63650000000000000000000000000000600082015250565b60006132db60128361222d565b91506132e6826132a5565b602082019050919050565b6000602082019050818103600083015261330a816132ce565b9050919050565b60008151905061332081612580565b92915050565b60006020828403121561333c5761333b612310565b5b600061334a84828501613311565b91505092915050565b61335c816122ca565b82525050565b600082825260208201905092915050565b600061337e8261249c565b6133888185613362565b93506133988185602086016124b8565b6133a1816124eb565b840191505092915050565b6000610100830160008301516133c56000860182612abb565b5060208301516133d86020860182612abb565b5060408301516133eb6040860182612abb565b5060608301516133fe6060860182613353565b5060808301516134116080860182613353565b5060a083015161342460a0860182613353565b5060c083015184820360c086015261343c8282613373565b91505060e083015161345160e0860182612abb565b508091505092915050565b60006040820190506134716000830185612618565b818103602083015261348381846133ac565b90509392505050565b7f4e6f7420656e6f75676820746f2070617920666f722074780000000000000000600082015250565b60006134c260188361222d565b91506134cd8261348c565b602082019050919050565b600060208201905081810360008301526134f1816134b5565b9050919050565b7f4e6f7420656e6f75676820676173000000000000000000000000000000000000600082015250565b600061352e600e8361222d565b9150613539826134f8565b602082019050919050565b6000602082019050818103600083015261355d81613521565b9050919050565b600060608201905061357960008301866122dc565b6135866020830185612618565b6135936040830184612618565b949350505050565b7f546f6b656e206164647265737320697320300000000000000000000000000000600082015250565b60006135d160128361222d565b91506135dc8261359b565b602082019050919050565b60006020820190508181036000830152613600816135c4565b9050919050565b61361081612642565b82525050565b600060408201905061362b6000830185612618565b6136386020830184613607565b9392505050565b7f57726f6e67205061796d656e7420546f6b656e00000000000000000000000000600082015250565b600061367560138361222d565b91506136808261363f565b602082019050919050565b600060208201905081810360008301526136a481613668565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006136e38383613353565b60208301905092915050565b6000602082019050919050565b6000613707826136ab565b61371181856136b6565b935061371c836136c7565b8060005b8381101561374d57815161373488826136d7565b975061373f836136ef565b925050600181019050613720565b5085935050505092915050565b600060408201905061376f6000830185612618565b818103602083015261378181846136fc565b90509392505050565b600067ffffffffffffffff8211156137a5576137a461271a565b5b602082029050602081019050919050565b60006137c96137c48461378a565b61277a565b905080838252602082019050602084028301858111156137ec576137eb612348565b5b835b8181101561381557806138018882613047565b8452602084019350506020810190506137ee565b5050509392505050565b600082601f8301126138345761383361233e565b5b81516138448482602086016137b6565b91505092915050565b60006020828403121561386357613862612310565b5b600082015167ffffffffffffffff81111561388157613880612315565b5b61388d8482850161381f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f63616e206f6e6c792062652063616c6c65642062792052656c61794875620000600082015250565b60006138fb601e8361222d565b9150613906826138c5565b602082019050919050565b6000602082019050818103600083015261392a816138ee565b9050919050565b7f4e6f207375636365737300000000000000000000000000000000000000000000600082015250565b6000613967600a8361222d565b915061397282613931565b602082019050919050565b600060208201905081810360008301526139968161395a565b9050919050565b6000806000606084860312156139b6576139b5612310565b5b60006139c48682870161266b565b93505060206139d5868287016123c4565b92505060406139e6868287016123c4565b9150509250925092565b60006139ff60208401846123c4565b905092915050565b6000613a166020840184612597565b905092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613a4a57613a49613a28565b5b83810192508235915060208301925067ffffffffffffffff821115613a7257613a71613a1e565b5b600182023603841315613a8857613a87613a23565b5b509250929050565b6000613a9c8385613362565b9350613aa9838584612c61565b613ab2836124eb565b840190509392505050565b60006101008301613ad160008401846139f0565b613ade6000860182612abb565b50613aec60208401846139f0565b613af96020860182612abb565b50613b0760408401846139f0565b613b146040860182612abb565b50613b226060840184613a07565b613b2f6060860182613353565b50613b3d6080840184613a07565b613b4a6080860182613353565b50613b5860a0840184613a07565b613b6560a0860182613353565b50613b7360c0840184613a2d565b85830360c0870152613b86838284613a90565b92505050613b9760e08401846139f0565b613ba460e0860182612abb565b508091505092915050565b6000604082019050613bc46000830185612618565b8181036020830152613bd68184613abd565b90509392505050565b6000613bea826123a3565b9150613bf5836123a3565b925082821015613c0857613c07612f99565b5b828203905092915050565b7f466f72776172646572206973206e6f7420747275737465640000000000000000600082015250565b6000613c4960188361222d565b9150613c5482613c13565b602082019050919050565b60006020820190508181036000830152613c7881613c3c565b9050919050565b7f57726f6e67206d696e2062616c616e6365000000000000000000000000000000600082015250565b6000613cb560118361222d565b9150613cc082613c7f565b602082019050919050565b60006020820190508181036000830152613ce481613ca8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d4760268361222d565b9150613d5282613ceb565b604082019050919050565b60006020820190508181036000830152613d7681613d3a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613db360208361222d565b9150613dbe82613d7d565b602082019050919050565b60006020820190508181036000830152613de281613da6565b9050919050565b600081905092915050565b6000613dff8261249c565b613e098185613de9565b9350613e198185602086016124b8565b80840191505092915050565b6000613e318284613df4565b915081905092915050565b7f697354727573746564466f727761726465723a20726576657274656400000000600082015250565b6000613e72601c8361222d565b9150613e7d82613e3c565b602082019050919050565b60006020820190508181036000830152613ea181613e65565b9050919050565b7f697354727573746564466f727761726465723a2062616420726573706f6e7365600082015250565b6000613ede60208361222d565b9150613ee982613ea8565b602082019050919050565b60006020820190508181036000830152613f0d81613ed1565b9050919050565b600081519050613f23816125ac565b92915050565b600060208284031215613f3f57613f3e612310565b5b6000613f4d84828501613f14565b91505092915050565b7f696e76616c696420666f7277617264657220666f7220726563697069656e7400600082015250565b6000613f8c601f8361222d565b9150613f9782613f56565b602082019050919050565b60006020820190508181036000830152613fbb81613f7f565b905091905056fea2646970667358221220210b401e7864f800d193f50c378824a320093824fcc07f7f1d2612a6a35e435964736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1FC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAD02B07D GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xBE37757A GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xD4B83992 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xD4B83992 EQ PUSH2 0x7FB JUMPI DUP1 PUSH4 0xDA742228 EQ PUSH2 0x826 JUMPI DUP1 PUSH4 0xDF463A66 EQ PUSH2 0x84F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0xF9C002F7 EQ PUSH2 0x8A3 JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0xBE37757A EQ PUSH2 0x765 JUMPI DUP1 PUSH4 0xC4AE3168 EQ PUSH2 0x790 JUMPI DUP1 PUSH4 0xC5BB8758 EQ PUSH2 0x7A7 JUMPI DUP1 PUSH4 0xC91D956C EQ PUSH2 0x7D2 JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0xB039A88F GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xB039A88F EQ PUSH2 0x6A7 JUMPI DUP1 PUSH4 0xB5AF090F EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0xB90B41CF EQ PUSH2 0x70F JUMPI DUP1 PUSH4 0xBBDAA3C9 EQ PUSH2 0x73A JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0xAD02B07D EQ PUSH2 0x5FE JUMPI DUP1 PUSH4 0xAD12E50E EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0xAD80E451 EQ PUSH2 0x655 JUMPI DUP1 PUSH4 0xAE4F51CB EQ PUSH2 0x67E JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0x190 JUMPI DUP1 PUSH4 0x7BB05264 GT PUSH2 0x15F JUMPI DUP1 PUSH4 0x7BB05264 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x7DA0A877 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0x921276EA EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0xA5DCD07B EQ PUSH2 0x5D5 JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x74E861D6 EQ PUSH2 0x4AE JUMPI DUP1 PUSH4 0x76FA01C3 EQ PUSH2 0x4D9 JUMPI DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x502 JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH4 0x5C5E3DB1 GT PUSH2 0x1CC JUMPI DUP1 PUSH4 0x5C5E3DB1 EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x69FE0E2D EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x6A326AB1 EQ PUSH2 0x431 JUMPI DUP1 PUSH4 0x6A829418 EQ PUSH2 0x45A JUMPI PUSH2 0x31D JUMP JUMPDEST DUP1 PUSH3 0xBE5DD4 EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0xFFB1D8B EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0x2AFE31C1 EQ PUSH2 0x389 JUMPI DUP1 PUSH4 0x2D14C4B7 EQ PUSH2 0x3B4 JUMPI PUSH2 0x31D JUMP JUMPDEST CALLDATASIZE PUSH2 0x31D JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x292 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x289 SWAP1 PUSH2 0x228A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAA67C919 CALLVALUE ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EE SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x349 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x344 SWAP2 SWAP1 PUSH2 0x23D9 JUMP JUMPDEST PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x357 SWAP3 SWAP2 SWAP1 PUSH2 0x2550 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x387 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x382 SWAP2 SWAP1 PUSH2 0x25D8 JUMP JUMPDEST PUSH2 0x1276 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39E PUSH2 0x1348 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AB SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3D6 SWAP2 SWAP1 PUSH2 0x2680 JUMP JUMPDEST PUSH2 0x13EB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F2 PUSH2 0x1485 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FF SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x42F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x42A SWAP2 SWAP1 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x148B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x458 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x149D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x481 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x47C SWAP2 SWAP1 PUSH2 0x2858 JUMP JUMPDEST PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x48E SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4AC PUSH2 0x1623 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C3 PUSH2 0x1637 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4D0 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x500 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4FB SWAP2 SWAP1 PUSH2 0x28D4 JUMP JUMPDEST PUSH2 0x1661 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x529 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x524 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x193B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x552 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x29B6 JUMP JUMPDEST PUSH2 0x1987 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x569 PUSH2 0x19D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x594 PUSH2 0x19FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A1 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5BF PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5CC SWAP2 SWAP1 PUSH2 0x2A27 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5FC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5F7 SWAP2 SWAP1 PUSH2 0x2A49 JUMP JUMPDEST PUSH2 0x1A63 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x613 PUSH2 0x1B20 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x621 SWAP3 SWAP2 SWAP1 PUSH2 0x2A92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x636 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x63F PUSH2 0x1B51 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x64C SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x661 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x67C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x677 SWAP2 SWAP1 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x1B57 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6A0 SWAP2 SWAP1 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x1B69 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6BC PUSH2 0x1B7B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0x2B1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6F4 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x1BC1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x706 SWAP2 SWAP1 PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x724 PUSH2 0x1C17 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x731 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x746 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74F PUSH2 0x1C1D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x75C SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x77A PUSH2 0x1C24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x787 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7A5 PUSH2 0x1C2A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7BC PUSH2 0x1C5E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x7C9 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x7F4 SWAP2 SWAP1 PUSH2 0x26C0 JUMP JUMPDEST PUSH2 0x1C64 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x810 PUSH2 0x1CB9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81D SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x84D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x848 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x1CDF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x864 PUSH2 0x1D2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x871 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x89C SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH2 0x1D3F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B8 PUSH2 0x1DC2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8C5 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x8DB DUP9 PUSH2 0x1A63 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x92B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x922 SWAP1 PUSH2 0x2BA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLDATASIZE DUP9 DUP1 PUSH1 0x0 ADD SWAP1 PUSH2 0x93C SWAP2 SWAP1 PUSH2 0x2BD0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x950 SWAP2 SWAP1 PUSH2 0x2BF8 JUMP JUMPDEST PUSH2 0x959 SWAP1 PUSH2 0x2DC6 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x9A7 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9F4 SWAP1 PUSH2 0x2E25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 PUSH1 0xA0 ADD SWAP1 PUSH2 0xA10 SWAP2 SWAP1 PUSH2 0x2E45 JUMP JUMPDEST PUSH1 0x4 SWAP1 DUP1 SWAP3 PUSH2 0xA21 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2EB2 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xA2E SWAP2 SWAP1 PUSH2 0x2EED JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x9 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xABE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAB5 SWAP1 PUSH2 0x2F79 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xAD3 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD0C JUMPI DUP3 PUSH1 0x6 SLOAD PUSH2 0xB5F SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E DUP5 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBBC SWAP3 SWAP2 SWAP1 PUSH2 0x301E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBD9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xBFD SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xC3E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC35 SWAP1 PUSH2 0x30D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x6 SLOAD PUSH2 0xC4C SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC85 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xCC6 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xD07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCFE SWAP1 PUSH2 0x3141 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x104F JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E DUP5 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD6C SWAP3 SWAP2 SWAP1 PUSH2 0x301E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xDAD SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xDEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE5 SWAP1 PUSH2 0x31AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE2A SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE47 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xE6B SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xEAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEA3 SWAP1 PUSH2 0x3219 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 SWAP1 POP DUP4 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E DUP6 PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0F SWAP3 SWAP2 SWAP1 PUSH2 0x301E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0xF50 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0xF91 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF88 SWAP1 PUSH2 0x3285 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFCB SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFE8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x100C SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST LT ISZERO PUSH2 0x104D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1044 SWAP1 PUSH2 0x32F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH2 0x10E9 DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD5C4648 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 0x10C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x10E4 SWAP2 SWAP1 PUSH2 0x3326 JUMP JUMPDEST PUSH2 0x1DC9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x10F7 DUP6 DUP4 PUSH2 0x1558 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8E53548B DUP14 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1158 SWAP3 SWAP2 SWAP1 PUSH2 0x345C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1175 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1199 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT PUSH2 0x11DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11D4 SWAP1 PUSH2 0x34D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD DUP10 PUSH1 0x60 ADD CALLDATALOAD LT ISZERO PUSH2 0x1226 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x121D SWAP1 PUSH2 0x3544 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 PUSH1 0x0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1239 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST DUP2 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x124D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3564 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x1 SWAP11 POP SWAP11 POP POP POP POP POP POP POP POP POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x127E PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x12ED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12E4 SWAP1 PUSH2 0x35E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x9 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13A5 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x13E6 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x13F3 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xF714CE DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x144F SWAP3 SWAP2 SWAP1 PUSH2 0x3616 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x147D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2904 DUP2 JUMP JUMPDEST PUSH2 0x1493 PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x6 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x14A5 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1514 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x150B SWAP1 PUSH2 0x368B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x8 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD06CA61F DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15B6 SWAP3 SWAP2 SWAP1 PUSH2 0x375A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15FC SWAP2 SWAP1 PUSH2 0x384D JUMP JUMPDEST PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x160F JUMPI PUSH2 0x160E PUSH2 0x3896 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x162B PUSH2 0x1EBB JUMP JUMPDEST PUSH2 0x1635 PUSH1 0x0 PUSH2 0x1F39 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1669 PUSH2 0x1637 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x16D6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16CD SWAP1 PUSH2 0x3911 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x1716 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x170D SWAP1 PUSH2 0x397D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP8 DUP8 DUP2 ADD SWAP1 PUSH2 0x172A SWAP2 SWAP1 PUSH2 0x399D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8E53548B PUSH1 0x3 SLOAD DUP10 PUSH2 0x1783 SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP9 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17A1 SWAP3 SWAP2 SWAP1 PUSH2 0x3BAF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x17E2 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1841 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x185E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x1882 SWAP2 SWAP1 PUSH2 0x305C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 DUP2 DUP7 PUSH2 0x1897 SWAP2 SWAP1 PUSH2 0x3BDF JUMP JUMPDEST SWAP1 POP PUSH1 0x5 SLOAD DUP2 DUP5 PUSH2 0x18A8 SWAP2 SWAP1 PUSH2 0x3BDF JUMP JUMPDEST LT ISZERO PUSH2 0x18C0 JUMPI DUP7 SWAP2 POP DUP2 DUP7 PUSH2 0x18BD SWAP2 SWAP1 PUSH2 0x3BDF JUMP JUMPDEST SWAP1 POP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xF714CE DUP3 DUP11 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18FA SWAP3 SWAP2 SWAP1 PUSH2 0x3616 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1928 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1943 PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x198F PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x322E322E302B6F70656E67736E2E746F6B656E2E697061796D61737465720000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1A73 SWAP2 SWAP1 PUSH2 0x2BF8 JUMP JUMPDEST PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1A85 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1B14 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B0B SWAP1 PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1B1D DUP2 PUSH2 0x1FFD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x6 SLOAD SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1B5F PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x1B71 PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x3 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x1B83 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xC350 PUSH3 0x186A0 PUSH2 0x1B9F SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x186A0 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x1ADB0 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2904 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC350 DUP2 JUMP JUMPDEST PUSH3 0x1ADB0 DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1C32 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x8 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH1 0x8 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1C6C PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x1CAF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CA6 SWAP1 PUSH2 0x3CCB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1CE7 PUSH2 0x1EBB JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0xC350 PUSH3 0x186A0 PUSH2 0x1D3C SWAP2 SWAP1 PUSH2 0x2FC8 JUMP JUMPDEST DUP2 JUMP JUMPDEST PUSH2 0x1D47 PUSH2 0x1EBB JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1DB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DAD SWAP1 PUSH2 0x3D5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1DBF DUP2 PUSH2 0x1F39 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x186A0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DE6 JUMPI PUSH2 0x1DE5 PUSH2 0x271A JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E14 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1E2C JUMPI PUSH2 0x1E2B PUSH2 0x3896 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1E7B JUMPI PUSH2 0x1E7A PUSH2 0x3896 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1EC3 PUSH2 0x21FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1EE1 PUSH2 0x19FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F37 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F2E SWAP1 PUSH2 0x3DC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x0 ADD SWAP1 PUSH2 0x2010 SWAP2 SWAP1 PUSH2 0x2BD0 JUMP JUMPDEST PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2022 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x572B6C05 PUSH1 0xE0 SHL DUP5 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2050 SWAP2 SWAP1 PUSH2 0x2BF8 JUMP JUMPDEST PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2062 SWAP2 SWAP1 PUSH2 0x26ED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2072 SWAP2 SWAP1 PUSH2 0x22EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x20DC SWAP2 SWAP1 PUSH2 0x3E25 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2117 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x211C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2161 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2158 SWAP1 PUSH2 0x3E88 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP2 MLOAD EQ PUSH2 0x21A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x219C SWAP1 PUSH2 0x3EF4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21B9 SWAP2 SWAP1 PUSH2 0x3F29 JUMP JUMPDEST PUSH2 0x21F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21EF SWAP1 PUSH2 0x3FA2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x72656C6179206875622061646472657373206E6F742073657400000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2274 PUSH1 0x19 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x227F DUP3 PUSH2 0x223E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x22A3 DUP2 PUSH2 0x2267 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22D5 DUP3 PUSH2 0x22AA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x22E5 DUP2 PUSH2 0x22CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2300 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x22DC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2335 JUMPI PUSH2 0x2334 PUSH2 0x231A JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2363 JUMPI PUSH2 0x2362 PUSH2 0x233E JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2380 JUMPI PUSH2 0x237F PUSH2 0x2343 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x239C JUMPI PUSH2 0x239B PUSH2 0x2348 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x23B6 DUP2 PUSH2 0x23A3 JUMP JUMPDEST DUP2 EQ PUSH2 0x23C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x23D3 DUP2 PUSH2 0x23AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x23F6 JUMPI PUSH2 0x23F5 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2414 JUMPI PUSH2 0x2413 PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x2420 DUP10 DUP3 DUP11 ADD PUSH2 0x231F JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2441 JUMPI PUSH2 0x2440 PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x244D DUP10 DUP3 DUP11 ADD PUSH2 0x234D JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2470 JUMPI PUSH2 0x246F PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x247C DUP10 DUP3 DUP11 ADD PUSH2 0x234D JUMP JUMPDEST SWAP4 POP SWAP4 POP POP PUSH1 0x60 PUSH2 0x248F DUP10 DUP3 DUP11 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24D6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x24BB JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x24E5 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2507 DUP3 PUSH2 0x249C JUMP JUMPDEST PUSH2 0x2511 DUP2 DUP6 PUSH2 0x24A7 JUMP JUMPDEST SWAP4 POP PUSH2 0x2521 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24B8 JUMP JUMPDEST PUSH2 0x252A DUP2 PUSH2 0x24EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x254A DUP2 PUSH2 0x2535 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x256A DUP2 DUP6 PUSH2 0x24FC JUMP JUMPDEST SWAP1 POP PUSH2 0x2579 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2541 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2589 DUP2 PUSH2 0x22CA JUMP JUMPDEST DUP2 EQ PUSH2 0x2594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x25A6 DUP2 PUSH2 0x2580 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x25B5 DUP2 PUSH2 0x2535 JUMP JUMPDEST DUP2 EQ PUSH2 0x25C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x25D2 DUP2 PUSH2 0x25AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25EF JUMPI PUSH2 0x25EE PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x25FD DUP6 DUP3 DUP7 ADD PUSH2 0x2597 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x260E DUP6 DUP3 DUP7 ADD PUSH2 0x25C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2621 DUP2 PUSH2 0x23A3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x263C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2618 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x264D DUP3 PUSH2 0x22AA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x265D DUP2 PUSH2 0x2642 JUMP JUMPDEST DUP2 EQ PUSH2 0x2668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x267A DUP2 PUSH2 0x2654 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2697 JUMPI PUSH2 0x2696 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x26A5 DUP6 DUP3 DUP7 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x26B6 DUP6 DUP3 DUP7 ADD PUSH2 0x266B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26D6 JUMPI PUSH2 0x26D5 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x26E4 DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2703 JUMPI PUSH2 0x2702 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2711 DUP5 DUP3 DUP6 ADD PUSH2 0x2597 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2752 DUP3 PUSH2 0x24EB JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2771 JUMPI PUSH2 0x2770 PUSH2 0x271A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2784 PUSH2 0x2306 JUMP JUMPDEST SWAP1 POP PUSH2 0x2790 DUP3 DUP3 PUSH2 0x2749 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x27B0 JUMPI PUSH2 0x27AF PUSH2 0x271A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D4 PUSH2 0x27CF DUP5 PUSH2 0x2795 JUMP JUMPDEST PUSH2 0x277A JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x27F7 JUMPI PUSH2 0x27F6 PUSH2 0x2348 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2820 JUMPI DUP1 PUSH2 0x280C DUP9 DUP3 PUSH2 0x2597 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x27F9 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x283F JUMPI PUSH2 0x283E PUSH2 0x233E JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x284F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x27C1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x286F JUMPI PUSH2 0x286E PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x287D DUP6 DUP3 DUP7 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x289E JUMPI PUSH2 0x289D PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x28AA DUP6 DUP3 DUP7 ADD PUSH2 0x282A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28CB JUMPI PUSH2 0x28CA PUSH2 0x231A JUMP JUMPDEST JUMPDEST DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x28F0 JUMPI PUSH2 0x28EF PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x290E JUMPI PUSH2 0x290D PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x291A DUP9 DUP3 DUP10 ADD PUSH2 0x234D JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 PUSH2 0x292D DUP9 DUP3 DUP10 ADD PUSH2 0x25C3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x293E DUP9 DUP3 DUP10 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x295F JUMPI PUSH2 0x295E PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x296B DUP9 DUP3 DUP10 ADD PUSH2 0x28B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2983 DUP3 PUSH2 0x22CA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2993 DUP2 PUSH2 0x2978 JUMP JUMPDEST DUP2 EQ PUSH2 0x299E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x29B0 DUP2 PUSH2 0x298A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29CC JUMPI PUSH2 0x29CB PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x29DA DUP5 DUP3 DUP6 ADD PUSH2 0x29A1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F9 DUP3 PUSH2 0x29E3 JUMP JUMPDEST PUSH2 0x2A03 DUP2 DUP6 PUSH2 0x222D JUMP JUMPDEST SWAP4 POP PUSH2 0x2A13 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24B8 JUMP JUMPDEST PUSH2 0x2A1C DUP2 PUSH2 0x24EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2A41 DUP2 DUP5 PUSH2 0x29EE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A5F JUMPI PUSH2 0x2A5E PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A7D JUMPI PUSH2 0x2A7C PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x2A89 DUP5 DUP3 DUP6 ADD PUSH2 0x231F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2AA7 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x22DC JUMP JUMPDEST PUSH2 0x2AB4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2618 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2AC4 DUP2 PUSH2 0x23A3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x80 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x2AE0 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x2AF3 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x2B06 PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x2B19 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2B34 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2ACA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2B4F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2541 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x5377617020706175736564000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B8B PUSH1 0xB DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x2B96 DUP3 PUSH2 0x2B55 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2BBA DUP2 PUSH2 0x2B7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0xE0 SUB DUP4 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x2BEC JUMPI PUSH2 0x2BEB PUSH2 0x2BC1 JUMP JUMPDEST JUMPDEST DUP1 DUP4 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH1 0x1 PUSH2 0x100 SUB DUP4 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x2C15 JUMPI PUSH2 0x2C14 PUSH2 0x2BC1 JUMP JUMPDEST JUMPDEST DUP1 DUP4 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2C4B JUMPI PUSH2 0x2C4A PUSH2 0x271A JUMP JUMPDEST JUMPDEST PUSH2 0x2C54 DUP3 PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C83 PUSH2 0x2C7E DUP5 PUSH2 0x2C30 JUMP JUMPDEST PUSH2 0x277A JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x2C9F JUMPI PUSH2 0x2C9E PUSH2 0x2C2B JUMP JUMPDEST JUMPDEST PUSH2 0x2CAA DUP5 DUP3 DUP6 PUSH2 0x2C61 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2CC7 JUMPI PUSH2 0x2CC6 PUSH2 0x233E JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2CD7 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2C70 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CF7 JUMPI PUSH2 0x2CF6 PUSH2 0x2C21 JUMP JUMPDEST JUMPDEST PUSH2 0x2D02 PUSH2 0x100 PUSH2 0x277A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2D12 DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x2D26 DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 PUSH2 0x2D3A DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 PUSH2 0x2D4E DUP5 DUP3 DUP6 ADD PUSH2 0x2597 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0x80 PUSH2 0x2D62 DUP5 DUP3 DUP6 ADD PUSH2 0x2597 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP PUSH1 0xA0 PUSH2 0x2D76 DUP5 DUP3 DUP6 ADD PUSH2 0x2597 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2D9A JUMPI PUSH2 0x2D99 PUSH2 0x2C26 JUMP JUMPDEST JUMPDEST PUSH2 0x2DA6 DUP5 DUP3 DUP6 ADD PUSH2 0x2CB2 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD MSTORE POP PUSH1 0xE0 PUSH2 0x2DBA DUP5 DUP3 DUP6 ADD PUSH2 0x23C4 JUMP JUMPDEST PUSH1 0xE0 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DD2 CALLDATASIZE DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x556E6B6E6F776E20746172676574000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E0F PUSH1 0xE DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x2E1A DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2E3E DUP2 PUSH2 0x2E02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x2E62 JUMPI PUSH2 0x2E61 PUSH2 0x2BC1 JUMP JUMPDEST JUMPDEST DUP1 DUP5 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2E84 JUMPI PUSH2 0x2E83 PUSH2 0x2BC6 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP4 SGT ISZERO PUSH2 0x2EA0 JUMPI PUSH2 0x2E9F PUSH2 0x2BCB JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2EC6 JUMPI PUSH2 0x2EC5 PUSH2 0x2EA8 JUMP JUMPDEST JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2ED7 JUMPI PUSH2 0x2ED6 PUSH2 0x2EAD JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP6 MUL DUP4 ADD SWAP2 POP DUP5 DUP7 SUB SWAP1 POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F04 JUMPI PUSH2 0x2F03 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F12 DUP6 DUP3 DUP7 ADD PUSH2 0x266B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2F23 DUP6 DUP3 DUP7 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x546F6B656E206E6F742077686974656C69737465640000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F63 PUSH1 0x15 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x2F6E DUP3 PUSH2 0x2F2D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2F92 DUP2 PUSH2 0x2F56 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2FD3 DUP3 PUSH2 0x23A3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2FDE DUP4 PUSH2 0x23A3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x3013 JUMPI PUSH2 0x3012 PUSH2 0x2F99 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3033 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x22DC JUMP JUMPDEST PUSH2 0x3040 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x22DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3056 DUP2 PUSH2 0x23AD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3072 JUMPI PUSH2 0x3071 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3080 DUP5 DUP3 DUP6 ADD PUSH2 0x3047 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4665652B616D6F756E743A204E6F7420656E6F75676820616C6C6F77616E6365 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30BF PUSH1 0x20 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x30CA DUP3 PUSH2 0x3089 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x30EE DUP2 PUSH2 0x30B2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4665652B616D6F756E743A204E6F7420656E6F7567682062616C616E63650000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x312B PUSH1 0x1E DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3136 DUP3 PUSH2 0x30F5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x315A DUP2 PUSH2 0x311E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4665653A204E6F7420656E6F75676820616C6C6F77616E636500000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3197 PUSH1 0x19 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x31A2 DUP3 PUSH2 0x3161 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x31C6 DUP2 PUSH2 0x318A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4665653A204E6F7420656E6F7567682062616C616E6365000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3203 PUSH1 0x17 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x320E DUP3 PUSH2 0x31CD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3232 DUP2 PUSH2 0x31F6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F75676820616C6C6F77616E6365000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x326F PUSH1 0x14 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x327A DUP3 PUSH2 0x3239 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x329E DUP2 PUSH2 0x3262 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F7567682062616C616E63650000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32DB PUSH1 0x12 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x32E6 DUP3 PUSH2 0x32A5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x330A DUP2 PUSH2 0x32CE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3320 DUP2 PUSH2 0x2580 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x333C JUMPI PUSH2 0x333B PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x334A DUP5 DUP3 DUP6 ADD PUSH2 0x3311 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x335C DUP2 PUSH2 0x22CA JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x337E DUP3 PUSH2 0x249C JUMP JUMPDEST PUSH2 0x3388 DUP2 DUP6 PUSH2 0x3362 JUMP JUMPDEST SWAP4 POP PUSH2 0x3398 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24B8 JUMP JUMPDEST PUSH2 0x33A1 DUP2 PUSH2 0x24EB JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x33C5 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x33D8 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x33EB PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x33FE PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x3411 PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x3424 PUSH1 0xA0 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH1 0xC0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x343C DUP3 DUP3 PUSH2 0x3373 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xE0 DUP4 ADD MLOAD PUSH2 0x3451 PUSH1 0xE0 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3471 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3483 DUP2 DUP5 PUSH2 0x33AC JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F75676820746F2070617920666F722074780000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34C2 PUSH1 0x18 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x34CD DUP3 PUSH2 0x348C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34F1 DUP2 PUSH2 0x34B5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F7420656E6F75676820676173000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x352E PUSH1 0xE DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3539 DUP3 PUSH2 0x34F8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x355D DUP2 PUSH2 0x3521 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x3579 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x22DC JUMP JUMPDEST PUSH2 0x3586 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x3593 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2618 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x546F6B656E206164647265737320697320300000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35D1 PUSH1 0x12 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x35DC DUP3 PUSH2 0x359B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3600 DUP2 PUSH2 0x35C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3610 DUP2 PUSH2 0x2642 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x362B PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST PUSH2 0x3638 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3607 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x57726F6E67205061796D656E7420546F6B656E00000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3675 PUSH1 0x13 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3680 DUP3 PUSH2 0x363F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x36A4 DUP2 PUSH2 0x3668 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36E3 DUP4 DUP4 PUSH2 0x3353 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3707 DUP3 PUSH2 0x36AB JUMP JUMPDEST PUSH2 0x3711 DUP2 DUP6 PUSH2 0x36B6 JUMP JUMPDEST SWAP4 POP PUSH2 0x371C DUP4 PUSH2 0x36C7 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374D JUMPI DUP2 MLOAD PUSH2 0x3734 DUP9 DUP3 PUSH2 0x36D7 JUMP JUMPDEST SWAP8 POP PUSH2 0x373F DUP4 PUSH2 0x36EF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x3720 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x376F PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3781 DUP2 DUP5 PUSH2 0x36FC JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x37A5 JUMPI PUSH2 0x37A4 PUSH2 0x271A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37C9 PUSH2 0x37C4 DUP5 PUSH2 0x378A JUMP JUMPDEST PUSH2 0x277A JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x37EC JUMPI PUSH2 0x37EB PUSH2 0x2348 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3815 JUMPI DUP1 PUSH2 0x3801 DUP9 DUP3 PUSH2 0x3047 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x37EE JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3834 JUMPI PUSH2 0x3833 PUSH2 0x233E JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x3844 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x37B6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3863 JUMPI PUSH2 0x3862 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3881 JUMPI PUSH2 0x3880 PUSH2 0x2315 JUMP JUMPDEST JUMPDEST PUSH2 0x388D DUP5 DUP3 DUP6 ADD PUSH2 0x381F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x63616E206F6E6C792062652063616C6C65642062792052656C61794875620000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38FB PUSH1 0x1E DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3906 DUP3 PUSH2 0x38C5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x392A DUP2 PUSH2 0x38EE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E6F207375636365737300000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3967 PUSH1 0xA DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3972 DUP3 PUSH2 0x3931 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3996 DUP2 PUSH2 0x395A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x39B6 JUMPI PUSH2 0x39B5 PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x39C4 DUP7 DUP3 DUP8 ADD PUSH2 0x266B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x39D5 DUP7 DUP3 DUP8 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x39E6 DUP7 DUP3 DUP8 ADD PUSH2 0x23C4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39FF PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x23C4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A16 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2597 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SUB DUP5 CALLDATASIZE SUB SUB DUP2 SLT PUSH2 0x3A4A JUMPI PUSH2 0x3A49 PUSH2 0x3A28 JUMP JUMPDEST JUMPDEST DUP4 DUP2 ADD SWAP3 POP DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A72 JUMPI PUSH2 0x3A71 PUSH2 0x3A1E JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 MUL CALLDATASIZE SUB DUP5 SGT ISZERO PUSH2 0x3A88 JUMPI PUSH2 0x3A87 PUSH2 0x3A23 JUMP JUMPDEST JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A9C DUP4 DUP6 PUSH2 0x3362 JUMP JUMPDEST SWAP4 POP PUSH2 0x3AA9 DUP4 DUP6 DUP5 PUSH2 0x2C61 JUMP JUMPDEST PUSH2 0x3AB2 DUP4 PUSH2 0x24EB JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP4 ADD PUSH2 0x3AD1 PUSH1 0x0 DUP5 ADD DUP5 PUSH2 0x39F0 JUMP JUMPDEST PUSH2 0x3ADE PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH2 0x3AEC PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x39F0 JUMP JUMPDEST PUSH2 0x3AF9 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH2 0x3B07 PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x39F0 JUMP JUMPDEST PUSH2 0x3B14 PUSH1 0x40 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP PUSH2 0x3B22 PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x3A07 JUMP JUMPDEST PUSH2 0x3B2F PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH2 0x3B3D PUSH1 0x80 DUP5 ADD DUP5 PUSH2 0x3A07 JUMP JUMPDEST PUSH2 0x3B4A PUSH1 0x80 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH2 0x3B58 PUSH1 0xA0 DUP5 ADD DUP5 PUSH2 0x3A07 JUMP JUMPDEST PUSH2 0x3B65 PUSH1 0xA0 DUP7 ADD DUP3 PUSH2 0x3353 JUMP JUMPDEST POP PUSH2 0x3B73 PUSH1 0xC0 DUP5 ADD DUP5 PUSH2 0x3A2D JUMP JUMPDEST DUP6 DUP4 SUB PUSH1 0xC0 DUP8 ADD MSTORE PUSH2 0x3B86 DUP4 DUP3 DUP5 PUSH2 0x3A90 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x3B97 PUSH1 0xE0 DUP5 ADD DUP5 PUSH2 0x39F0 JUMP JUMPDEST PUSH2 0x3BA4 PUSH1 0xE0 DUP7 ADD DUP3 PUSH2 0x2ABB JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3BC4 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2618 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3BD6 DUP2 DUP5 PUSH2 0x3ABD JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BEA DUP3 PUSH2 0x23A3 JUMP JUMPDEST SWAP2 POP PUSH2 0x3BF5 DUP4 PUSH2 0x23A3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x3C08 JUMPI PUSH2 0x3C07 PUSH2 0x2F99 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x466F72776172646572206973206E6F7420747275737465640000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C49 PUSH1 0x18 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3C54 DUP3 PUSH2 0x3C13 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C78 DUP2 PUSH2 0x3C3C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x57726F6E67206D696E2062616C616E6365000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CB5 PUSH1 0x11 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3CC0 DUP3 PUSH2 0x3C7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CE4 DUP2 PUSH2 0x3CA8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D47 PUSH1 0x26 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3D52 DUP3 PUSH2 0x3CEB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D76 DUP2 PUSH2 0x3D3A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DB3 PUSH1 0x20 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3DBE DUP3 PUSH2 0x3D7D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DE2 DUP2 PUSH2 0x3DA6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DFF DUP3 PUSH2 0x249C JUMP JUMPDEST PUSH2 0x3E09 DUP2 DUP6 PUSH2 0x3DE9 JUMP JUMPDEST SWAP4 POP PUSH2 0x3E19 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24B8 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E31 DUP3 DUP5 PUSH2 0x3DF4 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x697354727573746564466F727761726465723A20726576657274656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E72 PUSH1 0x1C DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3E7D DUP3 PUSH2 0x3E3C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3EA1 DUP2 PUSH2 0x3E65 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x697354727573746564466F727761726465723A2062616420726573706F6E7365 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EDE PUSH1 0x20 DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3EE9 DUP3 PUSH2 0x3EA8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3F0D DUP2 PUSH2 0x3ED1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3F23 DUP2 PUSH2 0x25AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F3F JUMPI PUSH2 0x3F3E PUSH2 0x2310 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3F4D DUP5 DUP3 DUP6 ADD PUSH2 0x3F14 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x696E76616C696420666F7277617264657220666F7220726563697069656E7400 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F8C PUSH1 0x1F DUP4 PUSH2 0x222D JUMP JUMPDEST SWAP2 POP PUSH2 0x3F97 DUP3 PUSH2 0x3F56 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3FBB DUP2 PUSH2 0x3F7F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 SIGNEXTEND BLOCKHASH 0x1E PUSH25 0x64F800D193F50C378824A320093824FCC07F7F1D2612A6A35E NUMBER MSIZE PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"731:5509:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3047:1:0;3018:31;;3026:8;;;;;;;;;;;3018:31;;;3010:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;3089:8;;;;;;;;;;;:19;;;3115:9;3134:4;3089:51;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;731:5509:23;;;;3351:1981;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2119:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2643:139:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1148:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2038:75:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1853:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2832:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1831:101:13;;;;;;;;;;;;;:::i;:::-;;603:102:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5338:899:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2657:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2262:84:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2477:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1201:85:13;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;779:138:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1733:274:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3233:111:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;970:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2563:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2441:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1206:362:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2314:121:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;776:54:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;971:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1043:30:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2751:75;;;;;;;;;;;;;:::i;:::-;;1079:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1688:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1148:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2352:119:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1037:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2081:198:13;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;906:59:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3351:1981:23;3596:20;3618:28;3658:30;3675:12;3658:16;:30::i;:::-;3707:6;;;;;;;;;;;3706:7;3698:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;3739:42;3784:12;:20;;;;;;;;:::i;:::-;3739:65;;3814:35;3852:12;:22;;;;;;;;:::i;:::-;3814:60;;;:::i;:::-;;;3907:6;;;;;;;;;;;3893:20;;:7;:10;;;;;;;;;;:::i;:::-;:20;;;3885:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;3944:20;3966:14;3995:7;:12;;;;;;;;:::i;:::-;4008:1;3995:16;;;;;;;;;:::i;:::-;3984:48;;;;;;;:::i;:::-;3943:89;;;;4050:19;:33;4070:12;4050:33;;;;;;;;;;;;;;;;;;;;;;;;;4042:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4120:13;4136:7;:12;;;;;;;;;;:::i;:::-;4120:28;;4159:19;4188:13;;;;;;;;;;;4159:43;;4233:12;4216:29;;:13;;;;;;;;;;;:29;;;4213:683;;4317:6;4310:4;;:13;;;;:::i;:::-;4269:12;:22;;;4292:5;4299:6;;;;;;;;;;;4269:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;4261:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;4422:6;4415:4;;:13;;;;:::i;:::-;4382:12;:22;;;4405:5;4382:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;4374:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;4213:683;;;4543:4;;4502:12;:22;;;4525:5;4532:6;;;;;;;;;;;4502:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;4494:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;4632:4;;4599:12;:22;;;4622:5;4599:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;4591:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4679:12;4701;4679:35;;4770:6;4736:5;:15;;;4752:5;4759:6;;;;;;;;;;;4736:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;4728:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4856:6;4823:12;:22;;;4846:5;4823:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;;4815:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4480:416;4213:683;4906:21;4930:38;4939:12;4953:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4930:8;:38::i;:::-;4906:62;;4978:17;4998:33;5018:6;5026:4;4998:19;:33::i;:::-;4978:53;;5042:20;5065:8;;;;;;;;;;;:24;;;5090:14;5106:9;5065:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5042:74;;5151:12;5139:9;:24;5131:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;5226:6;;5211:7;:11;;;:21;;5203:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5280:7;:12;;;;;;;;;;:::i;:::-;5294;5308:9;5269:49;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5320:4;5261:64;;;;;;;;;;;;;3351:1981;;;;;;;;;:::o;2119:189::-;1094:13:13;:11;:13::i;:::-;2228:1:23::1;2211:19;;:5;:19;;::::0;2203:50:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2292:9;2263:19;:26;2283:5;2263:26;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;2119:189:::0;;:::o;2643:139:0:-;2719:4;2742:8;;;;;;;;;;;:18;;;2769:4;2742:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2735:40;;2643:139;:::o;3192:::-;1094:13:13;:11;:13::i;:::-;3291:8:0::1;;;;;;;;;;;:17;;;3309:6;3317;3291:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3192:139:::0;;:::o;1148:51::-;1194:5;1148:51;:::o;2038:75:23:-;1094:13:13;:11;:13::i;:::-;2103:3:23::1;2096:4;:10;;;;2038:75:::0;:::o;1853:179::-;1094:13:13;:11;:13::i;:::-;1961:1:23::1;1937:26;;:12;:26;;::::0;1929:58:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2013:12;1997:13;;:28;;;;;;;;;;;;;;;;;;1853:179:::0;:::o;2832:203::-;2923:7;2942:17;2962:7;:21;;;2984:8;2994:4;2962:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3000:1;2962:40;;;;;;;;:::i;:::-;;;;;;;;2942:60;;3019:9;3012:16;;;2832:203;;;;:::o;1831:101:13:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;603:102:0:-;655:7;689:8;;;;;;;;;;;674:24;;603:102;:::o;5338:899:23:-;2191:12:0;:10;:12::i;:::-;2177:26;;:10;:26;;;2169:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;5587:7:23::1;5579:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;5620:13;5635:20:::0;5657:17:::1;5689:7;;5678:48;;;;;;;:::i;:::-;5619:107;;;;;;5736:19;5758:8;;;;;;;;;;;5736:30;;5776:23;5802:9;:25;;;5848:13;;5828:17;:33;;;;:::i;:::-;5863:9;5802:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5776:97;;5883:18;5904:8;;;;;;;;;;;:18;;;5931:4;5904:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5883:54;;5948:19;5970:15;5948:37;;5995:14;6024:11;6012:9;:23;;;;:::i;:::-;5995:40;;6070:10;;6061:6;6048:10;:19;;;;:::i;:::-;:32;6045:134;;;6110:12;6096:26;;6157:11;6145:9;:23;;;;:::i;:::-;6136:32;;6045:134;6188:9;:18;;;6207:6;6223:5;6188:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5560:677;;;;;;;;5338:899:::0;;;;;:::o;2657:88::-;1094:13:13;:11;:13::i;:::-;2731:7:23::1;2722:6;;:16;;;;;;;;;;;;;;;;;;2657:88:::0;:::o;2262:84:0:-;1094:13:13;:11;:13::i;:::-;2336:3:0::1;2325:8;;:14;;;;;;;;;;;;;;;;;;2262:84:::0;:::o;2477:115::-;2543:7;2568:17;;;;;;;;;;;2561:24;;2477:115;:::o;1201:85:13:-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;779:138:23:-;847:13;871:39;;;;;;;;;;;;;;;;;;;779:138;:::o;1733:274:0:-;1876:12;:22;;;;;;;;:::i;:::-;:32;;;;;;;;;;:::i;:::-;1846:62;;1854:17;;;;;;;;;;;1846:62;;;1838:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;1947:53;1987:12;1947:39;:53::i;:::-;1733:274;:::o;3233:111:23:-;3281:7;3290;3317:13;;;;;;;;;;;3332:4;;3309:28;;;;3233:111;;:::o;970:36::-;;;;:::o;2563:88::-;1094:13:13;:11;:13::i;:::-;2637:7:23::1;2628:6;:16;;;;2563:88:::0;:::o;2441:116::-;1094:13:13;:11;:13::i;:::-;2536:14:23::1;2520:13;:30;;;;2441:116:::0;:::o;1206:362:0:-;1304:41;;:::i;:::-;1369:192;;;;;;;;825:5;959:6;1091:51;;;;:::i;:::-;1369:192;;;;959:6;1369:192;;;;1025:6;1369:192;;;;1194:5;1369:192;;;1362:199;;1206:362;:::o;2314:121:23:-;2379:4;2402:19;:26;2422:5;2402:26;;;;;;;;;;;;;;;;;;;;;;;;;2395:33;;2314:121;;;:::o;776:54:0:-;825:5;776:54;:::o;971:60::-;1025:6;971:60;:::o;1043:30:23:-;;;;:::o;2751:75::-;1094:13:13;:11;:13::i;:::-;2813:6:23::1;;;;;;;;;;;2812:7;2803:6;;:16;;;;;;;;;;;;;;;;;;2751:75::o:0;1079:37::-;;;;:::o;1688:159::-;1094:13:13;:11;:13::i;:::-;1783:1:23::1;1769:11;:15;1761:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;1829:11;1816:10;:24;;;;1688:159:::0;:::o;1148:21::-;;;;;;;;;;;;;:::o;2352:119:0:-;1094:13:13;:11;:13::i;:::-;2455:9:0::1;2435:17;;:29;;;;;;;;;;;;;;;;;;2352:119:::0;:::o;1037:105::-;825:5;959:6;1091:51;;;;:::i;:::-;1037:105;:::o;2081:198:13:-;1094:13;:11;:13::i;:::-;2189:1:::1;2169:22;;:8;:22;;::::0;2161:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;906:59:0:-;959:6;906:59;:::o;3041:186:23:-;3112:21;3166:1;3152:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3145:23;;3188:6;3178:4;3183:1;3178:7;;;;;;;;:::i;:::-;;;;;;;:16;;;;;;;;;;;3214:6;3204:4;3209:1;3204:7;;;;;;;;:::i;:::-;;;;;;;:16;;;;;;;;;;;3041:186;;;;:::o;1359:130:13:-;1433:12;:10;:12::i;:::-;1422:23;;:7;:5;:7::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;2433:187::-;2506:16;2525:6;;;;;;;;;;;2506:25;;2550:8;2541:6;;:17;;;;;;;;;;;;;;;;;;2604:8;2573:40;;2594:8;2573:40;;;;;;;;;;;;2496:124;2433:187;:::o;2051:538:7:-;2153:12;2167:16;2187:12;:20;;;;;;;;:::i;:::-;:23;;;;;;;;;;:::i;:::-;:34;;2275:43;;;2320:12;:22;;;;;;;;:::i;:::-;:32;;;;;;;;;;:::i;:::-;2235:131;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2187:189;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2152:224;;;;2394:7;2386:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;2466:2;2452:3;:10;:16;2444:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;2534:3;2523:23;;;;;;;;;;;;:::i;:::-;2515:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2142:447;;2051:538;:::o;640:96:15:-;693:7;719:10;712:17;;640:96;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:169:25:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:175::-;322:27;318:1;310:6;306:14;299:51;182:175;:::o;363:366::-;505:3;526:67;590:2;585:3;526:67;:::i;:::-;519:74;;602:93;691:3;602:93;:::i;:::-;720:2;715:3;711:12;704:19;;363:366;;;:::o;735:419::-;901:4;939:2;928:9;924:18;916:26;;988:9;982:4;978:20;974:1;963:9;959:17;952:47;1016:131;1142:4;1016:131;:::i;:::-;1008:139;;735:419;;;:::o;1160:126::-;1197:7;1237:42;1230:5;1226:54;1215:65;;1160:126;;;:::o;1292:96::-;1329:7;1358:24;1376:5;1358:24;:::i;:::-;1347:35;;1292:96;;;:::o;1394:118::-;1481:24;1499:5;1481:24;:::i;:::-;1476:3;1469:37;1394:118;;:::o;1518:222::-;1611:4;1649:2;1638:9;1634:18;1626:26;;1662:71;1730:1;1719:9;1715:17;1706:6;1662:71;:::i;:::-;1518:222;;;;:::o;1746:75::-;1779:6;1812:2;1806:9;1796:19;;1746:75;:::o;1827:117::-;1936:1;1933;1926:12;1950:117;2059:1;2056;2049:12;2073:117;2182:1;2179;2172:12;2232:236;2310:5;2351:2;2342:6;2337:3;2333:16;2329:25;2326:112;;;2357:79;;:::i;:::-;2326:112;2456:6;2447:15;;2232:236;;;;:::o;2474:117::-;2583:1;2580;2573:12;2597:117;2706:1;2703;2696:12;2720:117;2829:1;2826;2819:12;2856:552;2913:8;2923:6;2973:3;2966:4;2958:6;2954:17;2950:27;2940:122;;2981:79;;:::i;:::-;2940:122;3094:6;3081:20;3071:30;;3124:18;3116:6;3113:30;3110:117;;;3146:79;;:::i;:::-;3110:117;3260:4;3252:6;3248:17;3236:29;;3314:3;3306:4;3298:6;3294:17;3284:8;3280:32;3277:41;3274:128;;;3321:79;;:::i;:::-;3274:128;2856:552;;;;;:::o;3414:77::-;3451:7;3480:5;3469:16;;3414:77;;;:::o;3497:122::-;3570:24;3588:5;3570:24;:::i;:::-;3563:5;3560:35;3550:63;;3609:1;3606;3599:12;3550:63;3497:122;:::o;3625:139::-;3671:5;3709:6;3696:20;3687:29;;3725:33;3752:5;3725:33;:::i;:::-;3625:139;;;;:::o;3770:1385::-;3910:6;3918;3926;3934;3942;3950;3999:3;3987:9;3978:7;3974:23;3970:33;3967:120;;;4006:79;;:::i;:::-;3967:120;4154:1;4143:9;4139:17;4126:31;4184:18;4176:6;4173:30;4170:117;;;4206:79;;:::i;:::-;4170:117;4311:85;4388:7;4379:6;4368:9;4364:22;4311:85;:::i;:::-;4301:95;;4097:309;4473:2;4462:9;4458:18;4445:32;4504:18;4496:6;4493:30;4490:117;;;4526:79;;:::i;:::-;4490:117;4639:64;4695:7;4686:6;4675:9;4671:22;4639:64;:::i;:::-;4621:82;;;;4416:297;4780:2;4769:9;4765:18;4752:32;4811:18;4803:6;4800:30;4797:117;;;4833:79;;:::i;:::-;4797:117;4946:64;5002:7;4993:6;4982:9;4978:22;4946:64;:::i;:::-;4928:82;;;;4723:297;5059:2;5085:53;5130:7;5121:6;5110:9;5106:22;5085:53;:::i;:::-;5075:63;;5030:118;3770:1385;;;;;;;;:::o;5161:98::-;5212:6;5246:5;5240:12;5230:22;;5161:98;;;:::o;5265:168::-;5348:11;5382:6;5377:3;5370:19;5422:4;5417:3;5413:14;5398:29;;5265:168;;;;:::o;5439:307::-;5507:1;5517:113;5531:6;5528:1;5525:13;5517:113;;;5616:1;5611:3;5607:11;5601:18;5597:1;5592:3;5588:11;5581:39;5553:2;5550:1;5546:10;5541:15;;5517:113;;;5648:6;5645:1;5642:13;5639:101;;;5728:1;5719:6;5714:3;5710:16;5703:27;5639:101;5488:258;5439:307;;;:::o;5752:102::-;5793:6;5844:2;5840:7;5835:2;5828:5;5824:14;5820:28;5810:38;;5752:102;;;:::o;5860:360::-;5946:3;5974:38;6006:5;5974:38;:::i;:::-;6028:70;6091:6;6086:3;6028:70;:::i;:::-;6021:77;;6107:52;6152:6;6147:3;6140:4;6133:5;6129:16;6107:52;:::i;:::-;6184:29;6206:6;6184:29;:::i;:::-;6179:3;6175:39;6168:46;;5950:270;5860:360;;;;:::o;6226:90::-;6260:7;6303:5;6296:13;6289:21;6278:32;;6226:90;;;:::o;6322:109::-;6403:21;6418:5;6403:21;:::i;:::-;6398:3;6391:34;6322:109;;:::o;6437:407::-;6570:4;6608:2;6597:9;6593:18;6585:26;;6657:9;6651:4;6647:20;6643:1;6632:9;6628:17;6621:47;6685:76;6756:4;6747:6;6685:76;:::i;:::-;6677:84;;6771:66;6833:2;6822:9;6818:18;6809:6;6771:66;:::i;:::-;6437:407;;;;;:::o;6850:122::-;6923:24;6941:5;6923:24;:::i;:::-;6916:5;6913:35;6903:63;;6962:1;6959;6952:12;6903:63;6850:122;:::o;6978:139::-;7024:5;7062:6;7049:20;7040:29;;7078:33;7105:5;7078:33;:::i;:::-;6978:139;;;;:::o;7123:116::-;7193:21;7208:5;7193:21;:::i;:::-;7186:5;7183:32;7173:60;;7229:1;7226;7219:12;7173:60;7123:116;:::o;7245:133::-;7288:5;7326:6;7313:20;7304:29;;7342:30;7366:5;7342:30;:::i;:::-;7245:133;;;;:::o;7384:468::-;7449:6;7457;7506:2;7494:9;7485:7;7481:23;7477:32;7474:119;;;7512:79;;:::i;:::-;7474:119;7632:1;7657:53;7702:7;7693:6;7682:9;7678:22;7657:53;:::i;:::-;7647:63;;7603:117;7759:2;7785:50;7827:7;7818:6;7807:9;7803:22;7785:50;:::i;:::-;7775:60;;7730:115;7384:468;;;;;:::o;7858:118::-;7945:24;7963:5;7945:24;:::i;:::-;7940:3;7933:37;7858:118;;:::o;7982:222::-;8075:4;8113:2;8102:9;8098:18;8090:26;;8126:71;8194:1;8183:9;8179:17;8170:6;8126:71;:::i;:::-;7982:222;;;;:::o;8210:104::-;8255:7;8284:24;8302:5;8284:24;:::i;:::-;8273:35;;8210:104;;;:::o;8320:138::-;8401:32;8427:5;8401:32;:::i;:::-;8394:5;8391:43;8381:71;;8448:1;8445;8438:12;8381:71;8320:138;:::o;8464:155::-;8518:5;8556:6;8543:20;8534:29;;8572:41;8607:5;8572:41;:::i;:::-;8464:155;;;;:::o;8625:490::-;8701:6;8709;8758:2;8746:9;8737:7;8733:23;8729:32;8726:119;;;8764:79;;:::i;:::-;8726:119;8884:1;8909:53;8954:7;8945:6;8934:9;8930:22;8909:53;:::i;:::-;8899:63;;8855:117;9011:2;9037:61;9090:7;9081:6;9070:9;9066:22;9037:61;:::i;:::-;9027:71;;8982:126;8625:490;;;;;:::o;9121:329::-;9180:6;9229:2;9217:9;9208:7;9204:23;9200:32;9197:119;;;9235:79;;:::i;:::-;9197:119;9355:1;9380:53;9425:7;9416:6;9405:9;9401:22;9380:53;:::i;:::-;9370:63;;9326:117;9121:329;;;;:::o;9456:::-;9515:6;9564:2;9552:9;9543:7;9539:23;9535:32;9532:119;;;9570:79;;:::i;:::-;9532:119;9690:1;9715:53;9760:7;9751:6;9740:9;9736:22;9715:53;:::i;:::-;9705:63;;9661:117;9456:329;;;;:::o;9791:180::-;9839:77;9836:1;9829:88;9936:4;9933:1;9926:15;9960:4;9957:1;9950:15;9977:281;10060:27;10082:4;10060:27;:::i;:::-;10052:6;10048:40;10190:6;10178:10;10175:22;10154:18;10142:10;10139:34;10136:62;10133:88;;;10201:18;;:::i;:::-;10133:88;10241:10;10237:2;10230:22;10020:238;9977:281;;:::o;10264:129::-;10298:6;10325:20;;:::i;:::-;10315:30;;10354:33;10382:4;10374:6;10354:33;:::i;:::-;10264:129;;;:::o;10399:311::-;10476:4;10566:18;10558:6;10555:30;10552:56;;;10588:18;;:::i;:::-;10552:56;10638:4;10630:6;10626:17;10618:25;;10698:4;10692;10688:15;10680:23;;10399:311;;;:::o;10733:710::-;10829:5;10854:81;10870:64;10927:6;10870:64;:::i;:::-;10854:81;:::i;:::-;10845:90;;10955:5;10984:6;10977:5;10970:21;11018:4;11011:5;11007:16;11000:23;;11071:4;11063:6;11059:17;11051:6;11047:30;11100:3;11092:6;11089:15;11086:122;;;11119:79;;:::i;:::-;11086:122;11234:6;11217:220;11251:6;11246:3;11243:15;11217:220;;;11326:3;11355:37;11388:3;11376:10;11355:37;:::i;:::-;11350:3;11343:50;11422:4;11417:3;11413:14;11406:21;;11293:144;11277:4;11272:3;11268:14;11261:21;;11217:220;;;11221:21;10835:608;;10733:710;;;;;:::o;11466:370::-;11537:5;11586:3;11579:4;11571:6;11567:17;11563:27;11553:122;;11594:79;;:::i;:::-;11553:122;11711:6;11698:20;11736:94;11826:3;11818:6;11811:4;11803:6;11799:17;11736:94;:::i;:::-;11727:103;;11543:293;11466:370;;;;:::o;11842:684::-;11935:6;11943;11992:2;11980:9;11971:7;11967:23;11963:32;11960:119;;;11998:79;;:::i;:::-;11960:119;12118:1;12143:53;12188:7;12179:6;12168:9;12164:22;12143:53;:::i;:::-;12133:63;;12089:117;12273:2;12262:9;12258:18;12245:32;12304:18;12296:6;12293:30;12290:117;;;12326:79;;:::i;:::-;12290:117;12431:78;12501:7;12492:6;12481:9;12477:22;12431:78;:::i;:::-;12421:88;;12216:303;11842:684;;;;;:::o;12565:234::-;12640:5;12681:3;12672:6;12667:3;12663:16;12659:26;12656:113;;;12688:79;;:::i;:::-;12656:113;12787:6;12778:15;;12565:234;;;;:::o;12805:1175::-;12928:6;12936;12944;12952;12960;13009:3;12997:9;12988:7;12984:23;12980:33;12977:120;;;13016:79;;:::i;:::-;12977:120;13164:1;13153:9;13149:17;13136:31;13194:18;13186:6;13183:30;13180:117;;;13216:79;;:::i;:::-;13180:117;13329:64;13385:7;13376:6;13365:9;13361:22;13329:64;:::i;:::-;13311:82;;;;13107:296;13442:2;13468:50;13510:7;13501:6;13490:9;13486:22;13468:50;:::i;:::-;13458:60;;13413:115;13567:2;13593:53;13638:7;13629:6;13618:9;13614:22;13593:53;:::i;:::-;13583:63;;13538:118;13723:2;13712:9;13708:18;13695:32;13754:18;13746:6;13743:30;13740:117;;;13776:79;;:::i;:::-;13740:117;13881:82;13955:7;13946:6;13935:9;13931:22;13881:82;:::i;:::-;13871:92;;13666:307;12805:1175;;;;;;;;:::o;13986:113::-;14040:7;14069:24;14087:5;14069:24;:::i;:::-;14058:35;;13986:113;;;:::o;14105:156::-;14195:41;14230:5;14195:41;:::i;:::-;14188:5;14185:52;14175:80;;14251:1;14248;14241:12;14175:80;14105:156;:::o;14267:173::-;14330:5;14368:6;14355:20;14346:29;;14384:50;14428:5;14384:50;:::i;:::-;14267:173;;;;:::o;14446:363::-;14522:6;14571:2;14559:9;14550:7;14546:23;14542:32;14539:119;;;14577:79;;:::i;:::-;14539:119;14697:1;14722:70;14784:7;14775:6;14764:9;14760:22;14722:70;:::i;:::-;14712:80;;14668:134;14446:363;;;;:::o;14815:99::-;14867:6;14901:5;14895:12;14885:22;;14815:99;;;:::o;14920:364::-;15008:3;15036:39;15069:5;15036:39;:::i;:::-;15091:71;15155:6;15150:3;15091:71;:::i;:::-;15084:78;;15171:52;15216:6;15211:3;15204:4;15197:5;15193:16;15171:52;:::i;:::-;15248:29;15270:6;15248:29;:::i;:::-;15243:3;15239:39;15232:46;;15012:272;14920:364;;;;:::o;15290:313::-;15403:4;15441:2;15430:9;15426:18;15418:26;;15490:9;15484:4;15480:20;15476:1;15465:9;15461:17;15454:47;15518:78;15591:4;15582:6;15518:78;:::i;:::-;15510:86;;15290:313;;;;:::o;15609:553::-;15700:6;15749:2;15737:9;15728:7;15724:23;15720:32;15717:119;;;15755:79;;:::i;:::-;15717:119;15903:1;15892:9;15888:17;15875:31;15933:18;15925:6;15922:30;15919:117;;;15955:79;;:::i;:::-;15919:117;16060:85;16137:7;16128:6;16117:9;16113:22;16060:85;:::i;:::-;16050:95;;15846:309;15609:553;;;;:::o;16168:332::-;16289:4;16327:2;16316:9;16312:18;16304:26;;16340:71;16408:1;16397:9;16393:17;16384:6;16340:71;:::i;:::-;16421:72;16489:2;16478:9;16474:18;16465:6;16421:72;:::i;:::-;16168:332;;;;;:::o;16506:108::-;16583:24;16601:5;16583:24;:::i;:::-;16578:3;16571:37;16506:108;;:::o;16700:933::-;16863:4;16858:3;16854:14;16962:4;16955:5;16951:16;16945:23;16981:63;17038:4;17033:3;17029:14;17015:12;16981:63;:::i;:::-;16878:176;17154:4;17147:5;17143:16;17137:23;17173:63;17230:4;17225:3;17221:14;17207:12;17173:63;:::i;:::-;17064:182;17347:4;17340:5;17336:16;17330:23;17366:63;17423:4;17418:3;17414:14;17400:12;17366:63;:::i;:::-;17256:183;17534:4;17527:5;17523:16;17517:23;17553:63;17610:4;17605:3;17601:14;17587:12;17553:63;:::i;:::-;17449:177;16832:801;16700:933;;:::o;17639:355::-;17798:4;17836:3;17825:9;17821:19;17813:27;;17850:137;17984:1;17973:9;17969:17;17960:6;17850:137;:::i;:::-;17639:355;;;;:::o;18000:210::-;18087:4;18125:2;18114:9;18110:18;18102:26;;18138:65;18200:1;18189:9;18185:17;18176:6;18138:65;:::i;:::-;18000:210;;;;:::o;18216:161::-;18356:13;18352:1;18344:6;18340:14;18333:37;18216:161;:::o;18383:366::-;18525:3;18546:67;18610:2;18605:3;18546:67;:::i;:::-;18539:74;;18622:93;18711:3;18622:93;:::i;:::-;18740:2;18735:3;18731:12;18724:19;;18383:366;;;:::o;18755:419::-;18921:4;18959:2;18948:9;18944:18;18936:26;;19008:9;19002:4;18998:20;18994:1;18983:9;18979:17;18972:47;19036:131;19162:4;19036:131;:::i;:::-;19028:139;;18755:419;;;:::o;19180:117::-;19289:1;19286;19279:12;19303:117;19412:1;19409;19402:12;19426:117;19535:1;19532;19525:12;19549:399;19648:4;19702:11;19689:25;19802:1;19796:4;19792:12;19781:8;19765:14;19761:29;19757:48;19737:18;19733:73;19723:168;;19810:79;;:::i;:::-;19723:168;19922:18;19912:8;19908:33;19900:41;;19653:295;19549:399;;;;:::o;19954:397::-;20049:4;20103:11;20090:25;20205:1;20197:6;20193:14;20182:8;20166:14;20162:29;20158:50;20138:18;20134:75;20124:170;;20213:79;;:::i;:::-;20124:170;20325:18;20315:8;20311:33;20303:41;;20054:297;19954:397;;;;:::o;20357:117::-;20466:1;20463;20456:12;20480:117;20589:1;20586;20579:12;20603:117;20712:1;20709;20702:12;20726:307;20787:4;20877:18;20869:6;20866:30;20863:56;;;20899:18;;:::i;:::-;20863:56;20937:29;20959:6;20937:29;:::i;:::-;20929:37;;21021:4;21015;21011:15;21003:23;;20726:307;;;:::o;21039:154::-;21123:6;21118:3;21113;21100:30;21185:1;21176:6;21171:3;21167:16;21160:27;21039:154;;;:::o;21199:410::-;21276:5;21301:65;21317:48;21358:6;21317:48;:::i;:::-;21301:65;:::i;:::-;21292:74;;21389:6;21382:5;21375:21;21427:4;21420:5;21416:16;21465:3;21456:6;21451:3;21447:16;21444:25;21441:112;;;21472:79;;:::i;:::-;21441:112;21562:41;21596:6;21591:3;21586;21562:41;:::i;:::-;21282:327;21199:410;;;;;:::o;21628:338::-;21683:5;21732:3;21725:4;21717:6;21713:17;21709:27;21699:122;;21740:79;;:::i;:::-;21699:122;21857:6;21844:20;21882:78;21956:3;21948:6;21941:4;21933:6;21929:17;21882:78;:::i;:::-;21873:87;;21689:277;21628:338;;;;:::o;22005:1768::-;22081:5;22125:6;22113:9;22108:3;22104:19;22100:32;22097:119;;;22135:79;;:::i;:::-;22097:119;22234:23;22250:6;22234:23;:::i;:::-;22225:32;;22320:1;22360:49;22405:3;22396:6;22385:9;22381:22;22360:49;:::i;:::-;22353:4;22346:5;22342:16;22335:75;22267:154;22487:2;22528:49;22573:3;22564:6;22553:9;22549:22;22528:49;:::i;:::-;22521:4;22514:5;22510:16;22503:75;22431:158;22656:2;22697:49;22742:3;22733:6;22722:9;22718:22;22697:49;:::i;:::-;22690:4;22683:5;22679:16;22672:75;22599:159;22824:2;22865:49;22910:3;22901:6;22890:9;22886:22;22865:49;:::i;:::-;22858:4;22851:5;22847:16;22840:75;22768:158;22990:3;23032:49;23077:3;23068:6;23057:9;23053:22;23032:49;:::i;:::-;23025:4;23018:5;23014:16;23007:75;22936:157;23157:3;23199:49;23244:3;23235:6;23224:9;23220:22;23199:49;:::i;:::-;23192:4;23185:5;23181:16;23174:75;23103:157;23356:3;23345:9;23341:19;23328:33;23388:18;23380:6;23377:30;23374:117;;;23410:79;;:::i;:::-;23374:117;23530:58;23584:3;23575:6;23564:9;23560:22;23530:58;:::i;:::-;23523:4;23516:5;23512:16;23505:84;23270:330;23663:3;23705:49;23750:3;23741:6;23730:9;23726:22;23705:49;:::i;:::-;23698:4;23691:5;23687:16;23680:75;23610:156;22005:1768;;;;:::o;23779:217::-;23885:9;23919:70;23974:14;23967:5;23919:70;:::i;:::-;23906:83;;23779:217;;;:::o;24002:164::-;24142:16;24138:1;24130:6;24126:14;24119:40;24002:164;:::o;24172:366::-;24314:3;24335:67;24399:2;24394:3;24335:67;:::i;:::-;24328:74;;24411:93;24500:3;24411:93;:::i;:::-;24529:2;24524:3;24520:12;24513:19;;24172:366;;;:::o;24544:419::-;24710:4;24748:2;24737:9;24733:18;24725:26;;24797:9;24791:4;24787:20;24783:1;24772:9;24768:17;24761:47;24825:131;24951:4;24825:131;:::i;:::-;24817:139;;24544:419;;;:::o;24969:724::-;25046:4;25052:6;25108:11;25095:25;25208:1;25202:4;25198:12;25187:8;25171:14;25167:29;25163:48;25143:18;25139:73;25129:168;;25216:79;;:::i;:::-;25129:168;25328:18;25318:8;25314:33;25306:41;;25380:4;25367:18;25357:28;;25408:18;25400:6;25397:30;25394:117;;;25430:79;;:::i;:::-;25394:117;25538:2;25532:4;25528:13;25520:21;;25595:4;25587:6;25583:17;25567:14;25563:38;25557:4;25553:49;25550:136;;;25605:79;;:::i;:::-;25550:136;25059:634;24969:724;;;;;:::o;25699:117::-;25808:1;25805;25798:12;25822:117;25931:1;25928;25921:12;25945:469;26050:9;26061;26099:8;26087:10;26084:24;26081:111;;;26111:79;;:::i;:::-;26081:111;26217:6;26207:8;26204:20;26201:107;;;26227:79;;:::i;:::-;26201:107;26358:1;26346:10;26342:18;26334:6;26330:31;26317:44;;26397:10;26387:8;26383:25;26370:38;;25945:469;;;;;;;:::o;26420:490::-;26496:6;26504;26553:2;26541:9;26532:7;26528:23;26524:32;26521:119;;;26559:79;;:::i;:::-;26521:119;26679:1;26704:61;26757:7;26748:6;26737:9;26733:22;26704:61;:::i;:::-;26694:71;;26650:125;26814:2;26840:53;26885:7;26876:6;26865:9;26861:22;26840:53;:::i;:::-;26830:63;;26785:118;26420:490;;;;;:::o;26916:171::-;27056:23;27052:1;27044:6;27040:14;27033:47;26916:171;:::o;27093:366::-;27235:3;27256:67;27320:2;27315:3;27256:67;:::i;:::-;27249:74;;27332:93;27421:3;27332:93;:::i;:::-;27450:2;27445:3;27441:12;27434:19;;27093:366;;;:::o;27465:419::-;27631:4;27669:2;27658:9;27654:18;27646:26;;27718:9;27712:4;27708:20;27704:1;27693:9;27689:17;27682:47;27746:131;27872:4;27746:131;:::i;:::-;27738:139;;27465:419;;;:::o;27890:180::-;27938:77;27935:1;27928:88;28035:4;28032:1;28025:15;28059:4;28056:1;28049:15;28076:305;28116:3;28135:20;28153:1;28135:20;:::i;:::-;28130:25;;28169:20;28187:1;28169:20;:::i;:::-;28164:25;;28323:1;28255:66;28251:74;28248:1;28245:81;28242:107;;;28329:18;;:::i;:::-;28242:107;28373:1;28370;28366:9;28359:16;;28076:305;;;;:::o;28387:332::-;28508:4;28546:2;28535:9;28531:18;28523:26;;28559:71;28627:1;28616:9;28612:17;28603:6;28559:71;:::i;:::-;28640:72;28708:2;28697:9;28693:18;28684:6;28640:72;:::i;:::-;28387:332;;;;;:::o;28725:143::-;28782:5;28813:6;28807:13;28798:22;;28829:33;28856:5;28829:33;:::i;:::-;28725:143;;;;:::o;28874:351::-;28944:6;28993:2;28981:9;28972:7;28968:23;28964:32;28961:119;;;28999:79;;:::i;:::-;28961:119;29119:1;29144:64;29200:7;29191:6;29180:9;29176:22;29144:64;:::i;:::-;29134:74;;29090:128;28874:351;;;;:::o;29231:182::-;29371:34;29367:1;29359:6;29355:14;29348:58;29231:182;:::o;29419:366::-;29561:3;29582:67;29646:2;29641:3;29582:67;:::i;:::-;29575:74;;29658:93;29747:3;29658:93;:::i;:::-;29776:2;29771:3;29767:12;29760:19;;29419:366;;;:::o;29791:419::-;29957:4;29995:2;29984:9;29980:18;29972:26;;30044:9;30038:4;30034:20;30030:1;30019:9;30015:17;30008:47;30072:131;30198:4;30072:131;:::i;:::-;30064:139;;29791:419;;;:::o;30216:180::-;30356:32;30352:1;30344:6;30340:14;30333:56;30216:180;:::o;30402:366::-;30544:3;30565:67;30629:2;30624:3;30565:67;:::i;:::-;30558:74;;30641:93;30730:3;30641:93;:::i;:::-;30759:2;30754:3;30750:12;30743:19;;30402:366;;;:::o;30774:419::-;30940:4;30978:2;30967:9;30963:18;30955:26;;31027:9;31021:4;31017:20;31013:1;31002:9;30998:17;30991:47;31055:131;31181:4;31055:131;:::i;:::-;31047:139;;30774:419;;;:::o;31199:175::-;31339:27;31335:1;31327:6;31323:14;31316:51;31199:175;:::o;31380:366::-;31522:3;31543:67;31607:2;31602:3;31543:67;:::i;:::-;31536:74;;31619:93;31708:3;31619:93;:::i;:::-;31737:2;31732:3;31728:12;31721:19;;31380:366;;;:::o;31752:419::-;31918:4;31956:2;31945:9;31941:18;31933:26;;32005:9;31999:4;31995:20;31991:1;31980:9;31976:17;31969:47;32033:131;32159:4;32033:131;:::i;:::-;32025:139;;31752:419;;;:::o;32177:173::-;32317:25;32313:1;32305:6;32301:14;32294:49;32177:173;:::o;32356:366::-;32498:3;32519:67;32583:2;32578:3;32519:67;:::i;:::-;32512:74;;32595:93;32684:3;32595:93;:::i;:::-;32713:2;32708:3;32704:12;32697:19;;32356:366;;;:::o;32728:419::-;32894:4;32932:2;32921:9;32917:18;32909:26;;32981:9;32975:4;32971:20;32967:1;32956:9;32952:17;32945:47;33009:131;33135:4;33009:131;:::i;:::-;33001:139;;32728:419;;;:::o;33153:170::-;33293:22;33289:1;33281:6;33277:14;33270:46;33153:170;:::o;33329:366::-;33471:3;33492:67;33556:2;33551:3;33492:67;:::i;:::-;33485:74;;33568:93;33657:3;33568:93;:::i;:::-;33686:2;33681:3;33677:12;33670:19;;33329:366;;;:::o;33701:419::-;33867:4;33905:2;33894:9;33890:18;33882:26;;33954:9;33948:4;33944:20;33940:1;33929:9;33925:17;33918:47;33982:131;34108:4;33982:131;:::i;:::-;33974:139;;33701:419;;;:::o;34126:168::-;34266:20;34262:1;34254:6;34250:14;34243:44;34126:168;:::o;34300:366::-;34442:3;34463:67;34527:2;34522:3;34463:67;:::i;:::-;34456:74;;34539:93;34628:3;34539:93;:::i;:::-;34657:2;34652:3;34648:12;34641:19;;34300:366;;;:::o;34672:419::-;34838:4;34876:2;34865:9;34861:18;34853:26;;34925:9;34919:4;34915:20;34911:1;34900:9;34896:17;34889:47;34953:131;35079:4;34953:131;:::i;:::-;34945:139;;34672:419;;;:::o;35097:143::-;35154:5;35185:6;35179:13;35170:22;;35201:33;35228:5;35201:33;:::i;:::-;35097:143;;;;:::o;35246:351::-;35316:6;35365:2;35353:9;35344:7;35340:23;35336:32;35333:119;;;35371:79;;:::i;:::-;35333:119;35491:1;35516:64;35572:7;35563:6;35552:9;35548:22;35516:64;:::i;:::-;35506:74;;35462:128;35246:351;;;;:::o;35603:108::-;35680:24;35698:5;35680:24;:::i;:::-;35675:3;35668:37;35603:108;;:::o;35717:158::-;35790:11;35824:6;35819:3;35812:19;35864:4;35859:3;35855:14;35840:29;;35717:158;;;;:::o;35881:340::-;35957:3;35985:38;36017:5;35985:38;:::i;:::-;36039:60;36092:6;36087:3;36039:60;:::i;:::-;36032:67;;36108:52;36153:6;36148:3;36141:4;36134:5;36130:16;36108:52;:::i;:::-;36185:29;36207:6;36185:29;:::i;:::-;36180:3;36176:39;36169:46;;35961:260;35881:340;;;;:::o;36289:1703::-;36412:3;36448:6;36443:3;36439:16;36541:4;36534:5;36530:16;36524:23;36560:63;36617:4;36612:3;36608:14;36594:12;36560:63;:::i;:::-;36465:168;36722:4;36715:5;36711:16;36705:23;36741:63;36798:4;36793:3;36789:14;36775:12;36741:63;:::i;:::-;36643:171;36904:4;36897:5;36893:16;36887:23;36923:63;36980:4;36975:3;36971:14;36957:12;36923:63;:::i;:::-;36824:172;37085:4;37078:5;37074:16;37068:23;37104:63;37161:4;37156:3;37152:14;37138:12;37104:63;:::i;:::-;37006:171;37264:4;37257:5;37253:16;37247:23;37283:63;37340:4;37335:3;37331:14;37317:12;37283:63;:::i;:::-;37187:169;37443:4;37436:5;37432:16;37426:23;37462:63;37519:4;37514:3;37510:14;37496:12;37462:63;:::i;:::-;37366:169;37626:4;37619:5;37615:16;37609:23;37679:3;37673:4;37669:14;37662:4;37657:3;37653:14;37646:38;37705:71;37771:4;37757:12;37705:71;:::i;:::-;37697:79;;37545:242;37873:4;37866:5;37862:16;37856:23;37892:63;37949:4;37944:3;37940:14;37926:12;37892:63;:::i;:::-;37797:168;37982:4;37975:11;;36417:1575;36289:1703;;;;:::o;37998:491::-;38173:4;38211:2;38200:9;38196:18;38188:26;;38224:71;38292:1;38281:9;38277:17;38268:6;38224:71;:::i;:::-;38342:9;38336:4;38332:20;38327:2;38316:9;38312:18;38305:48;38370:112;38477:4;38468:6;38370:112;:::i;:::-;38362:120;;37998:491;;;;;:::o;38495:174::-;38635:26;38631:1;38623:6;38619:14;38612:50;38495:174;:::o;38675:366::-;38817:3;38838:67;38902:2;38897:3;38838:67;:::i;:::-;38831:74;;38914:93;39003:3;38914:93;:::i;:::-;39032:2;39027:3;39023:12;39016:19;;38675:366;;;:::o;39047:419::-;39213:4;39251:2;39240:9;39236:18;39228:26;;39300:9;39294:4;39290:20;39286:1;39275:9;39271:17;39264:47;39328:131;39454:4;39328:131;:::i;:::-;39320:139;;39047:419;;;:::o;39472:164::-;39612:16;39608:1;39600:6;39596:14;39589:40;39472:164;:::o;39642:366::-;39784:3;39805:67;39869:2;39864:3;39805:67;:::i;:::-;39798:74;;39881:93;39970:3;39881:93;:::i;:::-;39999:2;39994:3;39990:12;39983:19;;39642:366;;;:::o;40014:419::-;40180:4;40218:2;40207:9;40203:18;40195:26;;40267:9;40261:4;40257:20;40253:1;40242:9;40238:17;40231:47;40295:131;40421:4;40295:131;:::i;:::-;40287:139;;40014:419;;;:::o;40439:442::-;40588:4;40626:2;40615:9;40611:18;40603:26;;40639:71;40707:1;40696:9;40692:17;40683:6;40639:71;:::i;:::-;40720:72;40788:2;40777:9;40773:18;40764:6;40720:72;:::i;:::-;40802;40870:2;40859:9;40855:18;40846:6;40802:72;:::i;:::-;40439:442;;;;;;:::o;40887:168::-;41027:20;41023:1;41015:6;41011:14;41004:44;40887:168;:::o;41061:366::-;41203:3;41224:67;41288:2;41283:3;41224:67;:::i;:::-;41217:74;;41300:93;41389:3;41300:93;:::i;:::-;41418:2;41413:3;41409:12;41402:19;;41061:366;;;:::o;41433:419::-;41599:4;41637:2;41626:9;41622:18;41614:26;;41686:9;41680:4;41676:20;41672:1;41661:9;41657:17;41650:47;41714:131;41840:4;41714:131;:::i;:::-;41706:139;;41433:419;;;:::o;41858:142::-;41961:32;41987:5;41961:32;:::i;:::-;41956:3;41949:45;41858:142;;:::o;42006:364::-;42143:4;42181:2;42170:9;42166:18;42158:26;;42194:71;42262:1;42251:9;42247:17;42238:6;42194:71;:::i;:::-;42275:88;42359:2;42348:9;42344:18;42335:6;42275:88;:::i;:::-;42006:364;;;;;:::o;42376:169::-;42516:21;42512:1;42504:6;42500:14;42493:45;42376:169;:::o;42551:366::-;42693:3;42714:67;42778:2;42773:3;42714:67;:::i;:::-;42707:74;;42790:93;42879:3;42790:93;:::i;:::-;42908:2;42903:3;42899:12;42892:19;;42551:366;;;:::o;42923:419::-;43089:4;43127:2;43116:9;43112:18;43104:26;;43176:9;43170:4;43166:20;43162:1;43151:9;43147:17;43140:47;43204:131;43330:4;43204:131;:::i;:::-;43196:139;;42923:419;;;:::o;43348:114::-;43415:6;43449:5;43443:12;43433:22;;43348:114;;;:::o;43468:184::-;43567:11;43601:6;43596:3;43589:19;43641:4;43636:3;43632:14;43617:29;;43468:184;;;;:::o;43658:132::-;43725:4;43748:3;43740:11;;43778:4;43773:3;43769:14;43761:22;;43658:132;;;:::o;43796:179::-;43865:10;43886:46;43928:3;43920:6;43886:46;:::i;:::-;43964:4;43959:3;43955:14;43941:28;;43796:179;;;;:::o;43981:113::-;44051:4;44083;44078:3;44074:14;44066:22;;43981:113;;;:::o;44130:732::-;44249:3;44278:54;44326:5;44278:54;:::i;:::-;44348:86;44427:6;44422:3;44348:86;:::i;:::-;44341:93;;44458:56;44508:5;44458:56;:::i;:::-;44537:7;44568:1;44553:284;44578:6;44575:1;44572:13;44553:284;;;44654:6;44648:13;44681:63;44740:3;44725:13;44681:63;:::i;:::-;44674:70;;44767:60;44820:6;44767:60;:::i;:::-;44757:70;;44613:224;44600:1;44597;44593:9;44588:14;;44553:284;;;44557:14;44853:3;44846:10;;44254:608;;;44130:732;;;;:::o;44868:483::-;45039:4;45077:2;45066:9;45062:18;45054:26;;45090:71;45158:1;45147:9;45143:17;45134:6;45090:71;:::i;:::-;45208:9;45202:4;45198:20;45193:2;45182:9;45178:18;45171:48;45236:108;45339:4;45330:6;45236:108;:::i;:::-;45228:116;;44868:483;;;;;:::o;45357:311::-;45434:4;45524:18;45516:6;45513:30;45510:56;;;45546:18;;:::i;:::-;45510:56;45596:4;45588:6;45584:17;45576:25;;45656:4;45650;45646:15;45638:23;;45357:311;;;:::o;45691:732::-;45798:5;45823:81;45839:64;45896:6;45839:64;:::i;:::-;45823:81;:::i;:::-;45814:90;;45924:5;45953:6;45946:5;45939:21;45987:4;45980:5;45976:16;45969:23;;46040:4;46032:6;46028:17;46020:6;46016:30;46069:3;46061:6;46058:15;46055:122;;;46088:79;;:::i;:::-;46055:122;46203:6;46186:231;46220:6;46215:3;46212:15;46186:231;;;46295:3;46324:48;46368:3;46356:10;46324:48;:::i;:::-;46319:3;46312:61;46402:4;46397:3;46393:14;46386:21;;46262:155;46246:4;46241:3;46237:14;46230:21;;46186:231;;;46190:21;45804:619;;45691:732;;;;;:::o;46446:385::-;46528:5;46577:3;46570:4;46562:6;46558:17;46554:27;46544:122;;46585:79;;:::i;:::-;46544:122;46695:6;46689:13;46720:105;46821:3;46813:6;46806:4;46798:6;46794:17;46720:105;:::i;:::-;46711:114;;46534:297;46446:385;;;;:::o;46837:554::-;46932:6;46981:2;46969:9;46960:7;46956:23;46952:32;46949:119;;;46987:79;;:::i;:::-;46949:119;47128:1;47117:9;47113:17;47107:24;47158:18;47150:6;47147:30;47144:117;;;47180:79;;:::i;:::-;47144:117;47285:89;47366:7;47357:6;47346:9;47342:22;47285:89;:::i;:::-;47275:99;;47078:306;46837:554;;;;:::o;47397:180::-;47445:77;47442:1;47435:88;47542:4;47539:1;47532:15;47566:4;47563:1;47556:15;47583:180;47723:32;47719:1;47711:6;47707:14;47700:56;47583:180;:::o;47769:366::-;47911:3;47932:67;47996:2;47991:3;47932:67;:::i;:::-;47925:74;;48008:93;48097:3;48008:93;:::i;:::-;48126:2;48121:3;48117:12;48110:19;;47769:366;;;:::o;48141:419::-;48307:4;48345:2;48334:9;48330:18;48322:26;;48394:9;48388:4;48384:20;48380:1;48369:9;48365:17;48358:47;48422:131;48548:4;48422:131;:::i;:::-;48414:139;;48141:419;;;:::o;48566:160::-;48706:12;48702:1;48694:6;48690:14;48683:36;48566:160;:::o;48732:366::-;48874:3;48895:67;48959:2;48954:3;48895:67;:::i;:::-;48888:74;;48971:93;49060:3;48971:93;:::i;:::-;49089:2;49084:3;49080:12;49073:19;;48732:366;;;:::o;49104:419::-;49270:4;49308:2;49297:9;49293:18;49285:26;;49357:9;49351:4;49347:20;49343:1;49332:9;49328:17;49321:47;49385:131;49511:4;49385:131;:::i;:::-;49377:139;;49104:419;;;:::o;49529:635::-;49614:6;49622;49630;49679:2;49667:9;49658:7;49654:23;49650:32;49647:119;;;49685:79;;:::i;:::-;49647:119;49805:1;49830:61;49883:7;49874:6;49863:9;49859:22;49830:61;:::i;:::-;49820:71;;49776:125;49940:2;49966:53;50011:7;50002:6;49991:9;49987:22;49966:53;:::i;:::-;49956:63;;49911:118;50068:2;50094:53;50139:7;50130:6;50119:9;50115:22;50094:53;:::i;:::-;50084:63;;50039:118;49529:635;;;;;:::o;50170:122::-;50222:5;50247:39;50282:2;50277:3;50273:12;50268:3;50247:39;:::i;:::-;50238:48;;50170:122;;;;:::o;50298:::-;50350:5;50375:39;50410:2;50405:3;50401:12;50396:3;50375:39;:::i;:::-;50366:48;;50298:122;;;;:::o;50426:117::-;50535:1;50532;50525:12;50549:117;50658:1;50655;50648:12;50672:117;50781:1;50778;50771:12;50795:714;50859:5;50866:6;50922:3;50909:17;51014:1;51008:4;51004:12;50993:8;50977:14;50973:29;50969:48;50949:18;50945:73;50935:168;;51022:79;;:::i;:::-;50935:168;51145:8;51125:18;51121:33;51112:42;;51187:5;51174:19;51164:29;;51222:4;51215:5;51211:16;51202:25;;51250:18;51242:6;51239:30;51236:117;;;51272:79;;:::i;:::-;51236:117;51411:4;51403:6;51399:17;51383:14;51379:38;51369:8;51365:53;51362:140;;;51421:79;;:::i;:::-;51362:140;50873:636;50795:714;;;;;:::o;51537:281::-;51623:3;51644:60;51697:6;51692:3;51644:60;:::i;:::-;51637:67;;51714:43;51750:6;51745:3;51738:5;51714:43;:::i;:::-;51782:29;51804:6;51782:29;:::i;:::-;51777:3;51773:39;51766:46;;51537:281;;;;;:::o;51886:1962::-;52011:3;52047:6;52042:3;52038:16;52123:50;52167:4;52160:5;52156:16;52149:5;52123:50;:::i;:::-;52186:63;52243:4;52238:3;52234:14;52220:12;52186:63;:::i;:::-;52064:195;52331:50;52375:4;52368:5;52364:16;52357:5;52331:50;:::i;:::-;52394:63;52451:4;52446:3;52442:14;52428:12;52394:63;:::i;:::-;52269:198;52540:50;52584:4;52577:5;52573:16;52566:5;52540:50;:::i;:::-;52603:63;52660:4;52655:3;52651:14;52637:12;52603:63;:::i;:::-;52477:199;52748:50;52792:4;52785:5;52781:16;52774:5;52748:50;:::i;:::-;52811:63;52868:4;52863:3;52859:14;52845:12;52811:63;:::i;:::-;52686:198;52954:50;52998:4;52991:5;52987:16;52980:5;52954:50;:::i;:::-;53017:63;53074:4;53069:3;53065:14;53051:12;53017:63;:::i;:::-;52894:196;53160:50;53204:4;53197:5;53193:16;53186:5;53160:50;:::i;:::-;53223:63;53280:4;53275:3;53271:14;53257:12;53223:63;:::i;:::-;53100:196;53384:61;53439:4;53432:5;53428:16;53421:5;53384:61;:::i;:::-;53492:3;53486:4;53482:14;53475:4;53470:3;53466:14;53459:38;53518:87;53600:4;53586:12;53572;53518:87;:::i;:::-;53510:95;;53306:310;;53685:50;53729:4;53722:5;53718:16;53711:5;53685:50;:::i;:::-;53748:63;53805:4;53800:3;53796:14;53782:12;53748:63;:::i;:::-;53626:195;53838:4;53831:11;;52016:1832;51886:1962;;;;:::o;53854:495::-;54031:4;54069:2;54058:9;54054:18;54046:26;;54082:71;54150:1;54139:9;54135:17;54126:6;54082:71;:::i;:::-;54200:9;54194:4;54190:20;54185:2;54174:9;54170:18;54163:48;54228:114;54337:4;54328:6;54228:114;:::i;:::-;54220:122;;53854:495;;;;;:::o;54355:191::-;54395:4;54415:20;54433:1;54415:20;:::i;:::-;54410:25;;54449:20;54467:1;54449:20;:::i;:::-;54444:25;;54488:1;54485;54482:8;54479:34;;;54493:18;;:::i;:::-;54479:34;54538:1;54535;54531:9;54523:17;;54355:191;;;;:::o;54552:174::-;54692:26;54688:1;54680:6;54676:14;54669:50;54552:174;:::o;54732:366::-;54874:3;54895:67;54959:2;54954:3;54895:67;:::i;:::-;54888:74;;54971:93;55060:3;54971:93;:::i;:::-;55089:2;55084:3;55080:12;55073:19;;54732:366;;;:::o;55104:419::-;55270:4;55308:2;55297:9;55293:18;55285:26;;55357:9;55351:4;55347:20;55343:1;55332:9;55328:17;55321:47;55385:131;55511:4;55385:131;:::i;:::-;55377:139;;55104:419;;;:::o;55529:167::-;55669:19;55665:1;55657:6;55653:14;55646:43;55529:167;:::o;55702:366::-;55844:3;55865:67;55929:2;55924:3;55865:67;:::i;:::-;55858:74;;55941:93;56030:3;55941:93;:::i;:::-;56059:2;56054:3;56050:12;56043:19;;55702:366;;;:::o;56074:419::-;56240:4;56278:2;56267:9;56263:18;56255:26;;56327:9;56321:4;56317:20;56313:1;56302:9;56298:17;56291:47;56355:131;56481:4;56355:131;:::i;:::-;56347:139;;56074:419;;;:::o;56499:225::-;56639:34;56635:1;56627:6;56623:14;56616:58;56708:8;56703:2;56695:6;56691:15;56684:33;56499:225;:::o;56730:366::-;56872:3;56893:67;56957:2;56952:3;56893:67;:::i;:::-;56886:74;;56969:93;57058:3;56969:93;:::i;:::-;57087:2;57082:3;57078:12;57071:19;;56730:366;;;:::o;57102:419::-;57268:4;57306:2;57295:9;57291:18;57283:26;;57355:9;57349:4;57345:20;57341:1;57330:9;57326:17;57319:47;57383:131;57509:4;57383:131;:::i;:::-;57375:139;;57102:419;;;:::o;57527:182::-;57667:34;57663:1;57655:6;57651:14;57644:58;57527:182;:::o;57715:366::-;57857:3;57878:67;57942:2;57937:3;57878:67;:::i;:::-;57871:74;;57954:93;58043:3;57954:93;:::i;:::-;58072:2;58067:3;58063:12;58056:19;;57715:366;;;:::o;58087:419::-;58253:4;58291:2;58280:9;58276:18;58268:26;;58340:9;58334:4;58330:20;58326:1;58315:9;58311:17;58304:47;58368:131;58494:4;58368:131;:::i;:::-;58360:139;;58087:419;;;:::o;58512:147::-;58613:11;58650:3;58635:18;;58512:147;;;;:::o;58665:373::-;58769:3;58797:38;58829:5;58797:38;:::i;:::-;58851:88;58932:6;58927:3;58851:88;:::i;:::-;58844:95;;58948:52;58993:6;58988:3;58981:4;58974:5;58970:16;58948:52;:::i;:::-;59025:6;59020:3;59016:16;59009:23;;58773:265;58665:373;;;;:::o;59044:271::-;59174:3;59196:93;59285:3;59276:6;59196:93;:::i;:::-;59189:100;;59306:3;59299:10;;59044:271;;;;:::o;59321:178::-;59461:30;59457:1;59449:6;59445:14;59438:54;59321:178;:::o;59505:366::-;59647:3;59668:67;59732:2;59727:3;59668:67;:::i;:::-;59661:74;;59744:93;59833:3;59744:93;:::i;:::-;59862:2;59857:3;59853:12;59846:19;;59505:366;;;:::o;59877:419::-;60043:4;60081:2;60070:9;60066:18;60058:26;;60130:9;60124:4;60120:20;60116:1;60105:9;60101:17;60094:47;60158:131;60284:4;60158:131;:::i;:::-;60150:139;;59877:419;;;:::o;60302:182::-;60442:34;60438:1;60430:6;60426:14;60419:58;60302:182;:::o;60490:366::-;60632:3;60653:67;60717:2;60712:3;60653:67;:::i;:::-;60646:74;;60729:93;60818:3;60729:93;:::i;:::-;60847:2;60842:3;60838:12;60831:19;;60490:366;;;:::o;60862:419::-;61028:4;61066:2;61055:9;61051:18;61043:26;;61115:9;61109:4;61105:20;61101:1;61090:9;61086:17;61079:47;61143:131;61269:4;61143:131;:::i;:::-;61135:139;;60862:419;;;:::o;61287:137::-;61341:5;61372:6;61366:13;61357:22;;61388:30;61412:5;61388:30;:::i;:::-;61287:137;;;;:::o;61430:345::-;61497:6;61546:2;61534:9;61525:7;61521:23;61517:32;61514:119;;;61552:79;;:::i;:::-;61514:119;61672:1;61697:61;61750:7;61741:6;61730:9;61726:22;61697:61;:::i;:::-;61687:71;;61643:125;61430:345;;;;:::o;61781:181::-;61921:33;61917:1;61909:6;61905:14;61898:57;61781:181;:::o;61968:366::-;62110:3;62131:67;62195:2;62190:3;62131:67;:::i;:::-;62124:74;;62207:93;62296:3;62207:93;:::i;:::-;62325:2;62320:3;62316:12;62309:19;;61968:366;;;:::o;62340:419::-;62506:4;62544:2;62533:9;62529:18;62521:26;;62593:9;62587:4;62583:20;62579:1;62568:9;62564:17;62557:47;62621:131;62747:4;62621:131;:::i;:::-;62613:139;;62340:419;;;:::o"},"methodIdentifiers":{"CALLDATA_SIZE_LIMIT()":"5c5e3db1","FORWARDER_HUB_OVERHEAD()":"b90b41cf","PAYMASTER_ACCEPTANCE_BUDGET()":"df463a66","POST_RELAYED_CALL_GAS_LIMIT()":"bbdaa3c9","PRE_RELAYED_CALL_GAS_LIMIT()":"f9c002f7","_verifyForwarder(((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)))":"a5dcd07b","gasUsedByPost()":"ad12e50e","getGasAndDataLimits()":"b039a88f","getHubAddr()":"74e861d6","getPaymentData()":"ad02b07d","getRelayHubDeposit()":"2afe31c1","getTokenToEthOutput(uint256,address[])":"6a829418","isTokenWhitelisted(address)":"b5af090f","minBalance()":"c5bb8758","minGas()":"be37757a","owner()":"8da5cb5b","postRelayedCall(bytes,bool,uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))":"76fa01c3","preRelayedCall(((address,address,uint256,uint256,uint256,bytes,uint256),(uint256,uint256,uint256,address,address,address,bytes,uint256)),bytes,bytes,uint256)":"00be5dd4","renounceOwnership()":"715018a6","setFee(uint256)":"69fe0e2d","setGasUsedByPost(uint256)":"ae4f51cb","setMinBalance(uint256)":"c91d956c","setMinGas(uint256)":"ad80e451","setPaymentToken(address)":"6a326ab1","setRelayHub(address)":"7bb05264","setTarget(address)":"776d1a01","setTrustedForwarder(address)":"da742228","target()":"d4b83992","togglePause()":"c4ae3168","transferOwnership(address)":"f2fde38b","trustedForwarder()":"7da0a877","versionPaymaster()":"921276ea","whitelistToken(address,bool)":"0ffb1d8b","withdrawRelayHubDepositTo(uint256,address)":"2d14c4b7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"uniswapRouter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"contract IRelayHub\",\"name\":\"hub\",\"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\":[],\"name\":\"CALLDATA_SIZE_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FORWARDER_HUB_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAYMASTER_ACCEPTANCE_BUDGET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POST_RELAYED_CALL_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRE_RELAYED_CALL_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"internalType\":\"struct IForwarder.ForwardRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"internalType\":\"struct GsnTypes.RelayRequest\",\"name\":\"relayRequest\",\"type\":\"tuple\"}],\"name\":\"_verifyForwarder\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasUsedByPost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGasAndDataLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"acceptanceBudget\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preRelayedCallGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"postRelayedCallGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"calldataSizeLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct IPaymaster.GasAndDataLimits\",\"name\":\"limits\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHubAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPaymentData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelayHubDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getTokenToEthOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isTokenWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasUseWithoutPost\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"postRelayedCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"internalType\":\"struct IForwarder.ForwardRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pctRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRelayFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayWorker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymaster\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"paymasterData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"clientId\",\"type\":\"uint256\"}],\"internalType\":\"struct GsnTypes.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"internalType\":\"struct GsnTypes.RelayRequest\",\"name\":\"relayRequest\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"maxPossibleGas\",\"type\":\"uint256\"}],\"name\":\"preRelayedCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"revertOnRecipientRevert\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasUsedByPost\",\"type\":\"uint256\"}],\"name\":\"setGasUsedByPost\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minBalance\",\"type\":\"uint256\"}],\"name\":\"setMinBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minGas\",\"type\":\"uint256\"}],\"name\":\"setMinGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"name\":\"setPaymentToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IRelayHub\",\"name\":\"hub\",\"type\":\"address\"}],\"name\":\"setRelayHub\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"setTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"target\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"togglePause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionPaymaster\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"whitelist\",\"type\":\"bool\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"withdrawRelayHubDepositTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"postRelayedCall(bytes,bool,uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))\":{\"params\":{\"context\":\"- the call context, as returned by the preRelayedCall\",\"gasUseWithoutPost\":\"- the actual amount of gas used by the entire transaction, EXCEPT        the gas used by the postRelayedCall itself.\",\"relayData\":\"- the relay params of the request. can be used by relayHub.calculateCharge() Revert in this functions causes a revert of the client's relayed call (and preRelayedCall(), but the Paymaster is still committed to pay the relay for the entire transaction.\",\"success\":\"- true if the relayed call succeeded, false if it reverted\"}},\"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\":{\"getGasAndDataLimits()\":{\"notice\":\"Return the Gas Limits and msg.data max size constants used by the Paymaster.\"},\"getHubAddr()\":{\"notice\":\"return the relayHub of this contract.\"},\"getRelayHubDeposit()\":{\"notice\":\"check current deposit on relay hub.\"},\"postRelayedCall(bytes,bool,uint256,(uint256,uint256,uint256,address,address,address,bytes,uint256))\":{\"notice\":\"This method is called after the actual relayed function call. It may be used to record the transaction (e.g. charge the caller by some contract logic) for this call. MUST be protected with relayHubOnly() in case it modifies state.\"},\"withdrawRelayHubDepositTo(uint256,address)\":{\"notice\":\"withdraw deposit from relayHub\"}},\"notice\":\"A Token-based paymaster. - each request is paid for by the caller. - acceptRelayedCall - verify the caller can pay for the request in tokens. - preRelayedCall - pre-pay the maximum possible price for the tx - postRelayedCall - refund the caller for the unused gas\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TokenPaymaster.sol\":\"TokenPaymaster\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/BasePaymaster.sol\":{\"keccak256\":\"0x037963afa348ba25ed25d26f07a1b3545534e5447262eac8218f92246797569e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://482ab51f9c7a4fc86d3d1540a2465b1f5bf0a7244cc61de186233321dddbcdee\",\"dweb:/ipfs/QmY4geP56GPzkHADJ5xdks1ztrtFeVHqMu2SabHn8E3uuB\"]},\"@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0xca05fe8ee1d0bbdd9edd83f16b8481fa67704f0ed5a42d5c0f76c8a3a47d73f4\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e42577c586894c9fc9e11a3281c0e2d4183121714fd1101380b6b2b66c144ba3\",\"dweb:/ipfs/QmPQphvUxhvnYGXtNRbU7WcmbEP2N7mMDgC5R8R9AqC9xG\"]},\"@opengsn/contracts/src/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x9c717edb87debd2e6d3a7291ae1b2ec3248776617f20dbc2cbba66c7f1bf749c\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://ef2ce174df7e8dd8ac15c112768028bd89a517e21c354d5d35aa071f923e721d\",\"dweb:/ipfs/QmYHFK3FzfiiDRWhM8Q6KdT6YKmaA5JfDNKj6am7EymJU3\"]},\"@opengsn/contracts/src/interfaces/IRelayHub.sol\":{\"keccak256\":\"0x3497133a7147174c498d2feeb2569b973396a8c2c220b5876fd9eb3b59841c85\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://32bb285a0f675310ee87647d00717e2dee9dbc7179e5455a3e1d7a2e121b6bf7\",\"dweb:/ipfs/QmZABWeS7pi5KfhoDUKyZHEvwqiAL4sYvjr3UcWZ7SvqCX\"]},\"@opengsn/contracts/src/interfaces/IRelayRecipient.sol\":{\"keccak256\":\"0x199e82e0a2833a97213b5c16ac9b4e2b1814f2e90a4c4916855cbc21e710ad5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92112fc87990f2d55c538946266c48f43e6ca442186ef3b8172eb4632deb0db3\",\"dweb:/ipfs/QmU6pqFXYT8fYfyhw7viRA775eBH4W7PAd589DVFGtSgxo\"]},\"@opengsn/contracts/src/interfaces/IStakeManager.sol\":{\"keccak256\":\"0x834859879435b9032dc629a03baaa0d7ce645c184997985a7b8da944086753bb\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://08ac05ead3b791dc42287fdfb3ac1a3734876ed19971ddfedc904910dc88ee72\",\"dweb:/ipfs/QmSPBuZtdr8QtLWQSzX7eQo754bxzR2wnxoeWJxGWzK8Qb\"]},\"@opengsn/contracts/src/utils/GsnEip712Library.sol\":{\"keccak256\":\"0x329a0634ba63c397bde0cf2b003b577cacf1bfbab9616bbf415781de243730d3\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a6e52a2b8598d3478272f8791be1493645a14d850fac70c8a7180d72f00a45d2\",\"dweb:/ipfs/QmQmbSNNBU1LEgxEmhpVqhbts3RjEn9Zavwv5PmQJEdfoZ\"]},\"@opengsn/contracts/src/utils/GsnTypes.sol\":{\"keccak256\":\"0x632b33731c279b0a14b00ceeaaed067e0570881bf31ef383b6970cb595566269\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://c4ef0205cbfd132c978dac437b361749caecd2e69ae339b5826cb65a086bdbc1\",\"dweb:/ipfs/Qme5emF1fkmqfTWydJ4S97CbTidEx72VYvKLzTbapH3nGB\"]},\"@opengsn/contracts/src/utils/GsnUtils.sol\":{\"keccak256\":\"0x93465757df9b5721f0dde979be1675f82296b8f3cd196c6eee29d828698cb0de\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b9a5628093b0cffc70f851a64aef968e4a379b98d60a7855fa9afce102dad052\",\"dweb:/ipfs/QmaQZXC9vxMrhwXXsr8C6fNpYPQx1PfiAbfmweL3aHZCy5\"]},\"@opengsn/contracts/src/utils/MinLibBytes.sol\":{\"keccak256\":\"0x8063af8e0f134be3d794ad39bdc0041f33a16c91a4ee7abb968d4c15c8d10c54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c56adf5ddc717546e922b5f0cdb1d2bf084b070d2256b684a746d535cefdfa23\",\"dweb:/ipfs/QmbGgdbkpg4fz79c8tgKFJB4afXHRYgL3iMRf9KBQSVkWu\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]},\"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol\":{\"keccak256\":\"0x8a3c5c449d4b7cd76513ed6995f4b86e4a86f222c770f8442f5fc128ce29b4d2\",\"urls\":[\"bzz-raw://1df63ca373dafae3bd0ee7fe70f890a1dc7c45ed869c01de68413e0e97ff9deb\",\"dweb:/ipfs/QmefJgEYGUL8KX7kQKYTrDweF8GB7yjy3nw5Bmqzryg7PG\"]},\"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol\":{\"keccak256\":\"0x744e30c133bd0f7ca9e7163433cf6d72f45c6bb1508c2c9c02f1a6db796ae59d\",\"urls\":[\"bzz-raw://9bf2f4454ad63d4cff03a0630e787d9e8a9deed80aec89682cd8ad6379d9ef8c\",\"dweb:/ipfs/Qme51hQNR2wpax7ooUadhtqLtXm8ffeVVYyubLkTT4wMCG\"]},\"contracts/TokenPaymaster.sol\":{\"keccak256\":\"0x9873f74ea3f1e1a49e0aaaaa7f9a6e6e2192f773b775e209357b9c392a37e5c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc5093c840ce271d7aab1e2d11497c07b4f5d48d9e7aa8ba35ee253ab4b2ea88\",\"dweb:/ipfs/QmYvKJT5ma3CuZXBRgrEQpP961mQwTHchSVzWmxCRmA1AG\"]}},\"version\":1}"}},"contracts/TokenSwap.sol":{"TokenSwap":{"abi":[{"inputs":[{"internalType":"address","name":"_forwarder","type":"address"},{"internalType":"address","name":"uniswapRouter","type":"address"},{"internalType":"address payable","name":"tokenPaymaster","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"Received","type":"event"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"swapTokensForEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionRecipient","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"@_4255":{"entryPoint":null,"id":4255,"parameterSlots":3,"returnSlots":0},"@_setTrustedForwarder_225":{"entryPoint":198,"id":225,"parameterSlots":1,"returnSlots":0},"abi_decode_t_address_fromMemory":{"entryPoint":348,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_payable_fromMemory":{"entryPoint":417,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_address_payable_fromMemory":{"entryPoint":440,"id":null,"parameterSlots":2,"returnSlots":3},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_t_address":{"entryPoint":302,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address_payable":{"entryPoint":371,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":270,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":265,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_t_address":{"entryPoint":322,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address_payable":{"entryPoint":391,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1946:25","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:25","statements":[{"nodeType":"YulAssignment","src":"57:19:25","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:25","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:25"},"nodeType":"YulFunctionCall","src":"67:9:25"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:25"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:25","type":""}],"src":"7:75:25"},{"body":{"nodeType":"YulBlock","src":"177:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:25"},"nodeType":"YulFunctionCall","src":"187:12:25"},"nodeType":"YulExpressionStatement","src":"187:12:25"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:25"},{"body":{"nodeType":"YulBlock","src":"300:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:25"},"nodeType":"YulFunctionCall","src":"310:12:25"},"nodeType":"YulExpressionStatement","src":"310:12:25"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:25"},{"body":{"nodeType":"YulBlock","src":"379:81:25","statements":[{"nodeType":"YulAssignment","src":"389:65:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:25","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:25"},"nodeType":"YulFunctionCall","src":"400:54:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:25"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:25","type":""}],"src":"334:126:25"},{"body":{"nodeType":"YulBlock","src":"511:51:25","statements":[{"nodeType":"YulAssignment","src":"521:35:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:25"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:25"},"nodeType":"YulFunctionCall","src":"532:24:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:25"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:25","type":""}],"src":"466:96:25"},{"body":{"nodeType":"YulBlock","src":"611:79:25","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:25"},"nodeType":"YulFunctionCall","src":"670:12:25"},"nodeType":"YulExpressionStatement","src":"670:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:25"},"nodeType":"YulFunctionCall","src":"641:24:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:25"},"nodeType":"YulFunctionCall","src":"631:35:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:25"},"nodeType":"YulFunctionCall","src":"624:43:25"},"nodeType":"YulIf","src":"621:63:25"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:25","type":""}],"src":"568:122:25"},{"body":{"nodeType":"YulBlock","src":"759:80:25","statements":[{"nodeType":"YulAssignment","src":"769:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"784:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"778:5:25"},"nodeType":"YulFunctionCall","src":"778:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"769:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"827:5:25"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"800:26:25"},"nodeType":"YulFunctionCall","src":"800:33:25"},"nodeType":"YulExpressionStatement","src":"800:33:25"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"737:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"745:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"753:5:25","type":""}],"src":"696:143:25"},{"body":{"nodeType":"YulBlock","src":"898:51:25","statements":[{"nodeType":"YulAssignment","src":"908:35:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"937:5:25"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"919:17:25"},"nodeType":"YulFunctionCall","src":"919:24:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"908:7:25"}]}]},"name":"cleanup_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"880:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"890:7:25","type":""}],"src":"845:104:25"},{"body":{"nodeType":"YulBlock","src":"1006:87:25","statements":[{"body":{"nodeType":"YulBlock","src":"1071:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1080:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1083:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1073:6:25"},"nodeType":"YulFunctionCall","src":"1073:12:25"},"nodeType":"YulExpressionStatement","src":"1073:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1029:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1062:5:25"}],"functionName":{"name":"cleanup_t_address_payable","nodeType":"YulIdentifier","src":"1036:25:25"},"nodeType":"YulFunctionCall","src":"1036:32:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1026:2:25"},"nodeType":"YulFunctionCall","src":"1026:43:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1019:6:25"},"nodeType":"YulFunctionCall","src":"1019:51:25"},"nodeType":"YulIf","src":"1016:71:25"}]},"name":"validator_revert_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"999:5:25","type":""}],"src":"955:138:25"},{"body":{"nodeType":"YulBlock","src":"1170:88:25","statements":[{"nodeType":"YulAssignment","src":"1180:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1195:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1189:5:25"},"nodeType":"YulFunctionCall","src":"1189:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1180:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1246:5:25"}],"functionName":{"name":"validator_revert_t_address_payable","nodeType":"YulIdentifier","src":"1211:34:25"},"nodeType":"YulFunctionCall","src":"1211:41:25"},"nodeType":"YulExpressionStatement","src":"1211:41:25"}]},"name":"abi_decode_t_address_payable_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1148:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"1156:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1164:5:25","type":""}],"src":"1099:159:25"},{"body":{"nodeType":"YulBlock","src":"1383:560:25","statements":[{"body":{"nodeType":"YulBlock","src":"1429:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1431:77:25"},"nodeType":"YulFunctionCall","src":"1431:79:25"},"nodeType":"YulExpressionStatement","src":"1431:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1404:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"1413:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1400:3:25"},"nodeType":"YulFunctionCall","src":"1400:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"1425:2:25","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1396:3:25"},"nodeType":"YulFunctionCall","src":"1396:32:25"},"nodeType":"YulIf","src":"1393:119:25"},{"nodeType":"YulBlock","src":"1522:128:25","statements":[{"nodeType":"YulVariableDeclaration","src":"1537:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"1551:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1541:6:25","type":""}]},{"nodeType":"YulAssignment","src":"1566:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1612:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"1623:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1608:3:25"},"nodeType":"YulFunctionCall","src":"1608:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1632:7:25"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"1576:31:25"},"nodeType":"YulFunctionCall","src":"1576:64:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1566:6:25"}]}]},{"nodeType":"YulBlock","src":"1660:129:25","statements":[{"nodeType":"YulVariableDeclaration","src":"1675:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"1689:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1679:6:25","type":""}]},{"nodeType":"YulAssignment","src":"1705:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1751:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"1762:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1747:3:25"},"nodeType":"YulFunctionCall","src":"1747:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1771:7:25"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"1715:31:25"},"nodeType":"YulFunctionCall","src":"1715:64:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1705:6:25"}]}]},{"nodeType":"YulBlock","src":"1799:137:25","statements":[{"nodeType":"YulVariableDeclaration","src":"1814:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"1828:2:25","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1818:6:25","type":""}]},{"nodeType":"YulAssignment","src":"1844:82:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1898:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"1909:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:25"},"nodeType":"YulFunctionCall","src":"1894:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1918:7:25"}],"functionName":{"name":"abi_decode_t_address_payable_fromMemory","nodeType":"YulIdentifier","src":"1854:39:25"},"nodeType":"YulFunctionCall","src":"1854:72:25"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1844:6:25"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_address_payable_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1337:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1348:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1360:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1368:6:25","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1376:6:25","type":""}],"src":"1264:679:25"}]},"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 cleanup_t_address_payable(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\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_addresst_addresst_address_payable_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 := 64\n\n            value2 := abi_decode_t_address_payable_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n}\n","id":25,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523480156200001157600080fd5b506040516200119e3803806200119e8339818101604052810190620000379190620001b8565b6200004883620000c660201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000214565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200013b826200010e565b9050919050565b6200014d816200012e565b81146200015957600080fd5b50565b6000815190506200016d8162000142565b92915050565b600062000180826200010e565b9050919050565b620001928162000173565b81146200019e57600080fd5b50565b600081519050620001b28162000187565b92915050565b600080600060608486031215620001d457620001d362000109565b5b6000620001e4868287016200015c565b9350506020620001f7868287016200015c565b92505060406200020a86828701620001a1565b9150509250925092565b608051610f606200023e600039600081816103ec0152818161046f01526104b20152610f606000f3fe6080604052600436106100435760003560e01c8063486ff0cd1461019757806356feb11b146101c2578063572b6c05146101eb5780637da0a8771461022857610192565b366101925760003490506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610095906108b7565b60006040518083038185875af1925050503d80600081146100d2576040519150601f19603f3d011682016040523d82523d6000602084013e6100d7565b606091505b505090508061011b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011290610929565b60405180910390fd5b7f8863e458255c600ae3e61be347822f3ee57088c8538b68b5dd2357e682e59e1934600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161016e9291906109a3565b60405180910390a16000600260146101000a81548160ff0219169083151502179055005b600080fd5b3480156101a357600080fd5b506101ac610253565b6040516101b99190610a54565b60405180910390f35b3480156101ce57600080fd5b506101e960048036038101906101e49190610ad3565b610273565b005b3480156101f757600080fd5b50610212600480360381019061020d9190610b13565b6106db565b60405161021f9190610b5b565b60405180910390f35b34801561023457600080fd5b5061023d610734565b60405161024a9190610b76565b60405180910390f35b6060604051806060016040528060228152602001610f0960229139905090565b600260149054906101000a900460ff16156102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ba90610bdd565b60405180910390fd5b6001600260146101000a81548160ff0219169083151502179055506102e661075d565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008290508073ffffffffffffffffffffffffffffffffffffffff166323b872dd600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630856040518463ffffffff1660e01b815260040161038a93929190610bfd565b6020604051808303816000875af11580156103a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cd9190610c60565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b8152600401610429929190610c8d565b6020604051808303816000875af1158015610448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046c9190610c60565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947836000610544877f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561051b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053f9190610ccb565b610794565b30426040518663ffffffff1660e01b8152600401610566959493929190610dfb565b600060405180830381600087803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b50505050600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad02b07d6040518163ffffffff1660e01b81526004016040805180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190610e6a565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead846040518463ffffffff1660e01b815260040161069093929190610bfd565b6020604051808303816000875af11580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d39190610c60565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060146000369050101580156107795750610778336106db565b5b1561078d57601436033560601c9050610791565b3390505b90565b6060600267ffffffffffffffff8111156107b1576107b0610eaa565b5b6040519080825280602002602001820160405280156107df5781602001602082028036833780820191505090505b50905082816000815181106107f7576107f6610ed9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061084657610845610ed9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505092915050565b600081905092915050565b50565b60006108a1600083610886565b91506108ac82610891565b600082019050919050565b60006108c282610894565b9150819050919050565b600082825260208201905092915050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b60006109136014836108cc565b915061091e826108dd565b602082019050919050565b6000602082019050818103600083015261094281610906565b9050919050565b6000819050919050565b61095c81610949565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061098d82610962565b9050919050565b61099d81610982565b82525050565b60006040820190506109b86000830185610953565b6109c56020830184610994565b9392505050565b600081519050919050565b60005b838110156109f55780820151818401526020810190506109da565b83811115610a04576000848401525b50505050565b6000601f19601f8301169050919050565b6000610a26826109cc565b610a3081856108cc565b9350610a408185602086016109d7565b610a4981610a0a565b840191505092915050565b60006020820190508181036000830152610a6e8184610a1b565b905092915050565b600080fd5b610a8481610982565b8114610a8f57600080fd5b50565b600081359050610aa181610a7b565b92915050565b610ab081610949565b8114610abb57600080fd5b50565b600081359050610acd81610aa7565b92915050565b60008060408385031215610aea57610ae9610a76565b5b6000610af885828601610a92565b9250506020610b0985828601610abe565b9150509250929050565b600060208284031215610b2957610b28610a76565b5b6000610b3784828501610a92565b91505092915050565b60008115159050919050565b610b5581610b40565b82525050565b6000602082019050610b706000830184610b4c565b92915050565b6000602082019050610b8b6000830184610994565b92915050565b7f4f6e207377617000000000000000000000000000000000000000000000000000600082015250565b6000610bc76007836108cc565b9150610bd282610b91565b602082019050919050565b60006020820190508181036000830152610bf681610bba565b9050919050565b6000606082019050610c126000830186610994565b610c1f6020830185610994565b610c2c6040830184610953565b949350505050565b610c3d81610b40565b8114610c4857600080fd5b50565b600081519050610c5a81610c34565b92915050565b600060208284031215610c7657610c75610a76565b5b6000610c8484828501610c4b565b91505092915050565b6000604082019050610ca26000830185610994565b610caf6020830184610953565b9392505050565b600081519050610cc581610a7b565b92915050565b600060208284031215610ce157610ce0610a76565b5b6000610cef84828501610cb6565b91505092915050565b6000819050919050565b6000819050919050565b6000610d27610d22610d1d84610cf8565b610d02565b610949565b9050919050565b610d3781610d0c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610d7281610982565b82525050565b6000610d848383610d69565b60208301905092915050565b6000602082019050919050565b6000610da882610d3d565b610db28185610d48565b9350610dbd83610d59565b8060005b83811015610dee578151610dd58882610d78565b9750610de083610d90565b925050600181019050610dc1565b5085935050505092915050565b600060a082019050610e106000830188610953565b610e1d6020830187610d2e565b8181036040830152610e2f8186610d9d565b9050610e3e6060830185610994565b610e4b6080830184610953565b9695505050505050565b600081519050610e6481610aa7565b92915050565b60008060408385031215610e8157610e80610a76565b5b6000610e8f85828601610cb6565b9250506020610ea085828601610e55565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfe322e322e302b6f70656e67736e2e737761702e6972656c6179726563697069656e74a26469706673582212206dab5d431d8207e62d703beb77d862de6ee88dc831596d45921f7751a78f527f64736f6c634300080d0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x119E CODESIZE SUB DUP1 PUSH3 0x119E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x1B8 JUMP JUMPDEST PUSH3 0x48 DUP4 PUSH3 0xC6 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP PUSH3 0x214 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x13B DUP3 PUSH3 0x10E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x14D DUP2 PUSH3 0x12E JUMP JUMPDEST DUP2 EQ PUSH3 0x159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x16D DUP2 PUSH3 0x142 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x180 DUP3 PUSH3 0x10E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x192 DUP2 PUSH3 0x173 JUMP JUMPDEST DUP2 EQ PUSH3 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x1B2 DUP2 PUSH3 0x187 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x1D4 JUMPI PUSH3 0x1D3 PUSH3 0x109 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH3 0x1E4 DUP7 DUP3 DUP8 ADD PUSH3 0x15C JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH3 0x1F7 DUP7 DUP3 DUP8 ADD PUSH3 0x15C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH3 0x20A DUP7 DUP3 DUP8 ADD PUSH3 0x1A1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xF60 PUSH3 0x23E PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x3EC ADD MSTORE DUP2 DUP2 PUSH2 0x46F ADD MSTORE PUSH2 0x4B2 ADD MSTORE PUSH2 0xF60 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x486FF0CD EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x56FEB11B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0x7DA0A877 EQ PUSH2 0x228 JUMPI PUSH2 0x192 JUMP JUMPDEST CALLDATASIZE PUSH2 0x192 JUMPI PUSH1 0x0 CALLVALUE SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x95 SWAP1 PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x112 SWAP1 PUSH2 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x8863E458255C600AE3E61BE347822F3EE57088C8538B68B5DD2357E682E59E19 CALLVALUE PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH2 0x16E SWAP3 SWAP2 SWAP1 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 PUSH1 0x2 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AC PUSH2 0x253 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B9 SWAP2 SWAP1 PUSH2 0xA54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E4 SWAP2 SWAP1 PUSH2 0xAD3 JUMP JUMPDEST PUSH2 0x273 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20D SWAP2 SWAP1 PUSH2 0xB13 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21F SWAP2 SWAP1 PUSH2 0xB5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24A SWAP2 SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF09 PUSH1 0x22 SWAP2 CODECOPY SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BA SWAP1 PUSH2 0xBDD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x2 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x2E6 PUSH2 0x75D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP3 SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x38A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x3CD SWAP2 SWAP1 PUSH2 0xC60 JUMP JUMPDEST POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x429 SWAP3 SWAP2 SWAP1 PUSH2 0xC8D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x46C SWAP2 SWAP1 PUSH2 0xC60 JUMP JUMPDEST POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x791AC947 DUP4 PUSH1 0x0 PUSH2 0x544 DUP8 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD5C4648 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 0x51B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x53F SWAP2 SWAP1 PUSH2 0xCCB JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST ADDRESS TIMESTAMP PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x566 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xDFB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x594 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD02B07D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x62B SWAP2 SWAP1 PUSH2 0xE6A JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xDEAD DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x6D3 SWAP2 SWAP1 PUSH2 0xC60 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x14 PUSH1 0x0 CALLDATASIZE SWAP1 POP LT ISZERO DUP1 ISZERO PUSH2 0x779 JUMPI POP PUSH2 0x778 CALLER PUSH2 0x6DB JUMP JUMPDEST JUMPDEST ISZERO PUSH2 0x78D JUMPI PUSH1 0x14 CALLDATASIZE SUB CALLDATALOAD PUSH1 0x60 SHR SWAP1 POP PUSH2 0x791 JUMP JUMPDEST CALLER SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B1 JUMPI PUSH2 0x7B0 PUSH2 0xEAA JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7DF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7F7 JUMPI PUSH2 0x7F6 PUSH2 0xED9 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x846 JUMPI PUSH2 0x845 PUSH2 0xED9 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A1 PUSH1 0x0 DUP4 PUSH2 0x886 JUMP JUMPDEST SWAP2 POP PUSH2 0x8AC DUP3 PUSH2 0x891 JUMP JUMPDEST PUSH1 0x0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C2 DUP3 PUSH2 0x894 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4661696C656420746F2073656E64204574686572000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x913 PUSH1 0x14 DUP4 PUSH2 0x8CC JUMP JUMPDEST SWAP2 POP PUSH2 0x91E DUP3 PUSH2 0x8DD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x942 DUP2 PUSH2 0x906 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x95C DUP2 PUSH2 0x949 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98D DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x99D DUP2 PUSH2 0x982 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x9B8 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x953 JUMP JUMPDEST PUSH2 0x9C5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9F5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x9DA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA04 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA26 DUP3 PUSH2 0x9CC JUMP JUMPDEST PUSH2 0xA30 DUP2 DUP6 PUSH2 0x8CC JUMP JUMPDEST SWAP4 POP PUSH2 0xA40 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x9D7 JUMP JUMPDEST PUSH2 0xA49 DUP2 PUSH2 0xA0A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xA6E DUP2 DUP5 PUSH2 0xA1B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA84 DUP2 PUSH2 0x982 JUMP JUMPDEST DUP2 EQ PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xAA1 DUP2 PUSH2 0xA7B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAB0 DUP2 PUSH2 0x949 JUMP JUMPDEST DUP2 EQ PUSH2 0xABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xACD DUP2 PUSH2 0xAA7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAEA JUMPI PUSH2 0xAE9 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAF8 DUP6 DUP3 DUP7 ADD PUSH2 0xA92 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB09 DUP6 DUP3 DUP7 ADD PUSH2 0xABE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB29 JUMPI PUSH2 0xB28 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB37 DUP5 DUP3 DUP6 ADD PUSH2 0xA92 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB55 DUP2 PUSH2 0xB40 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB70 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB4C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB8B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F6E207377617000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC7 PUSH1 0x7 DUP4 PUSH2 0x8CC JUMP JUMPDEST SWAP2 POP PUSH2 0xBD2 DUP3 PUSH2 0xB91 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBF6 DUP2 PUSH2 0xBBA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xC12 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x994 JUMP JUMPDEST PUSH2 0xC1F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x994 JUMP JUMPDEST PUSH2 0xC2C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xC3D DUP2 PUSH2 0xB40 JUMP JUMPDEST DUP2 EQ PUSH2 0xC48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xC5A DUP2 PUSH2 0xC34 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC76 JUMPI PUSH2 0xC75 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC84 DUP5 DUP3 DUP6 ADD PUSH2 0xC4B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xCA2 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x994 JUMP JUMPDEST PUSH2 0xCAF PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xCC5 DUP2 PUSH2 0xA7B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCE1 JUMPI PUSH2 0xCE0 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xCEF DUP5 DUP3 DUP6 ADD PUSH2 0xCB6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD27 PUSH2 0xD22 PUSH2 0xD1D DUP5 PUSH2 0xCF8 JUMP JUMPDEST PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x949 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD37 DUP2 PUSH2 0xD0C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD72 DUP2 PUSH2 0x982 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD84 DUP4 DUP4 PUSH2 0xD69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA8 DUP3 PUSH2 0xD3D JUMP JUMPDEST PUSH2 0xDB2 DUP2 DUP6 PUSH2 0xD48 JUMP JUMPDEST SWAP4 POP PUSH2 0xDBD DUP4 PUSH2 0xD59 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDEE JUMPI DUP2 MLOAD PUSH2 0xDD5 DUP9 DUP3 PUSH2 0xD78 JUMP JUMPDEST SWAP8 POP PUSH2 0xDE0 DUP4 PUSH2 0xD90 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xDC1 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0xE10 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x953 JUMP JUMPDEST PUSH2 0xE1D PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0xD2E JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xE2F DUP2 DUP7 PUSH2 0xD9D JUMP JUMPDEST SWAP1 POP PUSH2 0xE3E PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x994 JUMP JUMPDEST PUSH2 0xE4B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xE64 DUP2 PUSH2 0xAA7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE81 JUMPI PUSH2 0xE80 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xE8F DUP6 DUP3 DUP7 ADD PUSH2 0xCB6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xEA0 DUP6 DUP3 DUP7 ADD PUSH2 0xE55 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID ORIGIN 0x2E ORIGIN 0x2E ADDRESS 0x2B PUSH16 0x70656E67736E2E737761702E6972656C PUSH2 0x7972 PUSH6 0x63697069656E PUSH21 0xA26469706673582212206DAB5D431D8207E62D703B 0xEB PUSH24 0xD862DE6EE88DC831596D45921F7751A78F527F64736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ","sourceMap":"411:1762:24:-:0;;;843:228;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32;957:10;936:20;;;:32;;:::i;:::-;1003:13;974:43;;;;;;;;;;1051:14;1023:10;;:43;;;;;;;;;;;;;;;;;;843:228;;;411:1762;;581:106:1;670:10;650:17;;:30;;;;;;;;;;;;;;;;;;581:106;:::o;88:117:25:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:104::-;890:7;919:24;937:5;919:24;:::i;:::-;908:35;;845:104;;;:::o;955:138::-;1036:32;1062:5;1036:32;:::i;:::-;1029:5;1026:43;1016:71;;1083:1;1080;1073:12;1016:71;955:138;:::o;1099:159::-;1164:5;1195:6;1189:13;1180:22;;1211:41;1246:5;1211:41;:::i;:::-;1099:159;;;;:::o;1264:679::-;1360:6;1368;1376;1425:2;1413:9;1404:7;1400:23;1396:32;1393:119;;;1431:79;;:::i;:::-;1393:119;1551:1;1576:64;1632:7;1623:6;1612:9;1608:22;1576:64;:::i;:::-;1566:74;;1522:128;1689:2;1715:64;1771:7;1762:6;1751:9;1747:22;1715:64;:::i;:::-;1705:74;;1660:129;1828:2;1854:72;1918:7;1909:6;1898:9;1894:22;1854:72;:::i;:::-;1844:82;;1799:137;1264:679;;;;;:::o;411:1762:24:-;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_4408":{"entryPoint":null,"id":4408,"parameterSlots":0,"returnSlots":0},"@_getPath_4286":{"entryPoint":1940,"id":4286,"parameterSlots":2,"returnSlots":1},"@_msgSender_265":{"entryPoint":1885,"id":265,"parameterSlots":0,"returnSlots":1},"@isTrustedForwarder_238":{"entryPoint":1755,"id":238,"parameterSlots":1,"returnSlots":1},"@swapTokensForEth_4363":{"entryPoint":627,"id":4363,"parameterSlots":2,"returnSlots":0},"@trustedForwarder_215":{"entryPoint":1844,"id":215,"parameterSlots":0,"returnSlots":1},"@versionRecipient_4372":{"entryPoint":595,"id":4372,"parameterSlots":0,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2706,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":3254,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":3147,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":2750,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":3669,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2835,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":3275,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2771,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256_fromMemory":{"entryPoint":3690,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":3168,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_address_to_t_address":{"entryPoint":3448,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":3433,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":2452,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":3485,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":2892,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_rational_0_by_1_to_t_uint256_fromStack":{"entryPoint":3374,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":2587,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb_to_t_string_memory_ptr_fromStack":{"entryPoint":2310,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652_to_t_string_memory_ptr_fromStack":{"entryPoint":3002,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":2196,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":2387,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2231,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":2934,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":3069,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":3213,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":2907,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2644,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2345,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3037,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed":{"entryPoint":2467,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256_t_rational_0_by_1_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__to_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed":{"entryPoint":3579,"id":null,"parameterSlots":6,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":3417,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":3389,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":2508,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":3472,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":3400,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":2182,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":2252,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":2434,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":2880,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_0_by_1":{"entryPoint":3320,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2402,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":2377,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_0_by_1_to_t_uint256":{"entryPoint":3340,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":2519,"id":null,"parameterSlots":3,"returnSlots":0},"identity":{"entryPoint":3330,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x32":{"entryPoint":3801,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3754,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2678,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2570,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb":{"entryPoint":2269,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652":{"entryPoint":2961,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470":{"entryPoint":2193,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2683,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":3124,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":2727,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:13521:25","statements":[{"body":{"nodeType":"YulBlock","src":"120:34:25","statements":[{"nodeType":"YulAssignment","src":"130:18:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"145:3:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"130:11:25"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"92:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"97:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"108:11:25","type":""}],"src":"7:147:25"},{"body":{"nodeType":"YulBlock","src":"266:8:25","statements":[]},"name":"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"258:6:25","type":""}],"src":"160:114:25"},{"body":{"nodeType":"YulBlock","src":"443:235:25","statements":[{"nodeType":"YulAssignment","src":"453:90:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"536:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"541:1:25","type":"","value":"0"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"460:75:25"},"nodeType":"YulFunctionCall","src":"460:83:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"453:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"641:3:25"}],"functionName":{"name":"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nodeType":"YulIdentifier","src":"552:88:25"},"nodeType":"YulFunctionCall","src":"552:93:25"},"nodeType":"YulExpressionStatement","src":"552:93:25"},{"nodeType":"YulAssignment","src":"654:18:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"665:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"670:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"661:3:25"},"nodeType":"YulFunctionCall","src":"661:11:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"654:3:25"}]}]},"name":"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"431:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"439:3:25","type":""}],"src":"280:398:25"},{"body":{"nodeType":"YulBlock","src":"872:191:25","statements":[{"nodeType":"YulAssignment","src":"883:154:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1033:3:25"}],"functionName":{"name":"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"890:141:25"},"nodeType":"YulFunctionCall","src":"890:147:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"883:3:25"}]},{"nodeType":"YulAssignment","src":"1047:10:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"1054:3:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1047:3:25"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"859:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"868:3:25","type":""}],"src":"684:379:25"},{"body":{"nodeType":"YulBlock","src":"1165:73:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1182:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"1187:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1175:6:25"},"nodeType":"YulFunctionCall","src":"1175:19:25"},"nodeType":"YulExpressionStatement","src":"1175:19:25"},{"nodeType":"YulAssignment","src":"1203:29:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1222:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"1227:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1218:3:25"},"nodeType":"YulFunctionCall","src":"1218:14:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1203:11:25"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1137:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"1142:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1153:11:25","type":""}],"src":"1069:169:25"},{"body":{"nodeType":"YulBlock","src":"1350:64:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1372:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"1380:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1368:3:25"},"nodeType":"YulFunctionCall","src":"1368:14:25"},{"hexValue":"4661696c656420746f2073656e64204574686572","kind":"string","nodeType":"YulLiteral","src":"1384:22:25","type":"","value":"Failed to send Ether"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1361:6:25"},"nodeType":"YulFunctionCall","src":"1361:46:25"},"nodeType":"YulExpressionStatement","src":"1361:46:25"}]},"name":"store_literal_in_memory_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1342:6:25","type":""}],"src":"1244:170:25"},{"body":{"nodeType":"YulBlock","src":"1566:220:25","statements":[{"nodeType":"YulAssignment","src":"1576:74:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1642:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"1647:2:25","type":"","value":"20"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1583:58:25"},"nodeType":"YulFunctionCall","src":"1583:67:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1576:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1748:3:25"}],"functionName":{"name":"store_literal_in_memory_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb","nodeType":"YulIdentifier","src":"1659:88:25"},"nodeType":"YulFunctionCall","src":"1659:93:25"},"nodeType":"YulExpressionStatement","src":"1659:93:25"},{"nodeType":"YulAssignment","src":"1761:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1772:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"1777:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1768:3:25"},"nodeType":"YulFunctionCall","src":"1768:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1761:3:25"}]}]},"name":"abi_encode_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1554:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1562:3:25","type":""}],"src":"1420:366:25"},{"body":{"nodeType":"YulBlock","src":"1963:248:25","statements":[{"nodeType":"YulAssignment","src":"1973:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1985:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"1996:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1981:3:25"},"nodeType":"YulFunctionCall","src":"1981:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1973:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2020:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"2031:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2016:3:25"},"nodeType":"YulFunctionCall","src":"2016:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2039:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"2045:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2035:3:25"},"nodeType":"YulFunctionCall","src":"2035:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:25"},"nodeType":"YulFunctionCall","src":"2009:47:25"},"nodeType":"YulExpressionStatement","src":"2009:47:25"},{"nodeType":"YulAssignment","src":"2065:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2199:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2073:124:25"},"nodeType":"YulFunctionCall","src":"2073:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2065:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1943:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1958:4:25","type":""}],"src":"1792:419:25"},{"body":{"nodeType":"YulBlock","src":"2262:32:25","statements":[{"nodeType":"YulAssignment","src":"2272:16:25","value":{"name":"value","nodeType":"YulIdentifier","src":"2283:5:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2272:7:25"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2244:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2254:7:25","type":""}],"src":"2217:77:25"},{"body":{"nodeType":"YulBlock","src":"2365:53:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2382:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2405:5:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2387:17:25"},"nodeType":"YulFunctionCall","src":"2387:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2375:6:25"},"nodeType":"YulFunctionCall","src":"2375:37:25"},"nodeType":"YulExpressionStatement","src":"2375:37:25"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2353:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2360:3:25","type":""}],"src":"2300:118:25"},{"body":{"nodeType":"YulBlock","src":"2469:81:25","statements":[{"nodeType":"YulAssignment","src":"2479:65:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2494:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"2501:42:25","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2490:3:25"},"nodeType":"YulFunctionCall","src":"2490:54:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2479:7:25"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2451:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2461:7:25","type":""}],"src":"2424:126:25"},{"body":{"nodeType":"YulBlock","src":"2601:51:25","statements":[{"nodeType":"YulAssignment","src":"2611:35:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2640:5:25"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"2622:17:25"},"nodeType":"YulFunctionCall","src":"2622:24:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2611:7:25"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2583:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2593:7:25","type":""}],"src":"2556:96:25"},{"body":{"nodeType":"YulBlock","src":"2723:53:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2740:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2763:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"2745:17:25"},"nodeType":"YulFunctionCall","src":"2745:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2733:6:25"},"nodeType":"YulFunctionCall","src":"2733:37:25"},"nodeType":"YulExpressionStatement","src":"2733:37:25"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2711:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2718:3:25","type":""}],"src":"2658:118:25"},{"body":{"nodeType":"YulBlock","src":"2908:206:25","statements":[{"nodeType":"YulAssignment","src":"2918:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2930:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"2941:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2926:3:25"},"nodeType":"YulFunctionCall","src":"2926:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2918:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2998:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3011:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"3022:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3007:3:25"},"nodeType":"YulFunctionCall","src":"3007:17:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2954:43:25"},"nodeType":"YulFunctionCall","src":"2954:71:25"},"nodeType":"YulExpressionStatement","src":"2954:71:25"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3079:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3092:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"3103:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3088:3:25"},"nodeType":"YulFunctionCall","src":"3088:18:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"3035:43:25"},"nodeType":"YulFunctionCall","src":"3035:72:25"},"nodeType":"YulExpressionStatement","src":"3035:72:25"}]},"name":"abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2872:9:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2884:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2892:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2903:4:25","type":""}],"src":"2782:332:25"},{"body":{"nodeType":"YulBlock","src":"3179:40:25","statements":[{"nodeType":"YulAssignment","src":"3190:22:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3206:5:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3200:5:25"},"nodeType":"YulFunctionCall","src":"3200:12:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3190:6:25"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3162:5:25","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3172:6:25","type":""}],"src":"3120:99:25"},{"body":{"nodeType":"YulBlock","src":"3274:258:25","statements":[{"nodeType":"YulVariableDeclaration","src":"3284:10:25","value":{"kind":"number","nodeType":"YulLiteral","src":"3293:1:25","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3288:1:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"3353:63:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3378:3:25"},{"name":"i","nodeType":"YulIdentifier","src":"3383:1:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3374:3:25"},"nodeType":"YulFunctionCall","src":"3374:11:25"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3397:3:25"},{"name":"i","nodeType":"YulIdentifier","src":"3402:1:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3393:3:25"},"nodeType":"YulFunctionCall","src":"3393:11:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3387:5:25"},"nodeType":"YulFunctionCall","src":"3387:18:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3367:6:25"},"nodeType":"YulFunctionCall","src":"3367:39:25"},"nodeType":"YulExpressionStatement","src":"3367:39:25"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3314:1:25"},{"name":"length","nodeType":"YulIdentifier","src":"3317:6:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3311:2:25"},"nodeType":"YulFunctionCall","src":"3311:13:25"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3325:19:25","statements":[{"nodeType":"YulAssignment","src":"3327:15:25","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3336:1:25"},{"kind":"number","nodeType":"YulLiteral","src":"3339:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3332:3:25"},"nodeType":"YulFunctionCall","src":"3332:10:25"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3327:1:25"}]}]},"pre":{"nodeType":"YulBlock","src":"3307:3:25","statements":[]},"src":"3303:113:25"},{"body":{"nodeType":"YulBlock","src":"3450:76:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3500:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"3505:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3496:3:25"},"nodeType":"YulFunctionCall","src":"3496:16:25"},{"kind":"number","nodeType":"YulLiteral","src":"3514:1:25","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3489:6:25"},"nodeType":"YulFunctionCall","src":"3489:27:25"},"nodeType":"YulExpressionStatement","src":"3489:27:25"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3431:1:25"},{"name":"length","nodeType":"YulIdentifier","src":"3434:6:25"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3428:2:25"},"nodeType":"YulFunctionCall","src":"3428:13:25"},"nodeType":"YulIf","src":"3425:101:25"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3256:3:25","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3261:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"3266:6:25","type":""}],"src":"3225:307:25"},{"body":{"nodeType":"YulBlock","src":"3586:54:25","statements":[{"nodeType":"YulAssignment","src":"3596:38:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3614:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"3621:2:25","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3610:3:25"},"nodeType":"YulFunctionCall","src":"3610:14:25"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3630:2:25","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3626:3:25"},"nodeType":"YulFunctionCall","src":"3626:7:25"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3606:3:25"},"nodeType":"YulFunctionCall","src":"3606:28:25"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3596:6:25"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3569:5:25","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"3579:6:25","type":""}],"src":"3538:102:25"},{"body":{"nodeType":"YulBlock","src":"3738:272:25","statements":[{"nodeType":"YulVariableDeclaration","src":"3748:53:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3795:5:25"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3762:32:25"},"nodeType":"YulFunctionCall","src":"3762:39:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3752:6:25","type":""}]},{"nodeType":"YulAssignment","src":"3810:78:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3876:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"3881:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3817:58:25"},"nodeType":"YulFunctionCall","src":"3817:71:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3810:3:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3923:5:25"},{"kind":"number","nodeType":"YulLiteral","src":"3930:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3919:3:25"},"nodeType":"YulFunctionCall","src":"3919:16:25"},{"name":"pos","nodeType":"YulIdentifier","src":"3937:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"3942:6:25"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"3897:21:25"},"nodeType":"YulFunctionCall","src":"3897:52:25"},"nodeType":"YulExpressionStatement","src":"3897:52:25"},{"nodeType":"YulAssignment","src":"3958:46:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3969:3:25"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3996:6:25"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"3974:21:25"},"nodeType":"YulFunctionCall","src":"3974:29:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3965:3:25"},"nodeType":"YulFunctionCall","src":"3965:39:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3958:3:25"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3719:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3726:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3734:3:25","type":""}],"src":"3646:364:25"},{"body":{"nodeType":"YulBlock","src":"4134:195:25","statements":[{"nodeType":"YulAssignment","src":"4144:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4156:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"4167:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4152:3:25"},"nodeType":"YulFunctionCall","src":"4152:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4144:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4191:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"4202:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4187:3:25"},"nodeType":"YulFunctionCall","src":"4187:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4210:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"4216:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4206:3:25"},"nodeType":"YulFunctionCall","src":"4206:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4180:6:25"},"nodeType":"YulFunctionCall","src":"4180:47:25"},"nodeType":"YulExpressionStatement","src":"4180:47:25"},{"nodeType":"YulAssignment","src":"4236:86:25","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4308:6:25"},{"name":"tail","nodeType":"YulIdentifier","src":"4317:4:25"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4244:63:25"},"nodeType":"YulFunctionCall","src":"4244:78:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4236:4:25"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4106:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4118:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4129:4:25","type":""}],"src":"4016:313:25"},{"body":{"nodeType":"YulBlock","src":"4375:35:25","statements":[{"nodeType":"YulAssignment","src":"4385:19:25","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4401:2:25","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4395:5:25"},"nodeType":"YulFunctionCall","src":"4395:9:25"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4385:6:25"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4368:6:25","type":""}],"src":"4335:75:25"},{"body":{"nodeType":"YulBlock","src":"4505:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4522:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4525:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4515:6:25"},"nodeType":"YulFunctionCall","src":"4515:12:25"},"nodeType":"YulExpressionStatement","src":"4515:12:25"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"4416:117:25"},{"body":{"nodeType":"YulBlock","src":"4628:28:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4645:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4648:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4638:6:25"},"nodeType":"YulFunctionCall","src":"4638:12:25"},"nodeType":"YulExpressionStatement","src":"4638:12:25"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"4539:117:25"},{"body":{"nodeType":"YulBlock","src":"4705:79:25","statements":[{"body":{"nodeType":"YulBlock","src":"4762:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4771:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4774:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4764:6:25"},"nodeType":"YulFunctionCall","src":"4764:12:25"},"nodeType":"YulExpressionStatement","src":"4764:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4728:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4753:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4735:17:25"},"nodeType":"YulFunctionCall","src":"4735:24:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4725:2:25"},"nodeType":"YulFunctionCall","src":"4725:35:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4718:6:25"},"nodeType":"YulFunctionCall","src":"4718:43:25"},"nodeType":"YulIf","src":"4715:63:25"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4698:5:25","type":""}],"src":"4662:122:25"},{"body":{"nodeType":"YulBlock","src":"4842:87:25","statements":[{"nodeType":"YulAssignment","src":"4852:29:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4874:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4861:12:25"},"nodeType":"YulFunctionCall","src":"4861:20:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4852:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4917:5:25"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4890:26:25"},"nodeType":"YulFunctionCall","src":"4890:33:25"},"nodeType":"YulExpressionStatement","src":"4890:33:25"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4820:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"4828:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4836:5:25","type":""}],"src":"4790:139:25"},{"body":{"nodeType":"YulBlock","src":"4978:79:25","statements":[{"body":{"nodeType":"YulBlock","src":"5035:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5044:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5047:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5037:6:25"},"nodeType":"YulFunctionCall","src":"5037:12:25"},"nodeType":"YulExpressionStatement","src":"5037:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5001:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5026:5:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5008:17:25"},"nodeType":"YulFunctionCall","src":"5008:24:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4998:2:25"},"nodeType":"YulFunctionCall","src":"4998:35:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4991:6:25"},"nodeType":"YulFunctionCall","src":"4991:43:25"},"nodeType":"YulIf","src":"4988:63:25"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4971:5:25","type":""}],"src":"4935:122:25"},{"body":{"nodeType":"YulBlock","src":"5115:87:25","statements":[{"nodeType":"YulAssignment","src":"5125:29:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5147:6:25"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5134:12:25"},"nodeType":"YulFunctionCall","src":"5134:20:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5125:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5190:5:25"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"5163:26:25"},"nodeType":"YulFunctionCall","src":"5163:33:25"},"nodeType":"YulExpressionStatement","src":"5163:33:25"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5093:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"5101:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5109:5:25","type":""}],"src":"5063:139:25"},{"body":{"nodeType":"YulBlock","src":"5291:391:25","statements":[{"body":{"nodeType":"YulBlock","src":"5337:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5339:77:25"},"nodeType":"YulFunctionCall","src":"5339:79:25"},"nodeType":"YulExpressionStatement","src":"5339:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5312:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"5321:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5308:3:25"},"nodeType":"YulFunctionCall","src":"5308:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"5333:2:25","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5304:3:25"},"nodeType":"YulFunctionCall","src":"5304:32:25"},"nodeType":"YulIf","src":"5301:119:25"},{"nodeType":"YulBlock","src":"5430:117:25","statements":[{"nodeType":"YulVariableDeclaration","src":"5445:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"5459:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5449:6:25","type":""}]},{"nodeType":"YulAssignment","src":"5474:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5509:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"5520:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5505:3:25"},"nodeType":"YulFunctionCall","src":"5505:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5529:7:25"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5484:20:25"},"nodeType":"YulFunctionCall","src":"5484:53:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5474:6:25"}]}]},{"nodeType":"YulBlock","src":"5557:118:25","statements":[{"nodeType":"YulVariableDeclaration","src":"5572:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"5586:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5576:6:25","type":""}]},{"nodeType":"YulAssignment","src":"5602:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5637:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"5648:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5633:3:25"},"nodeType":"YulFunctionCall","src":"5633:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5657:7:25"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5612:20:25"},"nodeType":"YulFunctionCall","src":"5612:53:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5602:6:25"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5253:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5264:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5276:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5284:6:25","type":""}],"src":"5208:474:25"},{"body":{"nodeType":"YulBlock","src":"5754:263:25","statements":[{"body":{"nodeType":"YulBlock","src":"5800:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5802:77:25"},"nodeType":"YulFunctionCall","src":"5802:79:25"},"nodeType":"YulExpressionStatement","src":"5802:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5775:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"5784:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5771:3:25"},"nodeType":"YulFunctionCall","src":"5771:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"5796:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5767:3:25"},"nodeType":"YulFunctionCall","src":"5767:32:25"},"nodeType":"YulIf","src":"5764:119:25"},{"nodeType":"YulBlock","src":"5893:117:25","statements":[{"nodeType":"YulVariableDeclaration","src":"5908:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"5922:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5912:6:25","type":""}]},{"nodeType":"YulAssignment","src":"5937:63:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5972:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"5983:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5968:3:25"},"nodeType":"YulFunctionCall","src":"5968:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5992:7:25"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5947:20:25"},"nodeType":"YulFunctionCall","src":"5947:53:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5937:6:25"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5724:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5735:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5747:6:25","type":""}],"src":"5688:329:25"},{"body":{"nodeType":"YulBlock","src":"6065:48:25","statements":[{"nodeType":"YulAssignment","src":"6075:32:25","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6100:5:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6093:6:25"},"nodeType":"YulFunctionCall","src":"6093:13:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6086:6:25"},"nodeType":"YulFunctionCall","src":"6086:21:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6075:7:25"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6047:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6057:7:25","type":""}],"src":"6023:90:25"},{"body":{"nodeType":"YulBlock","src":"6178:50:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6195:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6215:5:25"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6200:14:25"},"nodeType":"YulFunctionCall","src":"6200:21:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6188:6:25"},"nodeType":"YulFunctionCall","src":"6188:34:25"},"nodeType":"YulExpressionStatement","src":"6188:34:25"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6166:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6173:3:25","type":""}],"src":"6119:109:25"},{"body":{"nodeType":"YulBlock","src":"6326:118:25","statements":[{"nodeType":"YulAssignment","src":"6336:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6348:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"6359:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6344:3:25"},"nodeType":"YulFunctionCall","src":"6344:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6336:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6410:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6423:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"6434:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6419:3:25"},"nodeType":"YulFunctionCall","src":"6419:17:25"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"6372:37:25"},"nodeType":"YulFunctionCall","src":"6372:65:25"},"nodeType":"YulExpressionStatement","src":"6372:65:25"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6298:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6310:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6321:4:25","type":""}],"src":"6234:210:25"},{"body":{"nodeType":"YulBlock","src":"6548:124:25","statements":[{"nodeType":"YulAssignment","src":"6558:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6570:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"6581:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6566:3:25"},"nodeType":"YulFunctionCall","src":"6566:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6558:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6638:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6651:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"6662:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6647:3:25"},"nodeType":"YulFunctionCall","src":"6647:17:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"6594:43:25"},"nodeType":"YulFunctionCall","src":"6594:71:25"},"nodeType":"YulExpressionStatement","src":"6594:71:25"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6520:9:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6532:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6543:4:25","type":""}],"src":"6450:222:25"},{"body":{"nodeType":"YulBlock","src":"6784:51:25","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6806:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"6814:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6802:3:25"},"nodeType":"YulFunctionCall","src":"6802:14:25"},{"hexValue":"4f6e2073776170","kind":"string","nodeType":"YulLiteral","src":"6818:9:25","type":"","value":"On swap"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6795:6:25"},"nodeType":"YulFunctionCall","src":"6795:33:25"},"nodeType":"YulExpressionStatement","src":"6795:33:25"}]},"name":"store_literal_in_memory_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"6776:6:25","type":""}],"src":"6678:157:25"},{"body":{"nodeType":"YulBlock","src":"6987:219:25","statements":[{"nodeType":"YulAssignment","src":"6997:73:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7063:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"7068:1:25","type":"","value":"7"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7004:58:25"},"nodeType":"YulFunctionCall","src":"7004:66:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6997:3:25"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7168:3:25"}],"functionName":{"name":"store_literal_in_memory_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652","nodeType":"YulIdentifier","src":"7079:88:25"},"nodeType":"YulFunctionCall","src":"7079:93:25"},"nodeType":"YulExpressionStatement","src":"7079:93:25"},{"nodeType":"YulAssignment","src":"7181:19:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7192:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"7197:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7188:3:25"},"nodeType":"YulFunctionCall","src":"7188:12:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7181:3:25"}]}]},"name":"abi_encode_t_stringliteral_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6975:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6983:3:25","type":""}],"src":"6841:365:25"},{"body":{"nodeType":"YulBlock","src":"7383:248:25","statements":[{"nodeType":"YulAssignment","src":"7393:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7405:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"7416:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7401:3:25"},"nodeType":"YulFunctionCall","src":"7401:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7393:4:25"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7440:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"7451:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7436:3:25"},"nodeType":"YulFunctionCall","src":"7436:17:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7459:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"7465:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7455:3:25"},"nodeType":"YulFunctionCall","src":"7455:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7429:6:25"},"nodeType":"YulFunctionCall","src":"7429:47:25"},"nodeType":"YulExpressionStatement","src":"7429:47:25"},{"nodeType":"YulAssignment","src":"7485:139:25","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7619:4:25"}],"functionName":{"name":"abi_encode_t_stringliteral_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7493:124:25"},"nodeType":"YulFunctionCall","src":"7493:131:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7485:4:25"}]}]},"name":"abi_encode_tuple_t_stringliteral_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7363:9:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7378:4:25","type":""}],"src":"7212:419:25"},{"body":{"nodeType":"YulBlock","src":"7791:288:25","statements":[{"nodeType":"YulAssignment","src":"7801:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7813:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"7824:2:25","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7809:3:25"},"nodeType":"YulFunctionCall","src":"7809:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7801:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7881:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7894:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"7905:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7890:3:25"},"nodeType":"YulFunctionCall","src":"7890:17:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"7837:43:25"},"nodeType":"YulFunctionCall","src":"7837:71:25"},"nodeType":"YulExpressionStatement","src":"7837:71:25"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7962:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7975:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"7986:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7971:3:25"},"nodeType":"YulFunctionCall","src":"7971:18:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"7918:43:25"},"nodeType":"YulFunctionCall","src":"7918:72:25"},"nodeType":"YulExpressionStatement","src":"7918:72:25"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8044:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8057:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"8068:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8053:3:25"},"nodeType":"YulFunctionCall","src":"8053:18:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"8000:43:25"},"nodeType":"YulFunctionCall","src":"8000:72:25"},"nodeType":"YulExpressionStatement","src":"8000:72:25"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7747:9:25","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7759:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7767:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7775:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7786:4:25","type":""}],"src":"7637:442:25"},{"body":{"nodeType":"YulBlock","src":"8125:76:25","statements":[{"body":{"nodeType":"YulBlock","src":"8179:16:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8188:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8191:1:25","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8181:6:25"},"nodeType":"YulFunctionCall","src":"8181:12:25"},"nodeType":"YulExpressionStatement","src":"8181:12:25"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8148:5:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8170:5:25"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"8155:14:25"},"nodeType":"YulFunctionCall","src":"8155:21:25"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8145:2:25"},"nodeType":"YulFunctionCall","src":"8145:32:25"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8138:6:25"},"nodeType":"YulFunctionCall","src":"8138:40:25"},"nodeType":"YulIf","src":"8135:60:25"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8118:5:25","type":""}],"src":"8085:116:25"},{"body":{"nodeType":"YulBlock","src":"8267:77:25","statements":[{"nodeType":"YulAssignment","src":"8277:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8292:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8286:5:25"},"nodeType":"YulFunctionCall","src":"8286:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8277:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8332:5:25"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"8308:23:25"},"nodeType":"YulFunctionCall","src":"8308:30:25"},"nodeType":"YulExpressionStatement","src":"8308:30:25"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8245:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"8253:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"8261:5:25","type":""}],"src":"8207:137:25"},{"body":{"nodeType":"YulBlock","src":"8424:271:25","statements":[{"body":{"nodeType":"YulBlock","src":"8470:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8472:77:25"},"nodeType":"YulFunctionCall","src":"8472:79:25"},"nodeType":"YulExpressionStatement","src":"8472:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8445:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"8454:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8441:3:25"},"nodeType":"YulFunctionCall","src":"8441:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"8466:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8437:3:25"},"nodeType":"YulFunctionCall","src":"8437:32:25"},"nodeType":"YulIf","src":"8434:119:25"},{"nodeType":"YulBlock","src":"8563:125:25","statements":[{"nodeType":"YulVariableDeclaration","src":"8578:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"8592:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8582:6:25","type":""}]},{"nodeType":"YulAssignment","src":"8607:71:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8650:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"8661:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8646:3:25"},"nodeType":"YulFunctionCall","src":"8646:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8670:7:25"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"8617:28:25"},"nodeType":"YulFunctionCall","src":"8617:61:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8607:6:25"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8394:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8405:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8417:6:25","type":""}],"src":"8350:345:25"},{"body":{"nodeType":"YulBlock","src":"8827:206:25","statements":[{"nodeType":"YulAssignment","src":"8837:26:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8849:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"8860:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8845:3:25"},"nodeType":"YulFunctionCall","src":"8845:18:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8837:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8917:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8930:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"8941:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8926:3:25"},"nodeType":"YulFunctionCall","src":"8926:17:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8873:43:25"},"nodeType":"YulFunctionCall","src":"8873:71:25"},"nodeType":"YulExpressionStatement","src":"8873:71:25"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8998:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9011:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"9022:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9007:3:25"},"nodeType":"YulFunctionCall","src":"9007:18:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"8954:43:25"},"nodeType":"YulFunctionCall","src":"8954:72:25"},"nodeType":"YulExpressionStatement","src":"8954:72:25"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8791:9:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8803:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8811:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8822:4:25","type":""}],"src":"8701:332:25"},{"body":{"nodeType":"YulBlock","src":"9102:80:25","statements":[{"nodeType":"YulAssignment","src":"9112:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9127:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9121:5:25"},"nodeType":"YulFunctionCall","src":"9121:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"9112:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9170:5:25"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"9143:26:25"},"nodeType":"YulFunctionCall","src":"9143:33:25"},"nodeType":"YulExpressionStatement","src":"9143:33:25"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9080:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"9088:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"9096:5:25","type":""}],"src":"9039:143:25"},{"body":{"nodeType":"YulBlock","src":"9265:274:25","statements":[{"body":{"nodeType":"YulBlock","src":"9311:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9313:77:25"},"nodeType":"YulFunctionCall","src":"9313:79:25"},"nodeType":"YulExpressionStatement","src":"9313:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9286:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"9295:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9282:3:25"},"nodeType":"YulFunctionCall","src":"9282:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"9307:2:25","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9278:3:25"},"nodeType":"YulFunctionCall","src":"9278:32:25"},"nodeType":"YulIf","src":"9275:119:25"},{"nodeType":"YulBlock","src":"9404:128:25","statements":[{"nodeType":"YulVariableDeclaration","src":"9419:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"9433:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9423:6:25","type":""}]},{"nodeType":"YulAssignment","src":"9448:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9494:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"9505:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9490:3:25"},"nodeType":"YulFunctionCall","src":"9490:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9514:7:25"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"9458:31:25"},"nodeType":"YulFunctionCall","src":"9458:64:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9448:6:25"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9235:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9246:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9258:6:25","type":""}],"src":"9188:351:25"},{"body":{"nodeType":"YulBlock","src":"9598:32:25","statements":[{"nodeType":"YulAssignment","src":"9608:16:25","value":{"name":"value","nodeType":"YulIdentifier","src":"9619:5:25"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"9608:7:25"}]}]},"name":"cleanup_t_rational_0_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9580:5:25","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"9590:7:25","type":""}],"src":"9545:85:25"},{"body":{"nodeType":"YulBlock","src":"9668:28:25","statements":[{"nodeType":"YulAssignment","src":"9678:12:25","value":{"name":"value","nodeType":"YulIdentifier","src":"9685:5:25"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"9678:3:25"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9654:5:25","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"9664:3:25","type":""}],"src":"9636:60:25"},{"body":{"nodeType":"YulBlock","src":"9770:90:25","statements":[{"nodeType":"YulAssignment","src":"9780:74:25","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9846:5:25"}],"functionName":{"name":"cleanup_t_rational_0_by_1","nodeType":"YulIdentifier","src":"9820:25:25"},"nodeType":"YulFunctionCall","src":"9820:32:25"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"9811:8:25"},"nodeType":"YulFunctionCall","src":"9811:42:25"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"9793:17:25"},"nodeType":"YulFunctionCall","src":"9793:61:25"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"9780:9:25"}]}]},"name":"convert_t_rational_0_by_1_to_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9750:5:25","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"9760:9:25","type":""}],"src":"9702:158:25"},{"body":{"nodeType":"YulBlock","src":"9939:74:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9956:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10000:5:25"}],"functionName":{"name":"convert_t_rational_0_by_1_to_t_uint256","nodeType":"YulIdentifier","src":"9961:38:25"},"nodeType":"YulFunctionCall","src":"9961:45:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9949:6:25"},"nodeType":"YulFunctionCall","src":"9949:58:25"},"nodeType":"YulExpressionStatement","src":"9949:58:25"}]},"name":"abi_encode_t_rational_0_by_1_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9927:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9934:3:25","type":""}],"src":"9866:147:25"},{"body":{"nodeType":"YulBlock","src":"10093:40:25","statements":[{"nodeType":"YulAssignment","src":"10104:22:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10120:5:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10114:5:25"},"nodeType":"YulFunctionCall","src":"10114:12:25"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10104:6:25"}]}]},"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10076:5:25","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"10086:6:25","type":""}],"src":"10019:114:25"},{"body":{"nodeType":"YulBlock","src":"10250:73:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10267:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"10272:6:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10260:6:25"},"nodeType":"YulFunctionCall","src":"10260:19:25"},"nodeType":"YulExpressionStatement","src":"10260:19:25"},{"nodeType":"YulAssignment","src":"10288:29:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10307:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"10312:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10303:3:25"},"nodeType":"YulFunctionCall","src":"10303:14:25"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"10288:11:25"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10222:3:25","type":""},{"name":"length","nodeType":"YulTypedName","src":"10227:6:25","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"10238:11:25","type":""}],"src":"10139:184:25"},{"body":{"nodeType":"YulBlock","src":"10401:60:25","statements":[{"nodeType":"YulAssignment","src":"10411:11:25","value":{"name":"ptr","nodeType":"YulIdentifier","src":"10419:3:25"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"10411:4:25"}]},{"nodeType":"YulAssignment","src":"10432:22:25","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"10444:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"10449:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10440:3:25"},"nodeType":"YulFunctionCall","src":"10440:14:25"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"10432:4:25"}]}]},"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"10388:3:25","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"10396:4:25","type":""}],"src":"10329:132:25"},{"body":{"nodeType":"YulBlock","src":"10522:53:25","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10539:3:25"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10562:5:25"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"10544:17:25"},"nodeType":"YulFunctionCall","src":"10544:24:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10532:6:25"},"nodeType":"YulFunctionCall","src":"10532:37:25"},"nodeType":"YulExpressionStatement","src":"10532:37:25"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10510:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10517:3:25","type":""}],"src":"10467:108:25"},{"body":{"nodeType":"YulBlock","src":"10661:99:25","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10705:6:25"},{"name":"pos","nodeType":"YulIdentifier","src":"10713:3:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"10671:33:25"},"nodeType":"YulFunctionCall","src":"10671:46:25"},"nodeType":"YulExpressionStatement","src":"10671:46:25"},{"nodeType":"YulAssignment","src":"10726:28:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10744:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"10749:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10740:3:25"},"nodeType":"YulFunctionCall","src":"10740:14:25"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"10726:10:25"}]}]},"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"10634:6:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10642:3:25","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"10650:10:25","type":""}],"src":"10581:179:25"},{"body":{"nodeType":"YulBlock","src":"10841:38:25","statements":[{"nodeType":"YulAssignment","src":"10851:22:25","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"10863:3:25"},{"kind":"number","nodeType":"YulLiteral","src":"10868:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10859:3:25"},"nodeType":"YulFunctionCall","src":"10859:14:25"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"10851:4:25"}]}]},"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"10828:3:25","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"10836:4:25","type":""}],"src":"10766:113:25"},{"body":{"nodeType":"YulBlock","src":"11039:608:25","statements":[{"nodeType":"YulVariableDeclaration","src":"11049:68:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11111:5:25"}],"functionName":{"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11063:47:25"},"nodeType":"YulFunctionCall","src":"11063:54:25"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11053:6:25","type":""}]},{"nodeType":"YulAssignment","src":"11126:93:25","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11207:3:25"},{"name":"length","nodeType":"YulIdentifier","src":"11212:6:25"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11133:73:25"},"nodeType":"YulFunctionCall","src":"11133:86:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11126:3:25"}]},{"nodeType":"YulVariableDeclaration","src":"11228:71:25","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11293:5:25"}],"functionName":{"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11243:49:25"},"nodeType":"YulFunctionCall","src":"11243:56:25"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"11232:7:25","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11308:21:25","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"11322:7:25"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"11312:6:25","type":""}]},{"body":{"nodeType":"YulBlock","src":"11398:224:25","statements":[{"nodeType":"YulVariableDeclaration","src":"11412:34:25","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11439:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11433:5:25"},"nodeType":"YulFunctionCall","src":"11433:13:25"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"11416:13:25","type":""}]},{"nodeType":"YulAssignment","src":"11459:70:25","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"11510:13:25"},{"name":"pos","nodeType":"YulIdentifier","src":"11525:3:25"}],"functionName":{"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulIdentifier","src":"11466:43:25"},"nodeType":"YulFunctionCall","src":"11466:63:25"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11459:3:25"}]},{"nodeType":"YulAssignment","src":"11542:70:25","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11605:6:25"}],"functionName":{"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11552:52:25"},"nodeType":"YulFunctionCall","src":"11552:60:25"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11542:6:25"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11360:1:25"},{"name":"length","nodeType":"YulIdentifier","src":"11363:6:25"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11357:2:25"},"nodeType":"YulFunctionCall","src":"11357:13:25"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11371:18:25","statements":[{"nodeType":"YulAssignment","src":"11373:14:25","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11382:1:25"},{"kind":"number","nodeType":"YulLiteral","src":"11385:1:25","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11378:3:25"},"nodeType":"YulFunctionCall","src":"11378:9:25"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11373:1:25"}]}]},"pre":{"nodeType":"YulBlock","src":"11342:14:25","statements":[{"nodeType":"YulVariableDeclaration","src":"11344:10:25","value":{"kind":"number","nodeType":"YulLiteral","src":"11353:1:25","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11348:1:25","type":""}]}]},"src":"11338:284:25"},{"nodeType":"YulAssignment","src":"11631:10:25","value":{"name":"pos","nodeType":"YulIdentifier","src":"11638:3:25"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11631:3:25"}]}]},"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11018:5:25","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11025:3:25","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11034:3:25","type":""}],"src":"10915:732:25"},{"body":{"nodeType":"YulBlock","src":"11921:563:25","statements":[{"nodeType":"YulAssignment","src":"11931:27:25","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11943:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"11954:3:25","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11939:3:25"},"nodeType":"YulFunctionCall","src":"11939:19:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11931:4:25"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12012:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12025:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"12036:1:25","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12021:3:25"},"nodeType":"YulFunctionCall","src":"12021:17:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"11968:43:25"},"nodeType":"YulFunctionCall","src":"11968:71:25"},"nodeType":"YulExpressionStatement","src":"11968:71:25"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12101:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12114:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"12125:2:25","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12110:3:25"},"nodeType":"YulFunctionCall","src":"12110:18:25"}],"functionName":{"name":"abi_encode_t_rational_0_by_1_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"12049:51:25"},"nodeType":"YulFunctionCall","src":"12049:80:25"},"nodeType":"YulExpressionStatement","src":"12049:80:25"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12150:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"12161:2:25","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12146:3:25"},"nodeType":"YulFunctionCall","src":"12146:18:25"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12170:4:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"12176:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12166:3:25"},"nodeType":"YulFunctionCall","src":"12166:20:25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12139:6:25"},"nodeType":"YulFunctionCall","src":"12139:48:25"},"nodeType":"YulExpressionStatement","src":"12139:48:25"},{"nodeType":"YulAssignment","src":"12196:116:25","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12298:6:25"},{"name":"tail","nodeType":"YulIdentifier","src":"12307:4:25"}],"functionName":{"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12204:93:25"},"nodeType":"YulFunctionCall","src":"12204:108:25"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12196:4:25"}]},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"12366:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12379:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"12390:2:25","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12375:3:25"},"nodeType":"YulFunctionCall","src":"12375:18:25"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"12322:43:25"},"nodeType":"YulFunctionCall","src":"12322:72:25"},"nodeType":"YulExpressionStatement","src":"12322:72:25"},{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"12448:6:25"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12461:9:25"},{"kind":"number","nodeType":"YulLiteral","src":"12472:3:25","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12457:3:25"},"nodeType":"YulFunctionCall","src":"12457:19:25"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"12404:43:25"},"nodeType":"YulFunctionCall","src":"12404:73:25"},"nodeType":"YulExpressionStatement","src":"12404:73:25"}]},"name":"abi_encode_tuple_t_uint256_t_rational_0_by_1_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__to_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11861:9:25","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11873:6:25","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11881:6:25","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11889:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11897:6:25","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11905:6:25","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11916:4:25","type":""}],"src":"11653:831:25"},{"body":{"nodeType":"YulBlock","src":"12553:80:25","statements":[{"nodeType":"YulAssignment","src":"12563:22:25","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12578:6:25"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12572:5:25"},"nodeType":"YulFunctionCall","src":"12572:13:25"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"12563:5:25"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12621:5:25"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"12594:26:25"},"nodeType":"YulFunctionCall","src":"12594:33:25"},"nodeType":"YulExpressionStatement","src":"12594:33:25"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"12531:6:25","type":""},{"name":"end","nodeType":"YulTypedName","src":"12539:3:25","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"12547:5:25","type":""}],"src":"12490:143:25"},{"body":{"nodeType":"YulBlock","src":"12733:413:25","statements":[{"body":{"nodeType":"YulBlock","src":"12779:83:25","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"12781:77:25"},"nodeType":"YulFunctionCall","src":"12781:79:25"},"nodeType":"YulExpressionStatement","src":"12781:79:25"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12754:7:25"},{"name":"headStart","nodeType":"YulIdentifier","src":"12763:9:25"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12750:3:25"},"nodeType":"YulFunctionCall","src":"12750:23:25"},{"kind":"number","nodeType":"YulLiteral","src":"12775:2:25","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12746:3:25"},"nodeType":"YulFunctionCall","src":"12746:32:25"},"nodeType":"YulIf","src":"12743:119:25"},{"nodeType":"YulBlock","src":"12872:128:25","statements":[{"nodeType":"YulVariableDeclaration","src":"12887:15:25","value":{"kind":"number","nodeType":"YulLiteral","src":"12901:1:25","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"12891:6:25","type":""}]},{"nodeType":"YulAssignment","src":"12916:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12962:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"12973:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12958:3:25"},"nodeType":"YulFunctionCall","src":"12958:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"12982:7:25"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"12926:31:25"},"nodeType":"YulFunctionCall","src":"12926:64:25"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12916:6:25"}]}]},{"nodeType":"YulBlock","src":"13010:129:25","statements":[{"nodeType":"YulVariableDeclaration","src":"13025:16:25","value":{"kind":"number","nodeType":"YulLiteral","src":"13039:2:25","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13029:6:25","type":""}]},{"nodeType":"YulAssignment","src":"13055:74:25","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13101:9:25"},{"name":"offset","nodeType":"YulIdentifier","src":"13112:6:25"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13097:3:25"},"nodeType":"YulFunctionCall","src":"13097:22:25"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13121:7:25"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"13065:31:25"},"nodeType":"YulFunctionCall","src":"13065:64:25"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13055:6:25"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12695:9:25","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12706:7:25","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12718:6:25","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12726:6:25","type":""}],"src":"12639:507:25"},{"body":{"nodeType":"YulBlock","src":"13180:152:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13197:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13200:77:25","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13190:6:25"},"nodeType":"YulFunctionCall","src":"13190:88:25"},"nodeType":"YulExpressionStatement","src":"13190:88:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13294:1:25","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"13297:4:25","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13287:6:25"},"nodeType":"YulFunctionCall","src":"13287:15:25"},"nodeType":"YulExpressionStatement","src":"13287:15:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13318:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13321:4:25","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13311:6:25"},"nodeType":"YulFunctionCall","src":"13311:15:25"},"nodeType":"YulExpressionStatement","src":"13311:15:25"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"13152:180:25"},{"body":{"nodeType":"YulBlock","src":"13366:152:25","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13383:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13386:77:25","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13376:6:25"},"nodeType":"YulFunctionCall","src":"13376:88:25"},"nodeType":"YulExpressionStatement","src":"13376:88:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13480:1:25","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"13483:4:25","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13473:6:25"},"nodeType":"YulFunctionCall","src":"13473:15:25"},"nodeType":"YulExpressionStatement","src":"13473:15:25"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13504:1:25","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13507:4:25","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13497:6:25"},"nodeType":"YulFunctionCall","src":"13497:15:25"},"nodeType":"YulExpressionStatement","src":"13497:15:25"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"13338:180:25"}]},"contents":"{\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_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(memPtr) {\n\n    }\n\n    function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 0)\n        store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n        end := add(pos, 0)\n    }\n\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n        pos := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n        end := pos\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_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb(memPtr) {\n\n        mstore(add(memPtr, 0), \"Failed to send Ether\")\n\n    }\n\n    function abi_encode_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n        store_literal_in_memory_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb__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_445140255c9d889994129d349e64078d6f76b4b37ec896948f7e858f9b8a0dcb_to_t_string_memory_ptr_fromStack( tail)\n\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 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 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_uint256_t_address__to_t_uint256_t_address__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_address_to_t_address_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function copy_memory_to_memory(src, dst, length) {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length)\n        {\n            // clear end\n            mstore(add(dst, length), 0)\n        }\n    }\n\n    function 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(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0,  tail)\n\n    }\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function 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 validator_revert_t_uint256(value) {\n        if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_uint256(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function 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 cleanup_t_bool(value) -> cleaned {\n        cleaned := iszero(iszero(value))\n    }\n\n    function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bool(value))\n    }\n\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_bool_to_t_bool_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_encode_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 store_literal_in_memory_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652(memPtr) {\n\n        mstore(add(memPtr, 0), \"On swap\")\n\n    }\n\n    function abi_encode_t_stringliteral_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 7)\n        store_literal_in_memory_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652__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_751d3d13aa9e43ec4fc9c22dbe40cccdb1ea9e2278ccdcd4989a82b30a78c652_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n        tail := add(headStart, 96)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_to_t_address_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value2,  add(headStart, 64))\n\n    }\n\n    function validator_revert_t_bool(value) {\n        if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_bool_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_bool(value)\n    }\n\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function 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 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 cleanup_t_rational_0_by_1(value) -> cleaned {\n        cleaned := value\n    }\n\n    function identity(value) -> ret {\n        ret := value\n    }\n\n    function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n        converted := cleanup_t_uint256(identity(cleanup_t_rational_0_by_1(value)))\n    }\n\n    function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n    }\n\n    function array_length_t_array$_t_address_$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_address_$dyn_memory_ptr(ptr) -> data {\n        data := ptr\n\n        data := add(ptr, 0x20)\n\n    }\n\n    function abi_encode_t_address_to_t_address(value, pos) {\n        mstore(pos, cleanup_t_address(value))\n    }\n\n    function abi_encodeUpdatedPos_t_address_to_t_address(value0, pos) -> updatedPos {\n        abi_encode_t_address_to_t_address(value0, pos)\n        updatedPos := add(pos, 0x20)\n    }\n\n    function array_nextElement_t_array$_t_address_$dyn_memory_ptr(ptr) -> next {\n        next := add(ptr, 0x20)\n    }\n\n    // address[] -> address[]\n    function abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value, pos)  -> end  {\n        let length := array_length_t_array$_t_address_$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_address_$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_address_to_t_address(elementValue0, pos)\n            srcPtr := array_nextElement_t_array$_t_address_$dyn_memory_ptr(srcPtr)\n        }\n        end := pos\n    }\n\n    function abi_encode_tuple_t_uint256_t_rational_0_by_1_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__to_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 160)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value1,  add(headStart, 32))\n\n        mstore(add(headStart, 64), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value2,  tail)\n\n        abi_encode_t_address_to_t_address_fromStack(value3,  add(headStart, 96))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value4,  add(headStart, 128))\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_addresst_uint256_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 := 32\n\n            value1 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\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}\n","id":25,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"4202":[{"length":32,"start":1004},{"length":32,"start":1135},{"length":32,"start":1202}]},"linkReferences":{},"object":"6080604052600436106100435760003560e01c8063486ff0cd1461019757806356feb11b146101c2578063572b6c05146101eb5780637da0a8771461022857610192565b366101925760003490506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610095906108b7565b60006040518083038185875af1925050503d80600081146100d2576040519150601f19603f3d011682016040523d82523d6000602084013e6100d7565b606091505b505090508061011b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011290610929565b60405180910390fd5b7f8863e458255c600ae3e61be347822f3ee57088c8538b68b5dd2357e682e59e1934600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161016e9291906109a3565b60405180910390a16000600260146101000a81548160ff0219169083151502179055005b600080fd5b3480156101a357600080fd5b506101ac610253565b6040516101b99190610a54565b60405180910390f35b3480156101ce57600080fd5b506101e960048036038101906101e49190610ad3565b610273565b005b3480156101f757600080fd5b50610212600480360381019061020d9190610b13565b6106db565b60405161021f9190610b5b565b60405180910390f35b34801561023457600080fd5b5061023d610734565b60405161024a9190610b76565b60405180910390f35b6060604051806060016040528060228152602001610f0960229139905090565b600260149054906101000a900460ff16156102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ba90610bdd565b60405180910390fd5b6001600260146101000a81548160ff0219169083151502179055506102e661075d565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008290508073ffffffffffffffffffffffffffffffffffffffff166323b872dd600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630856040518463ffffffff1660e01b815260040161038a93929190610bfd565b6020604051808303816000875af11580156103a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cd9190610c60565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b8152600401610429929190610c8d565b6020604051808303816000875af1158015610448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046c9190610c60565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947836000610544877f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561051b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053f9190610ccb565b610794565b30426040518663ffffffff1660e01b8152600401610566959493929190610dfb565b600060405180830381600087803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b50505050600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad02b07d6040518163ffffffff1660e01b81526004016040805180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190610e6a565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead846040518463ffffffff1660e01b815260040161069093929190610bfd565b6020604051808303816000875af11580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d39190610c60565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060146000369050101580156107795750610778336106db565b5b1561078d57601436033560601c9050610791565b3390505b90565b6060600267ffffffffffffffff8111156107b1576107b0610eaa565b5b6040519080825280602002602001820160405280156107df5781602001602082028036833780820191505090505b50905082816000815181106107f7576107f6610ed9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061084657610845610ed9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505092915050565b600081905092915050565b50565b60006108a1600083610886565b91506108ac82610891565b600082019050919050565b60006108c282610894565b9150819050919050565b600082825260208201905092915050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b60006109136014836108cc565b915061091e826108dd565b602082019050919050565b6000602082019050818103600083015261094281610906565b9050919050565b6000819050919050565b61095c81610949565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061098d82610962565b9050919050565b61099d81610982565b82525050565b60006040820190506109b86000830185610953565b6109c56020830184610994565b9392505050565b600081519050919050565b60005b838110156109f55780820151818401526020810190506109da565b83811115610a04576000848401525b50505050565b6000601f19601f8301169050919050565b6000610a26826109cc565b610a3081856108cc565b9350610a408185602086016109d7565b610a4981610a0a565b840191505092915050565b60006020820190508181036000830152610a6e8184610a1b565b905092915050565b600080fd5b610a8481610982565b8114610a8f57600080fd5b50565b600081359050610aa181610a7b565b92915050565b610ab081610949565b8114610abb57600080fd5b50565b600081359050610acd81610aa7565b92915050565b60008060408385031215610aea57610ae9610a76565b5b6000610af885828601610a92565b9250506020610b0985828601610abe565b9150509250929050565b600060208284031215610b2957610b28610a76565b5b6000610b3784828501610a92565b91505092915050565b60008115159050919050565b610b5581610b40565b82525050565b6000602082019050610b706000830184610b4c565b92915050565b6000602082019050610b8b6000830184610994565b92915050565b7f4f6e207377617000000000000000000000000000000000000000000000000000600082015250565b6000610bc76007836108cc565b9150610bd282610b91565b602082019050919050565b60006020820190508181036000830152610bf681610bba565b9050919050565b6000606082019050610c126000830186610994565b610c1f6020830185610994565b610c2c6040830184610953565b949350505050565b610c3d81610b40565b8114610c4857600080fd5b50565b600081519050610c5a81610c34565b92915050565b600060208284031215610c7657610c75610a76565b5b6000610c8484828501610c4b565b91505092915050565b6000604082019050610ca26000830185610994565b610caf6020830184610953565b9392505050565b600081519050610cc581610a7b565b92915050565b600060208284031215610ce157610ce0610a76565b5b6000610cef84828501610cb6565b91505092915050565b6000819050919050565b6000819050919050565b6000610d27610d22610d1d84610cf8565b610d02565b610949565b9050919050565b610d3781610d0c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610d7281610982565b82525050565b6000610d848383610d69565b60208301905092915050565b6000602082019050919050565b6000610da882610d3d565b610db28185610d48565b9350610dbd83610d59565b8060005b83811015610dee578151610dd58882610d78565b9750610de083610d90565b925050600181019050610dc1565b5085935050505092915050565b600060a082019050610e106000830188610953565b610e1d6020830187610d2e565b8181036040830152610e2f8186610d9d565b9050610e3e6060830185610994565b610e4b6080830184610953565b9695505050505050565b600081519050610e6481610aa7565b92915050565b60008060408385031215610e8157610e80610a76565b5b6000610e8f85828601610cb6565b9250506020610ea085828601610e55565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfe322e322e302b6f70656e67736e2e737761702e6972656c6179726563697069656e74a26469706673582212206dab5d431d8207e62d703beb77d862de6ee88dc831596d45921f7751a78f527f64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x486FF0CD EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x56FEB11B EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0x7DA0A877 EQ PUSH2 0x228 JUMPI PUSH2 0x192 JUMP JUMPDEST CALLDATASIZE PUSH2 0x192 JUMPI PUSH1 0x0 CALLVALUE SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x95 SWAP1 PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x11B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x112 SWAP1 PUSH2 0x929 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x8863E458255C600AE3E61BE347822F3EE57088C8538B68B5DD2357E682E59E19 CALLVALUE PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD PUSH2 0x16E SWAP3 SWAP2 SWAP1 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 PUSH1 0x2 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AC PUSH2 0x253 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B9 SWAP2 SWAP1 PUSH2 0xA54 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E4 SWAP2 SWAP1 PUSH2 0xAD3 JUMP JUMPDEST PUSH2 0x273 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x212 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x20D SWAP2 SWAP1 PUSH2 0xB13 JUMP JUMPDEST PUSH2 0x6DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21F SWAP2 SWAP1 PUSH2 0xB5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23D PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24A SWAP2 SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF09 PUSH1 0x22 SWAP2 CODECOPY SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BA SWAP1 PUSH2 0xBDD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x2 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x2E6 PUSH2 0x75D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP3 SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x38A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x3CD SWAP2 SWAP1 PUSH2 0xC60 JUMP JUMPDEST POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH32 0x0 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x429 SWAP3 SWAP2 SWAP1 PUSH2 0xC8D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x46C SWAP2 SWAP1 PUSH2 0xC60 JUMP JUMPDEST POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x791AC947 DUP4 PUSH1 0x0 PUSH2 0x544 DUP8 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD5C4648 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 0x51B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x53F SWAP2 SWAP1 PUSH2 0xCCB JUMP JUMPDEST PUSH2 0x794 JUMP JUMPDEST ADDRESS TIMESTAMP PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x566 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xDFB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x594 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD02B07D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x62B SWAP2 SWAP1 PUSH2 0xE6A JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xDEAD DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x690 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 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 0x6D3 SWAP2 SWAP1 PUSH2 0xC60 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x14 PUSH1 0x0 CALLDATASIZE SWAP1 POP LT ISZERO DUP1 ISZERO PUSH2 0x779 JUMPI POP PUSH2 0x778 CALLER PUSH2 0x6DB JUMP JUMPDEST JUMPDEST ISZERO PUSH2 0x78D JUMPI PUSH1 0x14 CALLDATASIZE SUB CALLDATALOAD PUSH1 0x60 SHR SWAP1 POP PUSH2 0x791 JUMP JUMPDEST CALLER SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B1 JUMPI PUSH2 0x7B0 PUSH2 0xEAA JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7DF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7F7 JUMPI PUSH2 0x7F6 PUSH2 0xED9 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x846 JUMPI PUSH2 0x845 PUSH2 0xED9 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A1 PUSH1 0x0 DUP4 PUSH2 0x886 JUMP JUMPDEST SWAP2 POP PUSH2 0x8AC DUP3 PUSH2 0x891 JUMP JUMPDEST PUSH1 0x0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C2 DUP3 PUSH2 0x894 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4661696C656420746F2073656E64204574686572000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x913 PUSH1 0x14 DUP4 PUSH2 0x8CC JUMP JUMPDEST SWAP2 POP PUSH2 0x91E DUP3 PUSH2 0x8DD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x942 DUP2 PUSH2 0x906 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x95C DUP2 PUSH2 0x949 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x98D DUP3 PUSH2 0x962 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x99D DUP2 PUSH2 0x982 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x9B8 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x953 JUMP JUMPDEST PUSH2 0x9C5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9F5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x9DA JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xA04 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA26 DUP3 PUSH2 0x9CC JUMP JUMPDEST PUSH2 0xA30 DUP2 DUP6 PUSH2 0x8CC JUMP JUMPDEST SWAP4 POP PUSH2 0xA40 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x9D7 JUMP JUMPDEST PUSH2 0xA49 DUP2 PUSH2 0xA0A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xA6E DUP2 DUP5 PUSH2 0xA1B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA84 DUP2 PUSH2 0x982 JUMP JUMPDEST DUP2 EQ PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xAA1 DUP2 PUSH2 0xA7B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAB0 DUP2 PUSH2 0x949 JUMP JUMPDEST DUP2 EQ PUSH2 0xABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xACD DUP2 PUSH2 0xAA7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAEA JUMPI PUSH2 0xAE9 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xAF8 DUP6 DUP3 DUP7 ADD PUSH2 0xA92 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xB09 DUP6 DUP3 DUP7 ADD PUSH2 0xABE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB29 JUMPI PUSH2 0xB28 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB37 DUP5 DUP3 DUP6 ADD PUSH2 0xA92 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB55 DUP2 PUSH2 0xB40 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB70 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB4C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB8B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x994 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F6E207377617000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC7 PUSH1 0x7 DUP4 PUSH2 0x8CC JUMP JUMPDEST SWAP2 POP PUSH2 0xBD2 DUP3 PUSH2 0xB91 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xBF6 DUP2 PUSH2 0xBBA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xC12 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x994 JUMP JUMPDEST PUSH2 0xC1F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x994 JUMP JUMPDEST PUSH2 0xC2C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xC3D DUP2 PUSH2 0xB40 JUMP JUMPDEST DUP2 EQ PUSH2 0xC48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xC5A DUP2 PUSH2 0xC34 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC76 JUMPI PUSH2 0xC75 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC84 DUP5 DUP3 DUP6 ADD PUSH2 0xC4B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xCA2 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x994 JUMP JUMPDEST PUSH2 0xCAF PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xCC5 DUP2 PUSH2 0xA7B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCE1 JUMPI PUSH2 0xCE0 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xCEF DUP5 DUP3 DUP6 ADD PUSH2 0xCB6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD27 PUSH2 0xD22 PUSH2 0xD1D DUP5 PUSH2 0xCF8 JUMP JUMPDEST PUSH2 0xD02 JUMP JUMPDEST PUSH2 0x949 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD37 DUP2 PUSH2 0xD0C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD72 DUP2 PUSH2 0x982 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD84 DUP4 DUP4 PUSH2 0xD69 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA8 DUP3 PUSH2 0xD3D JUMP JUMPDEST PUSH2 0xDB2 DUP2 DUP6 PUSH2 0xD48 JUMP JUMPDEST SWAP4 POP PUSH2 0xDBD DUP4 PUSH2 0xD59 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDEE JUMPI DUP2 MLOAD PUSH2 0xDD5 DUP9 DUP3 PUSH2 0xD78 JUMP JUMPDEST SWAP8 POP PUSH2 0xDE0 DUP4 PUSH2 0xD90 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xDC1 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0xE10 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x953 JUMP JUMPDEST PUSH2 0xE1D PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0xD2E JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0xE2F DUP2 DUP7 PUSH2 0xD9D JUMP JUMPDEST SWAP1 POP PUSH2 0xE3E PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x994 JUMP JUMPDEST PUSH2 0xE4B PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x953 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xE64 DUP2 PUSH2 0xAA7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE81 JUMPI PUSH2 0xE80 PUSH2 0xA76 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xE8F DUP6 DUP3 DUP7 ADD PUSH2 0xCB6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xEA0 DUP6 DUP3 DUP7 ADD PUSH2 0xE55 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID ORIGIN 0x2E ORIGIN 0x2E ADDRESS 0x2B PUSH16 0x70656E67736E2E737761702E6972656C PUSH2 0x7972 PUSH6 0x63697069656E PUSH21 0xA26469706673582212206DAB5D431D8207E62D703B 0xEB PUSH24 0xD862DE6EE88DC831596D45921F7751A78F527F64736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ","sourceMap":"411:1762:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1974:13;1990:9;1974:25;;2006:9;2029:10;;;;;;;;;;;2021:24;;2053:5;2021:42;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005:58;;;2077:4;2069:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;2117:28;2126:9;2137:7;;;;;;;;;;;2117:28;;;;;;;:::i;:::-;;;;;;;;2160:5;2151:6;;:14;;;;;;;;;;;;;;;;;;411:1762;;;;1809:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1251:552;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;693:144:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;469:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1809:128:24;1868:13;1889:43;;;;;;;;;;;;;;;;;;;1809:128;:::o;1251:552::-;676:6;;;;;;;;;;;675:7;667:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;709:4;700:6;;:13;;;;;;;;;;;;;;;;;;794:31;:29;:31::i;:::-;784:7;;:41;;;;;;;;;;;;;;;;;;1339:12:::1;1361:5;1339:28;;1373:5;:18;;;1392:7;;;;;;;;;;;1409:4;1416:8;1373:52;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1431:5;:13;;;1453:7;1463:8;1431:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1479:7;:58;;;1545:8;1561:1;1570:31;1579:5;1586:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1570:8;:31::i;:::-;1617:4;1630:15;1479:172;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1659:20;1681:11:::0;1696:10:::1;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1658:65;;;;1736:12;1729:33;;;1763:7;;;;;;;;;;;1780:6;1789:3;1729:64;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1332:471;;;1251:552:::0;;:::o;693:144:1:-;777:4;813:17;;;;;;;;;;;800:30;;:9;:30;;;793:37;;693:144;;;:::o;469:106::-;526:7;551:17;;;;;;;;;;;544:24;;469:106;:::o;1089:547::-;1151:11;1197:2;1178:8;;:15;;:21;;:55;;;;;1203:30;1222:10;1203:18;:30::i;:::-;1178:55;1174:456;;;1554:2;1539:14;1535:22;1522:36;1519:2;1515:44;1508:51;;1174:456;;;1609:10;1603:16;;1174:456;1089:547;:::o;1075:172:24:-;1146:21;1196:1;1182:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:23;;1214:6;1204:4;1209:1;1204:7;;;;;;;;:::i;:::-;;;;;;;:16;;;;;;;;;;;1236:6;1226:4;1231:1;1226:7;;;;;;;;:::i;:::-;;;;;;;:16;;;;;;;;;;;1075:172;;;;:::o;7:147:25:-;108:11;145:3;130:18;;7:147;;;;:::o;160:114::-;;:::o;280:398::-;439:3;460:83;541:1;536:3;460:83;:::i;:::-;453:90;;552:93;641:3;552:93;:::i;:::-;670:1;665:3;661:11;654:18;;280:398;;;:::o;684:379::-;868:3;890:147;1033:3;890:147;:::i;:::-;883:154;;1054:3;1047:10;;684:379;;;:::o;1069:169::-;1153:11;1187:6;1182:3;1175:19;1227:4;1222:3;1218:14;1203:29;;1069:169;;;;:::o;1244:170::-;1384:22;1380:1;1372:6;1368:14;1361:46;1244:170;:::o;1420:366::-;1562:3;1583:67;1647:2;1642:3;1583:67;:::i;:::-;1576:74;;1659:93;1748:3;1659:93;:::i;:::-;1777:2;1772:3;1768:12;1761:19;;1420:366;;;:::o;1792:419::-;1958:4;1996:2;1985:9;1981:18;1973:26;;2045:9;2039:4;2035:20;2031:1;2020:9;2016:17;2009:47;2073:131;2199:4;2073:131;:::i;:::-;2065:139;;1792:419;;;:::o;2217:77::-;2254:7;2283:5;2272:16;;2217:77;;;:::o;2300:118::-;2387:24;2405:5;2387:24;:::i;:::-;2382:3;2375:37;2300:118;;:::o;2424:126::-;2461:7;2501:42;2494:5;2490:54;2479:65;;2424:126;;;:::o;2556:96::-;2593:7;2622:24;2640:5;2622:24;:::i;:::-;2611:35;;2556:96;;;:::o;2658:118::-;2745:24;2763:5;2745:24;:::i;:::-;2740:3;2733:37;2658:118;;:::o;2782:332::-;2903:4;2941:2;2930:9;2926:18;2918:26;;2954:71;3022:1;3011:9;3007:17;2998:6;2954:71;:::i;:::-;3035:72;3103:2;3092:9;3088:18;3079:6;3035:72;:::i;:::-;2782:332;;;;;:::o;3120:99::-;3172:6;3206:5;3200:12;3190:22;;3120:99;;;:::o;3225:307::-;3293:1;3303:113;3317:6;3314:1;3311:13;3303:113;;;3402:1;3397:3;3393:11;3387:18;3383:1;3378:3;3374:11;3367:39;3339:2;3336:1;3332:10;3327:15;;3303:113;;;3434:6;3431:1;3428:13;3425:101;;;3514:1;3505:6;3500:3;3496:16;3489:27;3425:101;3274:258;3225:307;;;:::o;3538:102::-;3579:6;3630:2;3626:7;3621:2;3614:5;3610:14;3606:28;3596:38;;3538:102;;;:::o;3646:364::-;3734:3;3762:39;3795:5;3762:39;:::i;:::-;3817:71;3881:6;3876:3;3817:71;:::i;:::-;3810:78;;3897:52;3942:6;3937:3;3930:4;3923:5;3919:16;3897:52;:::i;:::-;3974:29;3996:6;3974:29;:::i;:::-;3969:3;3965:39;3958:46;;3738:272;3646:364;;;;:::o;4016:313::-;4129:4;4167:2;4156:9;4152:18;4144:26;;4216:9;4210:4;4206:20;4202:1;4191:9;4187:17;4180:47;4244:78;4317:4;4308:6;4244:78;:::i;:::-;4236:86;;4016:313;;;;:::o;4416:117::-;4525:1;4522;4515:12;4662:122;4735:24;4753:5;4735:24;:::i;:::-;4728:5;4725:35;4715:63;;4774:1;4771;4764:12;4715:63;4662:122;:::o;4790:139::-;4836:5;4874:6;4861:20;4852:29;;4890:33;4917:5;4890:33;:::i;:::-;4790:139;;;;:::o;4935:122::-;5008:24;5026:5;5008:24;:::i;:::-;5001:5;4998:35;4988:63;;5047:1;5044;5037:12;4988:63;4935:122;:::o;5063:139::-;5109:5;5147:6;5134:20;5125:29;;5163:33;5190:5;5163:33;:::i;:::-;5063:139;;;;:::o;5208:474::-;5276:6;5284;5333:2;5321:9;5312:7;5308:23;5304:32;5301:119;;;5339:79;;:::i;:::-;5301:119;5459:1;5484:53;5529:7;5520:6;5509:9;5505:22;5484:53;:::i;:::-;5474:63;;5430:117;5586:2;5612:53;5657:7;5648:6;5637:9;5633:22;5612:53;:::i;:::-;5602:63;;5557:118;5208:474;;;;;:::o;5688:329::-;5747:6;5796:2;5784:9;5775:7;5771:23;5767:32;5764:119;;;5802:79;;:::i;:::-;5764:119;5922:1;5947:53;5992:7;5983:6;5972:9;5968:22;5947:53;:::i;:::-;5937:63;;5893:117;5688:329;;;;:::o;6023:90::-;6057:7;6100:5;6093:13;6086:21;6075:32;;6023:90;;;:::o;6119:109::-;6200:21;6215:5;6200:21;:::i;:::-;6195:3;6188:34;6119:109;;:::o;6234:210::-;6321:4;6359:2;6348:9;6344:18;6336:26;;6372:65;6434:1;6423:9;6419:17;6410:6;6372:65;:::i;:::-;6234:210;;;;:::o;6450:222::-;6543:4;6581:2;6570:9;6566:18;6558:26;;6594:71;6662:1;6651:9;6647:17;6638:6;6594:71;:::i;:::-;6450:222;;;;:::o;6678:157::-;6818:9;6814:1;6806:6;6802:14;6795:33;6678:157;:::o;6841:365::-;6983:3;7004:66;7068:1;7063:3;7004:66;:::i;:::-;6997:73;;7079:93;7168:3;7079:93;:::i;:::-;7197:2;7192:3;7188:12;7181:19;;6841:365;;;:::o;7212:419::-;7378:4;7416:2;7405:9;7401:18;7393:26;;7465:9;7459:4;7455:20;7451:1;7440:9;7436:17;7429:47;7493:131;7619:4;7493:131;:::i;:::-;7485:139;;7212:419;;;:::o;7637:442::-;7786:4;7824:2;7813:9;7809:18;7801:26;;7837:71;7905:1;7894:9;7890:17;7881:6;7837:71;:::i;:::-;7918:72;7986:2;7975:9;7971:18;7962:6;7918:72;:::i;:::-;8000;8068:2;8057:9;8053:18;8044:6;8000:72;:::i;:::-;7637:442;;;;;;:::o;8085:116::-;8155:21;8170:5;8155:21;:::i;:::-;8148:5;8145:32;8135:60;;8191:1;8188;8181:12;8135:60;8085:116;:::o;8207:137::-;8261:5;8292:6;8286:13;8277:22;;8308:30;8332:5;8308:30;:::i;:::-;8207:137;;;;:::o;8350:345::-;8417:6;8466:2;8454:9;8445:7;8441:23;8437:32;8434:119;;;8472:79;;:::i;:::-;8434:119;8592:1;8617:61;8670:7;8661:6;8650:9;8646:22;8617:61;:::i;:::-;8607:71;;8563:125;8350:345;;;;:::o;8701:332::-;8822:4;8860:2;8849:9;8845:18;8837:26;;8873:71;8941:1;8930:9;8926:17;8917:6;8873:71;:::i;:::-;8954:72;9022:2;9011:9;9007:18;8998:6;8954:72;:::i;:::-;8701:332;;;;;:::o;9039:143::-;9096:5;9127:6;9121:13;9112:22;;9143:33;9170:5;9143:33;:::i;:::-;9039:143;;;;:::o;9188:351::-;9258:6;9307:2;9295:9;9286:7;9282:23;9278:32;9275:119;;;9313:79;;:::i;:::-;9275:119;9433:1;9458:64;9514:7;9505:6;9494:9;9490:22;9458:64;:::i;:::-;9448:74;;9404:128;9188:351;;;;:::o;9545:85::-;9590:7;9619:5;9608:16;;9545:85;;;:::o;9636:60::-;9664:3;9685:5;9678:12;;9636:60;;;:::o;9702:158::-;9760:9;9793:61;9811:42;9820:32;9846:5;9820:32;:::i;:::-;9811:42;:::i;:::-;9793:61;:::i;:::-;9780:74;;9702:158;;;:::o;9866:147::-;9961:45;10000:5;9961:45;:::i;:::-;9956:3;9949:58;9866:147;;:::o;10019:114::-;10086:6;10120:5;10114:12;10104:22;;10019:114;;;:::o;10139:184::-;10238:11;10272:6;10267:3;10260:19;10312:4;10307:3;10303:14;10288:29;;10139:184;;;;:::o;10329:132::-;10396:4;10419:3;10411:11;;10449:4;10444:3;10440:14;10432:22;;10329:132;;;:::o;10467:108::-;10544:24;10562:5;10544:24;:::i;:::-;10539:3;10532:37;10467:108;;:::o;10581:179::-;10650:10;10671:46;10713:3;10705:6;10671:46;:::i;:::-;10749:4;10744:3;10740:14;10726:28;;10581:179;;;;:::o;10766:113::-;10836:4;10868;10863:3;10859:14;10851:22;;10766:113;;;:::o;10915:732::-;11034:3;11063:54;11111:5;11063:54;:::i;:::-;11133:86;11212:6;11207:3;11133:86;:::i;:::-;11126:93;;11243:56;11293:5;11243:56;:::i;:::-;11322:7;11353:1;11338:284;11363:6;11360:1;11357:13;11338:284;;;11439:6;11433:13;11466:63;11525:3;11510:13;11466:63;:::i;:::-;11459:70;;11552:60;11605:6;11552:60;:::i;:::-;11542:70;;11398:224;11385:1;11382;11378:9;11373:14;;11338:284;;;11342:14;11638:3;11631:10;;11039:608;;;10915:732;;;;:::o;11653:831::-;11916:4;11954:3;11943:9;11939:19;11931:27;;11968:71;12036:1;12025:9;12021:17;12012:6;11968:71;:::i;:::-;12049:80;12125:2;12114:9;12110:18;12101:6;12049:80;:::i;:::-;12176:9;12170:4;12166:20;12161:2;12150:9;12146:18;12139:48;12204:108;12307:4;12298:6;12204:108;:::i;:::-;12196:116;;12322:72;12390:2;12379:9;12375:18;12366:6;12322:72;:::i;:::-;12404:73;12472:3;12461:9;12457:19;12448:6;12404:73;:::i;:::-;11653:831;;;;;;;;:::o;12490:143::-;12547:5;12578:6;12572:13;12563:22;;12594:33;12621:5;12594:33;:::i;:::-;12490:143;;;;:::o;12639:507::-;12718:6;12726;12775:2;12763:9;12754:7;12750:23;12746:32;12743:119;;;12781:79;;:::i;:::-;12743:119;12901:1;12926:64;12982:7;12973:6;12962:9;12958:22;12926:64;:::i;:::-;12916:74;;12872:128;13039:2;13065:64;13121:7;13112:6;13101:9;13097:22;13065:64;:::i;:::-;13055:74;;13010:129;12639:507;;;;;:::o;13152:180::-;13200:77;13197:1;13190:88;13297:4;13294:1;13287:15;13321:4;13318:1;13311:15;13338:180;13386:77;13383:1;13376:88;13483:4;13480:1;13473:15;13507:4;13504:1;13497:15"},"methodIdentifiers":{"isTrustedForwarder(address)":"572b6c05","swapTokensForEth(address,uint256)":"56feb11b","trustedForwarder()":"7da0a877","versionRecipient()":"486ff0cd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_forwarder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapRouter\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"tokenPaymaster\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"Received\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swapTokensForEth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"versionRecipient\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isTrustedForwarder(address)\":{\"notice\":\"return if the forwarder is trusted to forward relayed transactions to us. the forwarder is required to verify the sender's signature, and verify the call is not a replay.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TokenSwap.sol\":\"TokenSwap\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@opengsn/contracts/src/BasePaymaster.sol\":{\"keccak256\":\"0x037963afa348ba25ed25d26f07a1b3545534e5447262eac8218f92246797569e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://482ab51f9c7a4fc86d3d1540a2465b1f5bf0a7244cc61de186233321dddbcdee\",\"dweb:/ipfs/QmY4geP56GPzkHADJ5xdks1ztrtFeVHqMu2SabHn8E3uuB\"]},\"@opengsn/contracts/src/BaseRelayRecipient.sol\":{\"keccak256\":\"0xce3168b37fc87ec34a18b56b4b16a06432119c07fd2e1d864b871dcf40372ebe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99b6d76e111f18169a6c3f9043a843f188a02b5737dc35e6c6535ee04858f1c7\",\"dweb:/ipfs/QmeibhmsicNMWMw1gggSknJsbm1WUtZgGokGnzd4CCZzTw\"]},\"@opengsn/contracts/src/forwarder/IForwarder.sol\":{\"keccak256\":\"0xca05fe8ee1d0bbdd9edd83f16b8481fa67704f0ed5a42d5c0f76c8a3a47d73f4\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e42577c586894c9fc9e11a3281c0e2d4183121714fd1101380b6b2b66c144ba3\",\"dweb:/ipfs/QmPQphvUxhvnYGXtNRbU7WcmbEP2N7mMDgC5R8R9AqC9xG\"]},\"@opengsn/contracts/src/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x9c717edb87debd2e6d3a7291ae1b2ec3248776617f20dbc2cbba66c7f1bf749c\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://ef2ce174df7e8dd8ac15c112768028bd89a517e21c354d5d35aa071f923e721d\",\"dweb:/ipfs/QmYHFK3FzfiiDRWhM8Q6KdT6YKmaA5JfDNKj6am7EymJU3\"]},\"@opengsn/contracts/src/interfaces/IRelayHub.sol\":{\"keccak256\":\"0x3497133a7147174c498d2feeb2569b973396a8c2c220b5876fd9eb3b59841c85\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://32bb285a0f675310ee87647d00717e2dee9dbc7179e5455a3e1d7a2e121b6bf7\",\"dweb:/ipfs/QmZABWeS7pi5KfhoDUKyZHEvwqiAL4sYvjr3UcWZ7SvqCX\"]},\"@opengsn/contracts/src/interfaces/IRelayRecipient.sol\":{\"keccak256\":\"0x199e82e0a2833a97213b5c16ac9b4e2b1814f2e90a4c4916855cbc21e710ad5f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92112fc87990f2d55c538946266c48f43e6ca442186ef3b8172eb4632deb0db3\",\"dweb:/ipfs/QmU6pqFXYT8fYfyhw7viRA775eBH4W7PAd589DVFGtSgxo\"]},\"@opengsn/contracts/src/interfaces/IStakeManager.sol\":{\"keccak256\":\"0x834859879435b9032dc629a03baaa0d7ce645c184997985a7b8da944086753bb\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://08ac05ead3b791dc42287fdfb3ac1a3734876ed19971ddfedc904910dc88ee72\",\"dweb:/ipfs/QmSPBuZtdr8QtLWQSzX7eQo754bxzR2wnxoeWJxGWzK8Qb\"]},\"@opengsn/contracts/src/utils/GsnEip712Library.sol\":{\"keccak256\":\"0x329a0634ba63c397bde0cf2b003b577cacf1bfbab9616bbf415781de243730d3\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a6e52a2b8598d3478272f8791be1493645a14d850fac70c8a7180d72f00a45d2\",\"dweb:/ipfs/QmQmbSNNBU1LEgxEmhpVqhbts3RjEn9Zavwv5PmQJEdfoZ\"]},\"@opengsn/contracts/src/utils/GsnTypes.sol\":{\"keccak256\":\"0x632b33731c279b0a14b00ceeaaed067e0570881bf31ef383b6970cb595566269\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://c4ef0205cbfd132c978dac437b361749caecd2e69ae339b5826cb65a086bdbc1\",\"dweb:/ipfs/Qme5emF1fkmqfTWydJ4S97CbTidEx72VYvKLzTbapH3nGB\"]},\"@opengsn/contracts/src/utils/GsnUtils.sol\":{\"keccak256\":\"0x93465757df9b5721f0dde979be1675f82296b8f3cd196c6eee29d828698cb0de\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b9a5628093b0cffc70f851a64aef968e4a379b98d60a7855fa9afce102dad052\",\"dweb:/ipfs/QmaQZXC9vxMrhwXXsr8C6fNpYPQx1PfiAbfmweL3aHZCy5\"]},\"@opengsn/contracts/src/utils/MinLibBytes.sol\":{\"keccak256\":\"0x8063af8e0f134be3d794ad39bdc0041f33a16c91a4ee7abb968d4c15c8d10c54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c56adf5ddc717546e922b5f0cdb1d2bf084b070d2256b684a746d535cefdfa23\",\"dweb:/ipfs/QmbGgdbkpg4fz79c8tgKFJB4afXHRYgL3iMRf9KBQSVkWu\"]},\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x5b35d8e68aeaccc685239bd9dd79b9ba01a0357930f8a3307ab85511733d9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba8eb2d22f9321bd4660f6617c181d9611ff30a9b089408b8c6e2216d6d5cdc5\",\"dweb:/ipfs/QmTSJvhjHfnUV1j4hsqDv8PmLvGBLRs9gHLjTUXrUJ5Y9q\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]},\"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol\":{\"keccak256\":\"0x8a3c5c449d4b7cd76513ed6995f4b86e4a86f222c770f8442f5fc128ce29b4d2\",\"urls\":[\"bzz-raw://1df63ca373dafae3bd0ee7fe70f890a1dc7c45ed869c01de68413e0e97ff9deb\",\"dweb:/ipfs/QmefJgEYGUL8KX7kQKYTrDweF8GB7yjy3nw5Bmqzryg7PG\"]},\"@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol\":{\"keccak256\":\"0x744e30c133bd0f7ca9e7163433cf6d72f45c6bb1508c2c9c02f1a6db796ae59d\",\"urls\":[\"bzz-raw://9bf2f4454ad63d4cff03a0630e787d9e8a9deed80aec89682cd8ad6379d9ef8c\",\"dweb:/ipfs/Qme51hQNR2wpax7ooUadhtqLtXm8ffeVVYyubLkTT4wMCG\"]},\"contracts/TokenPaymaster.sol\":{\"keccak256\":\"0x9873f74ea3f1e1a49e0aaaaa7f9a6e6e2192f773b775e209357b9c392a37e5c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc5093c840ce271d7aab1e2d11497c07b4f5d48d9e7aa8ba35ee253ab4b2ea88\",\"dweb:/ipfs/QmYvKJT5ma3CuZXBRgrEQpP961mQwTHchSVzWmxCRmA1AG\"]},\"contracts/TokenSwap.sol\":{\"keccak256\":\"0x3f4df54715538084a9fab7523dfb5f446fcc79ffacd5b5082e64d84efa5320dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ff9765aa9d69c1b5d4e089608ded799f6bc0c0b8864c4f96f79236fc81465b7\",\"dweb:/ipfs/QmafjnCqrZSoYwodEwsEJD6UBCjgxkurATDM9Lq2cpNkkx\"]}},\"version\":1}"}}}}}