{
  "id": "f9a6d29ddfb1072a5d54f22e8b9c76cf",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.24",
  "solcLongVersion": "0.8.24+commit.e11b9ed9",
  "input": {
    "language": "Solidity",
    "sources": {
      "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (interfaces/draft-IERC6093.sol)\n\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC20InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC20InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC20InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n    /**\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721.\n     * Used in balance queries.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721InvalidOwner(address owner);\n\n    /**\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721NonexistentToken(uint256 tokenId);\n\n    /**\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param tokenId Identifier number of a token.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC721InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC721InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC721InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC1155InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC1155InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC1155MissingApprovalForAll(address operator, address owner);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC1155InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC1155InvalidOperator(address operator);\n\n    /**\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n     * Used in batch transfers.\n     * @param idsLength Length of the array of token identifiers\n     * @param valuesLength Length of the array of token amounts\n     */\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.5.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n    mapping(address account => uint256) private _balances;\n\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * Both values are immutable: they can only be set once during construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /// @inheritdoc IERC20\n    function totalSupply() public view virtual returns (uint256) {\n        return _totalSupply;\n    }\n\n    /// @inheritdoc IERC20\n    function balanceOf(address account) public view virtual returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /// @inheritdoc IERC20\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            _totalSupply += value;\n        } else {\n            uint256 fromBalance = _balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                _balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                _totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                _balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n     * true using the following override:\n     *\n     * ```solidity\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        _allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance < type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"
      },
      "contracts/EdgeSwarm.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract EdgeSwarm is ERC20 {\n    address public owner;\n\n    // THE MISSING LINK: This is the mapping your Android App (RewardViewModel) is looking for.\n    // It stores the number of tasks completed by each wallet.\n    mapping(address => uint256) public ubiEarned;\n\n    struct WorkTask {\n        uint256 taskId;\n        int256 predictionScore; // The 0-100 confidence from your XGpicks logic\n        address worker;\n        uint256 timestamp;\n    }\n\n    // Maps Task ID to the result submitted by the phone\n    mapping(uint256 => WorkTask) public ledger;\n\n    event WorkVerified(address indexed worker, uint256 taskId, int256 score);\n\n    constructor() ERC20(\"Swarm Token\", \"SWM\") {\n        owner = msg.sender;\n    }\n\n    /**\n     * @dev This is the function your Pixel 10 calls.\n     * It stores the data, updates the ubiEarned counter, and mints tokens.\n     */\n    function submitWork(uint256 _taskId, int256 _score) public {\n        require(ledger[_taskId].worker == address(0), \"Task already completed\");\n\n        // 1. Record the \"Real Work\" in the ledger\n        ledger[_taskId] = WorkTask({\n            taskId: _taskId,\n            predictionScore: _score,\n            worker: msg.sender,\n            timestamp: block.timestamp\n        });\n\n        // 2. INCREMENT THE COUNTER: This ensures your RewardViewModel sees the new balance.\n        ubiEarned[msg.sender] += 1;\n\n        // 3. Reward the device with 1 full ERC20 token (18 decimals)\n        _mint(msg.sender, 1 * 10**18);\n\n        emit WorkVerified(msg.sender, _taskId, _score);\n    }\n}\n"
      }
    },
    "settings": {
      "evmVersion": "paris",
      "optimizer": {
        "enabled": false,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "sources": {
      "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
          "exportedSymbols": {
            "IERC1155Errors": [
              136
            ],
            "IERC20Errors": [
              41
            ],
            "IERC721Errors": [
              89
            ]
          },
          "id": 137,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "113:24:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC20Errors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "139:141:0",
                "text": " @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."
              },
              "fullyImplemented": true,
              "id": 41,
              "linearizedBaseContracts": [
                41
              ],
              "name": "IERC20Errors",
              "nameLocation": "291:12:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3,
                    "nodeType": "StructuredDocumentation",
                    "src": "310:309:0",
                    "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."
                  },
                  "errorSelector": "e450d38c",
                  "id": 11,
                  "name": "ERC20InsufficientBalance",
                  "nameLocation": "630:24:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 10,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "663:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 11,
                        "src": "655:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "655:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "679:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 11,
                        "src": "671:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "671:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9,
                        "mutability": "mutable",
                        "name": "needed",
                        "nameLocation": "696:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 11,
                        "src": "688:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "688:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "654:49:0"
                  },
                  "src": "624:80:0"
                },
                {
                  "documentation": {
                    "id": 12,
                    "nodeType": "StructuredDocumentation",
                    "src": "710:152:0",
                    "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."
                  },
                  "errorSelector": "96c6fd1e",
                  "id": 16,
                  "name": "ERC20InvalidSender",
                  "nameLocation": "873:18:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 15,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "900:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 16,
                        "src": "892:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "892:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "891:16:0"
                  },
                  "src": "867:41:0"
                },
                {
                  "documentation": {
                    "id": 17,
                    "nodeType": "StructuredDocumentation",
                    "src": "914:159:0",
                    "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."
                  },
                  "errorSelector": "ec442f05",
                  "id": 21,
                  "name": "ERC20InvalidReceiver",
                  "nameLocation": "1084:20:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 20,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "1113:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 21,
                        "src": "1105:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1105:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1104:18:0"
                  },
                  "src": "1078:45:0"
                },
                {
                  "documentation": {
                    "id": 22,
                    "nodeType": "StructuredDocumentation",
                    "src": "1129:345:0",
                    "text": " @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."
                  },
                  "errorSelector": "fb8f41b2",
                  "id": 30,
                  "name": "ERC20InsufficientAllowance",
                  "nameLocation": "1485:26:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 29,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1520:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 30,
                        "src": "1512:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1512:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26,
                        "mutability": "mutable",
                        "name": "allowance",
                        "nameLocation": "1537:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 30,
                        "src": "1529:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1529:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28,
                        "mutability": "mutable",
                        "name": "needed",
                        "nameLocation": "1556:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 30,
                        "src": "1548:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1548:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1511:52:0"
                  },
                  "src": "1479:85:0"
                },
                {
                  "documentation": {
                    "id": 31,
                    "nodeType": "StructuredDocumentation",
                    "src": "1570:174:0",
                    "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."
                  },
                  "errorSelector": "e602df05",
                  "id": 35,
                  "name": "ERC20InvalidApprover",
                  "nameLocation": "1755:20:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 34,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33,
                        "mutability": "mutable",
                        "name": "approver",
                        "nameLocation": "1784:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 35,
                        "src": "1776:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1776:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1775:18:0"
                  },
                  "src": "1749:45:0"
                },
                {
                  "documentation": {
                    "id": 36,
                    "nodeType": "StructuredDocumentation",
                    "src": "1800:195:0",
                    "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."
                  },
                  "errorSelector": "94280d62",
                  "id": 40,
                  "name": "ERC20InvalidSpender",
                  "nameLocation": "2006:19:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 39,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 38,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2034:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 40,
                        "src": "2026:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 37,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2026:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2025:17:0"
                  },
                  "src": "2000:43:0"
                }
              ],
              "scope": 137,
              "src": "281:1764:0",
              "usedErrors": [
                11,
                16,
                21,
                30,
                35,
                40
              ],
              "usedEvents": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC721Errors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 42,
                "nodeType": "StructuredDocumentation",
                "src": "2047:143:0",
                "text": " @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."
              },
              "fullyImplemented": true,
              "id": 89,
              "linearizedBaseContracts": [
                89
              ],
              "name": "IERC721Errors",
              "nameLocation": "2201:13:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 43,
                    "nodeType": "StructuredDocumentation",
                    "src": "2221:220:0",
                    "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721.\n Used in balance queries.\n @param owner Address of the current owner of a token."
                  },
                  "errorSelector": "89c62b64",
                  "id": 47,
                  "name": "ERC721InvalidOwner",
                  "nameLocation": "2452:18:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 46,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 45,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2479:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 47,
                        "src": "2471:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 44,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2471:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2470:15:0"
                  },
                  "src": "2446:40:0"
                },
                {
                  "documentation": {
                    "id": 48,
                    "nodeType": "StructuredDocumentation",
                    "src": "2492:132:0",
                    "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."
                  },
                  "errorSelector": "7e273289",
                  "id": 52,
                  "name": "ERC721NonexistentToken",
                  "nameLocation": "2635:22:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 51,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 50,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2666:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 52,
                        "src": "2658:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 49,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2658:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2657:17:0"
                  },
                  "src": "2629:46:0"
                },
                {
                  "documentation": {
                    "id": 53,
                    "nodeType": "StructuredDocumentation",
                    "src": "2681:289:0",
                    "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."
                  },
                  "errorSelector": "64283d7b",
                  "id": 61,
                  "name": "ERC721IncorrectOwner",
                  "nameLocation": "2981:20:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 60,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 55,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "3010:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 61,
                        "src": "3002:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 54,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3002:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 57,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3026:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 61,
                        "src": "3018:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 56,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3018:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 59,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3043:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 61,
                        "src": "3035:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 58,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3035:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3001:48:0"
                  },
                  "src": "2975:75:0"
                },
                {
                  "documentation": {
                    "id": 62,
                    "nodeType": "StructuredDocumentation",
                    "src": "3056:152:0",
                    "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."
                  },
                  "errorSelector": "73c6ac6e",
                  "id": 66,
                  "name": "ERC721InvalidSender",
                  "nameLocation": "3219:19:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 65,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 64,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "3247:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 66,
                        "src": "3239:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 63,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3239:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3238:16:0"
                  },
                  "src": "3213:42:0"
                },
                {
                  "documentation": {
                    "id": 67,
                    "nodeType": "StructuredDocumentation",
                    "src": "3261:159:0",
                    "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."
                  },
                  "errorSelector": "64a0ae92",
                  "id": 71,
                  "name": "ERC721InvalidReceiver",
                  "nameLocation": "3431:21:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 70,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 69,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "3461:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 71,
                        "src": "3453:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 68,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3453:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3452:18:0"
                  },
                  "src": "3425:46:0"
                },
                {
                  "documentation": {
                    "id": 72,
                    "nodeType": "StructuredDocumentation",
                    "src": "3477:247:0",
                    "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."
                  },
                  "errorSelector": "177e802f",
                  "id": 78,
                  "name": "ERC721InsufficientApproval",
                  "nameLocation": "3735:26:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 77,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 74,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "3770:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 78,
                        "src": "3762:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 73,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3762:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 76,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3788:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 78,
                        "src": "3780:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 75,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3780:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3761:35:0"
                  },
                  "src": "3729:68:0"
                },
                {
                  "documentation": {
                    "id": 79,
                    "nodeType": "StructuredDocumentation",
                    "src": "3803:174:0",
                    "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."
                  },
                  "errorSelector": "a9fbf51f",
                  "id": 83,
                  "name": "ERC721InvalidApprover",
                  "nameLocation": "3988:21:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 82,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 81,
                        "mutability": "mutable",
                        "name": "approver",
                        "nameLocation": "4018:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 83,
                        "src": "4010:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 80,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4010:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4009:18:0"
                  },
                  "src": "3982:46:0"
                },
                {
                  "documentation": {
                    "id": 84,
                    "nodeType": "StructuredDocumentation",
                    "src": "4034:197:0",
                    "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."
                  },
                  "errorSelector": "5b08ba18",
                  "id": 88,
                  "name": "ERC721InvalidOperator",
                  "nameLocation": "4242:21:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 87,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 86,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4272:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 88,
                        "src": "4264:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 85,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4264:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4263:18:0"
                  },
                  "src": "4236:46:0"
                }
              ],
              "scope": 137,
              "src": "2191:2093:0",
              "usedErrors": [
                47,
                52,
                61,
                66,
                71,
                78,
                83,
                88
              ],
              "usedEvents": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC1155Errors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 90,
                "nodeType": "StructuredDocumentation",
                "src": "4286:145:0",
                "text": " @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."
              },
              "fullyImplemented": true,
              "id": 136,
              "linearizedBaseContracts": [
                136
              ],
              "name": "IERC1155Errors",
              "nameLocation": "4442:14:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 91,
                    "nodeType": "StructuredDocumentation",
                    "src": "4463:361:0",
                    "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."
                  },
                  "errorSelector": "03dee4c5",
                  "id": 101,
                  "name": "ERC1155InsufficientBalance",
                  "nameLocation": "4835:26:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 93,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "4870:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 101,
                        "src": "4862:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 92,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4862:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 95,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "4886:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 101,
                        "src": "4878:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 94,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4878:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 97,
                        "mutability": "mutable",
                        "name": "needed",
                        "nameLocation": "4903:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 101,
                        "src": "4895:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 96,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4895:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 99,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4919:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 101,
                        "src": "4911:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 98,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4911:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4861:66:0"
                  },
                  "src": "4829:99:0"
                },
                {
                  "documentation": {
                    "id": 102,
                    "nodeType": "StructuredDocumentation",
                    "src": "4934:152:0",
                    "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."
                  },
                  "errorSelector": "01a83514",
                  "id": 106,
                  "name": "ERC1155InvalidSender",
                  "nameLocation": "5097:20:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 104,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "5126:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 106,
                        "src": "5118:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 103,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5118:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5117:16:0"
                  },
                  "src": "5091:43:0"
                },
                {
                  "documentation": {
                    "id": 107,
                    "nodeType": "StructuredDocumentation",
                    "src": "5140:159:0",
                    "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."
                  },
                  "errorSelector": "57f447ce",
                  "id": 111,
                  "name": "ERC1155InvalidReceiver",
                  "nameLocation": "5310:22:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 110,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 109,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "5341:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 111,
                        "src": "5333:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 108,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5333:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5332:18:0"
                  },
                  "src": "5304:47:0"
                },
                {
                  "documentation": {
                    "id": 112,
                    "nodeType": "StructuredDocumentation",
                    "src": "5357:256:0",
                    "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."
                  },
                  "errorSelector": "e237d922",
                  "id": 118,
                  "name": "ERC1155MissingApprovalForAll",
                  "nameLocation": "5624:28:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 117,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 114,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "5661:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 118,
                        "src": "5653:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5653:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 116,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "5679:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 118,
                        "src": "5671:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 115,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5671:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5652:33:0"
                  },
                  "src": "5618:68:0"
                },
                {
                  "documentation": {
                    "id": 119,
                    "nodeType": "StructuredDocumentation",
                    "src": "5692:174:0",
                    "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."
                  },
                  "errorSelector": "3e31884e",
                  "id": 123,
                  "name": "ERC1155InvalidApprover",
                  "nameLocation": "5877:22:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 122,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 121,
                        "mutability": "mutable",
                        "name": "approver",
                        "nameLocation": "5908:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 123,
                        "src": "5900:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 120,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5900:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5899:18:0"
                  },
                  "src": "5871:47:0"
                },
                {
                  "documentation": {
                    "id": 124,
                    "nodeType": "StructuredDocumentation",
                    "src": "5924:197:0",
                    "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."
                  },
                  "errorSelector": "ced3e100",
                  "id": 128,
                  "name": "ERC1155InvalidOperator",
                  "nameLocation": "6132:22:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 127,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 126,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "6163:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 128,
                        "src": "6155:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 125,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6155:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6154:18:0"
                  },
                  "src": "6126:47:0"
                },
                {
                  "documentation": {
                    "id": 129,
                    "nodeType": "StructuredDocumentation",
                    "src": "6179:280:0",
                    "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"
                  },
                  "errorSelector": "5b059991",
                  "id": 135,
                  "name": "ERC1155InvalidArrayLength",
                  "nameLocation": "6470:25:0",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 131,
                        "mutability": "mutable",
                        "name": "idsLength",
                        "nameLocation": "6504:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 135,
                        "src": "6496:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 130,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6496:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 133,
                        "mutability": "mutable",
                        "name": "valuesLength",
                        "nameLocation": "6523:12:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 135,
                        "src": "6515:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6515:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6495:41:0"
                  },
                  "src": "6464:73:0"
                }
              ],
              "scope": 137,
              "src": "4432:2107:0",
              "usedErrors": [
                101,
                106,
                111,
                118,
                123,
                128,
                135
              ],
              "usedEvents": []
            }
          ],
          "src": "113:6427:0"
        },
        "id": 0
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "exportedSymbols": {
            "Context": [
              785
            ],
            "ERC20": [
              651
            ],
            "IERC20": [
              729
            ],
            "IERC20Errors": [
              41
            ],
            "IERC20Metadata": [
              755
            ]
          },
          "id": 652,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 138,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "105:24:1"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 140,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 652,
              "sourceUnit": 730,
              "src": "131:36:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 139,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 729,
                    "src": "139:6:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
              "file": "./extensions/IERC20Metadata.sol",
              "id": 142,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 652,
              "sourceUnit": 756,
              "src": "168:63:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 141,
                    "name": "IERC20Metadata",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 755,
                    "src": "176:14:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../../utils/Context.sol",
              "id": 144,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 652,
              "sourceUnit": 786,
              "src": "232:48:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 143,
                    "name": "Context",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 785,
                    "src": "240:7:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
              "file": "../../interfaces/draft-IERC6093.sol",
              "id": 146,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 652,
              "sourceUnit": 137,
              "src": "281:65:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 145,
                    "name": "IERC20Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 41,
                    "src": "289:12:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 148,
                    "name": "Context",
                    "nameLocations": [
                      "1133:7:1"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 785,
                    "src": "1133:7:1"
                  },
                  "id": 149,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1133:7:1"
                },
                {
                  "baseName": {
                    "id": 150,
                    "name": "IERC20",
                    "nameLocations": [
                      "1142:6:1"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 729,
                    "src": "1142:6:1"
                  },
                  "id": 151,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1142:6:1"
                },
                {
                  "baseName": {
                    "id": 152,
                    "name": "IERC20Metadata",
                    "nameLocations": [
                      "1150:14:1"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 755,
                    "src": "1150:14:1"
                  },
                  "id": 153,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1150:14:1"
                },
                {
                  "baseName": {
                    "id": 154,
                    "name": "IERC20Errors",
                    "nameLocations": [
                      "1166:12:1"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 41,
                    "src": "1166:12:1"
                  },
                  "id": 155,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1166:12:1"
                }
              ],
              "canonicalName": "ERC20",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 147,
                "nodeType": "StructuredDocumentation",
                "src": "348:757:1",
                "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."
              },
              "fullyImplemented": true,
              "id": 651,
              "linearizedBaseContracts": [
                651,
                41,
                755,
                729,
                785
              ],
              "name": "ERC20",
              "nameLocation": "1124:5:1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 159,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nameLocation": "1229:9:1",
                  "nodeType": "VariableDeclaration",
                  "scope": 651,
                  "src": "1185:53:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 158,
                    "keyName": "account",
                    "keyNameLocation": "1201:7:1",
                    "keyType": {
                      "id": 156,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1193:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1185:35:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueName": "",
                    "valueNameLocation": "-1:-1:-1",
                    "valueType": {
                      "id": 157,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1212:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 165,
                  "mutability": "mutable",
                  "name": "_allowances",
                  "nameLocation": "1317:11:1",
                  "nodeType": "VariableDeclaration",
                  "scope": 651,
                  "src": "1245:83:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 164,
                    "keyName": "account",
                    "keyNameLocation": "1261:7:1",
                    "keyType": {
                      "id": 160,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1253:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1245:63:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueName": "",
                    "valueNameLocation": "-1:-1:-1",
                    "valueType": {
                      "id": 163,
                      "keyName": "spender",
                      "keyNameLocation": "1288:7:1",
                      "keyType": {
                        "id": 161,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1280:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1272:35:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueName": "",
                      "valueNameLocation": "-1:-1:-1",
                      "valueType": {
                        "id": 162,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1299:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 167,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nameLocation": "1351:12:1",
                  "nodeType": "VariableDeclaration",
                  "scope": 651,
                  "src": "1335:28:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 166,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1335:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 169,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "1385:5:1",
                  "nodeType": "VariableDeclaration",
                  "scope": 651,
                  "src": "1370:20:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 168,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1370:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 171,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "1411:7:1",
                  "nodeType": "VariableDeclaration",
                  "scope": 651,
                  "src": "1396:22:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 170,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1396:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 187,
                    "nodeType": "Block",
                    "src": "1638:57:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 179,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 169,
                            "src": "1648:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 180,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 174,
                            "src": "1656:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1648:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 182,
                        "nodeType": "ExpressionStatement",
                        "src": "1648:13:1"
                      },
                      {
                        "expression": {
                          "id": 185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 183,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 171,
                            "src": "1671:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 184,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 176,
                            "src": "1681:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1671:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 186,
                        "nodeType": "ExpressionStatement",
                        "src": "1671:17:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 172,
                    "nodeType": "StructuredDocumentation",
                    "src": "1425:152:1",
                    "text": " @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."
                  },
                  "id": 188,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 174,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "1608:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 188,
                        "src": "1594:19:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 173,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1594:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 176,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "1629:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 188,
                        "src": "1615:21:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 175,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1615:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1593:44:1"
                  },
                  "returnParameters": {
                    "id": 178,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1638:0:1"
                  },
                  "scope": 651,
                  "src": "1582:113:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    742
                  ],
                  "body": {
                    "id": 196,
                    "nodeType": "Block",
                    "src": "1820:29:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 194,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 169,
                          "src": "1837:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 193,
                        "id": 195,
                        "nodeType": "Return",
                        "src": "1830:12:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 189,
                    "nodeType": "StructuredDocumentation",
                    "src": "1701:54:1",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 197,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "1769:4:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 190,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1773:2:1"
                  },
                  "returnParameters": {
                    "id": 193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 192,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 197,
                        "src": "1805:13:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 191,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1805:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1804:15:1"
                  },
                  "scope": 651,
                  "src": "1760:89:1",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    748
                  ],
                  "body": {
                    "id": 205,
                    "nodeType": "Block",
                    "src": "2024:31:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 203,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 171,
                          "src": "2041:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 202,
                        "id": 204,
                        "nodeType": "Return",
                        "src": "2034:14:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 198,
                    "nodeType": "StructuredDocumentation",
                    "src": "1855:102:1",
                    "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                  },
                  "functionSelector": "95d89b41",
                  "id": 206,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "1971:6:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 199,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1977:2:1"
                  },
                  "returnParameters": {
                    "id": 202,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 201,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 206,
                        "src": "2009:13:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 200,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2009:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2008:15:1"
                  },
                  "scope": 651,
                  "src": "1962:93:1",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    754
                  ],
                  "body": {
                    "id": 214,
                    "nodeType": "Block",
                    "src": "2744:26:1",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "3138",
                          "id": 212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2761:2:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        "functionReturnParameters": 211,
                        "id": 213,
                        "nodeType": "Return",
                        "src": "2754:9:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 207,
                    "nodeType": "StructuredDocumentation",
                    "src": "2061:622:1",
                    "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
                  },
                  "functionSelector": "313ce567",
                  "id": 215,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "2697:8:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 208,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2705:2:1"
                  },
                  "returnParameters": {
                    "id": 211,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 210,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 215,
                        "src": "2737:5:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 209,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2737:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2736:7:1"
                  },
                  "scope": 651,
                  "src": "2688:82:1",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    678
                  ],
                  "body": {
                    "id": 223,
                    "nodeType": "Block",
                    "src": "2864:36:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 221,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 167,
                          "src": "2881:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 220,
                        "id": 222,
                        "nodeType": "Return",
                        "src": "2874:19:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 216,
                    "nodeType": "StructuredDocumentation",
                    "src": "2776:22:1",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "18160ddd",
                  "id": 224,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "2812:11:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 217,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2823:2:1"
                  },
                  "returnParameters": {
                    "id": 220,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 219,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 224,
                        "src": "2855:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 218,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2855:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2854:9:1"
                  },
                  "scope": 651,
                  "src": "2803:97:1",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    686
                  ],
                  "body": {
                    "id": 236,
                    "nodeType": "Block",
                    "src": "3007:42:1",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 232,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 159,
                            "src": "3024:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 234,
                          "indexExpression": {
                            "id": 233,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 227,
                            "src": "3034:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3024:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 231,
                        "id": 235,
                        "nodeType": "Return",
                        "src": "3017:25:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 225,
                    "nodeType": "StructuredDocumentation",
                    "src": "2906:22:1",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "70a08231",
                  "id": 237,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "2942:9:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 227,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2960:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 237,
                        "src": "2952:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 226,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2952:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2951:17:1"
                  },
                  "returnParameters": {
                    "id": 231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 230,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 237,
                        "src": "2998:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2998:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2997:9:1"
                  },
                  "scope": 651,
                  "src": "2933:116:1",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    696
                  ],
                  "body": {
                    "id": 260,
                    "nodeType": "Block",
                    "src": "3319:103:1",
                    "statements": [
                      {
                        "assignments": [
                          248
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 248,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "3337:5:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 260,
                            "src": "3329:13:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 247,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3329:7:1",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 251,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 249,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 767,
                            "src": "3345:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3345:12:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3329:28:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 253,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 248,
                              "src": "3377:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 254,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 240,
                              "src": "3384:2:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 255,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 242,
                              "src": "3388:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 252,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 381,
                            "src": "3367:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3367:27:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 257,
                        "nodeType": "ExpressionStatement",
                        "src": "3367:27:1"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3411:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 246,
                        "id": 259,
                        "nodeType": "Return",
                        "src": "3404:11:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 238,
                    "nodeType": "StructuredDocumentation",
                    "src": "3055:184:1",
                    "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 261,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "3253:8:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 243,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 240,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3270:2:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 261,
                        "src": "3262:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 239,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3262:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 242,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3282:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 261,
                        "src": "3274:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 241,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3274:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3261:27:1"
                  },
                  "returnParameters": {
                    "id": 246,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 245,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 261,
                        "src": "3313:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 244,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3313:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3312:6:1"
                  },
                  "scope": 651,
                  "src": "3244:178:1",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    706
                  ],
                  "body": {
                    "id": 277,
                    "nodeType": "Block",
                    "src": "3544:51:1",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 271,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 165,
                              "src": "3561:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 273,
                            "indexExpression": {
                              "id": 272,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 264,
                              "src": "3573:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3561:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 275,
                          "indexExpression": {
                            "id": 274,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 266,
                            "src": "3580:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3561:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 270,
                        "id": 276,
                        "nodeType": "Return",
                        "src": "3554:34:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 262,
                    "nodeType": "StructuredDocumentation",
                    "src": "3428:22:1",
                    "text": "@inheritdoc IERC20"
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 278,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "3464:9:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 264,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3482:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 278,
                        "src": "3474:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 263,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3474:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 266,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "3497:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 278,
                        "src": "3489:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 265,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3489:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3473:32:1"
                  },
                  "returnParameters": {
                    "id": 270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 269,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 278,
                        "src": "3535:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 268,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3535:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3534:9:1"
                  },
                  "scope": 651,
                  "src": "3455:140:1",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    716
                  ],
                  "body": {
                    "id": 301,
                    "nodeType": "Block",
                    "src": "3981:107:1",
                    "statements": [
                      {
                        "assignments": [
                          289
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 289,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "3999:5:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 301,
                            "src": "3991:13:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 288,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3991:7:1",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 292,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 290,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 767,
                            "src": "4007:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4007:12:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3991:28:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 294,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 289,
                              "src": "4038:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 295,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 281,
                              "src": "4045:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 296,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 283,
                              "src": "4054:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 293,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              542,
                              602
                            ],
                            "referencedDeclaration": 542,
                            "src": "4029:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4029:31:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 298,
                        "nodeType": "ExpressionStatement",
                        "src": "4029:31:1"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4077:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 287,
                        "id": 300,
                        "nodeType": "Return",
                        "src": "4070:11:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 279,
                    "nodeType": "StructuredDocumentation",
                    "src": "3601:296:1",
                    "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 302,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "3911:7:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 281,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "3927:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 302,
                        "src": "3919:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 280,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3919:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 283,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3944:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 302,
                        "src": "3936:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3936:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3918:32:1"
                  },
                  "returnParameters": {
                    "id": 287,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 286,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 302,
                        "src": "3975:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 285,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3975:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3974:6:1"
                  },
                  "scope": 651,
                  "src": "3902:186:1",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    728
                  ],
                  "body": {
                    "id": 333,
                    "nodeType": "Block",
                    "src": "4773:151:1",
                    "statements": [
                      {
                        "assignments": [
                          315
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 315,
                            "mutability": "mutable",
                            "name": "spender",
                            "nameLocation": "4791:7:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 333,
                            "src": "4783:15:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 314,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4783:7:1",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 318,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 316,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 767,
                            "src": "4801:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4801:12:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4783:30:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 320,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 305,
                              "src": "4839:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 321,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 315,
                              "src": "4845:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 322,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 309,
                              "src": "4854:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 319,
                            "name": "_spendAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 650,
                            "src": "4823:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4823:37:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 324,
                        "nodeType": "ExpressionStatement",
                        "src": "4823:37:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 326,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 305,
                              "src": "4880:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 327,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 307,
                              "src": "4886:2:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 328,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 309,
                              "src": "4890:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 325,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 381,
                            "src": "4870:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4870:26:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 330,
                        "nodeType": "ExpressionStatement",
                        "src": "4870:26:1"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4913:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 313,
                        "id": 332,
                        "nodeType": "Return",
                        "src": "4906:11:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 303,
                    "nodeType": "StructuredDocumentation",
                    "src": "4094:581:1",
                    "text": " @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."
                  },
                  "functionSelector": "23b872dd",
                  "id": 334,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "4689:12:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 305,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4710:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 334,
                        "src": "4702:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 304,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4702:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 307,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4724:2:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 334,
                        "src": "4716:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 306,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4716:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 309,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4736:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 334,
                        "src": "4728:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 308,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4728:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4701:41:1"
                  },
                  "returnParameters": {
                    "id": 313,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 312,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 334,
                        "src": "4767:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 311,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4767:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4766:6:1"
                  },
                  "scope": 651,
                  "src": "4680:244:1",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 380,
                    "nodeType": "Block",
                    "src": "5366:231:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 344,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 337,
                            "src": "5380:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5396:1:1",
                                "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": 346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5388:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 345,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5388:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5388:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5380:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 358,
                        "nodeType": "IfStatement",
                        "src": "5376:86:1",
                        "trueBody": {
                          "id": 357,
                          "nodeType": "Block",
                          "src": "5400:62:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 353,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5448:1:1",
                                        "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": 352,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5440:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 351,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5440:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 354,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5440:10:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 350,
                                  "name": "ERC20InvalidSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16,
                                  "src": "5421:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5421:30:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 356,
                              "nodeType": "RevertStatement",
                              "src": "5414:37:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 359,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 339,
                            "src": "5475:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5489:1:1",
                                "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": 361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5481:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 360,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5481:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5481:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5475:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 373,
                        "nodeType": "IfStatement",
                        "src": "5471:86:1",
                        "trueBody": {
                          "id": 372,
                          "nodeType": "Block",
                          "src": "5493:64:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 368,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5543:1:1",
                                        "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": 367,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5535:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 366,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5535:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5535:10:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 365,
                                  "name": "ERC20InvalidReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21,
                                  "src": "5514:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5514:32:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 371,
                              "nodeType": "RevertStatement",
                              "src": "5507:39:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 375,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 337,
                              "src": "5574:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 376,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 339,
                              "src": "5580:2:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 377,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 341,
                              "src": "5584:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 374,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 458,
                            "src": "5566:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5566:24:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 379,
                        "nodeType": "ExpressionStatement",
                        "src": "5566:24:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 335,
                    "nodeType": "StructuredDocumentation",
                    "src": "4930:362:1",
                    "text": " @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."
                  },
                  "id": 381,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "5306:9:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 337,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5324:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 381,
                        "src": "5316:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 336,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5316:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 339,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5338:2:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 381,
                        "src": "5330:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 338,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5330:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 341,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5350:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 381,
                        "src": "5342:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5342:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5315:41:1"
                  },
                  "returnParameters": {
                    "id": 343,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5366:0:1"
                  },
                  "scope": 651,
                  "src": "5297:300:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 457,
                    "nodeType": "Block",
                    "src": "5987:1032:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 391,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 384,
                            "src": "6001:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6017:1:1",
                                "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": 393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6009:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 392,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6009:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6009:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6001:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 428,
                          "nodeType": "Block",
                          "src": "6175:362:1",
                          "statements": [
                            {
                              "assignments": [
                                403
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 403,
                                  "mutability": "mutable",
                                  "name": "fromBalance",
                                  "nameLocation": "6197:11:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 428,
                                  "src": "6189:19:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 402,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6189:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 407,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 404,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 159,
                                  "src": "6211:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 406,
                                "indexExpression": {
                                  "id": 405,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 384,
                                  "src": "6221:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6211:15:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6189:37:1"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 408,
                                  "name": "fromBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 403,
                                  "src": "6244:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 409,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 388,
                                  "src": "6258:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6244:19:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 418,
                              "nodeType": "IfStatement",
                              "src": "6240:115:1",
                              "trueBody": {
                                "id": 417,
                                "nodeType": "Block",
                                "src": "6265:90:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 412,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 384,
                                          "src": "6315:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 413,
                                          "name": "fromBalance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 403,
                                          "src": "6321:11:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 414,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 388,
                                          "src": "6334:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 411,
                                        "name": "ERC20InsufficientBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11,
                                        "src": "6290:24:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256) pure"
                                        }
                                      },
                                      "id": 415,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6290:50:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 416,
                                    "nodeType": "RevertStatement",
                                    "src": "6283:57:1"
                                  }
                                ]
                              }
                            },
                            {
                              "id": 427,
                              "nodeType": "UncheckedBlock",
                              "src": "6368:159:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 425,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 419,
                                        "name": "_balances",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 159,
                                        "src": "6475:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 421,
                                      "indexExpression": {
                                        "id": 420,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 384,
                                        "src": "6485:4:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "6475:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 424,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 422,
                                        "name": "fromBalance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 403,
                                        "src": "6493:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 423,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 388,
                                        "src": "6507:5:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6493:19:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6475:37:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 426,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6475:37:1"
                                }
                              ]
                            }
                          ]
                        },
                        "id": 429,
                        "nodeType": "IfStatement",
                        "src": "5997:540:1",
                        "trueBody": {
                          "id": 401,
                          "nodeType": "Block",
                          "src": "6021:148:1",
                          "statements": [
                            {
                              "expression": {
                                "id": 399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 397,
                                  "name": "_totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 167,
                                  "src": "6137:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 398,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 388,
                                  "src": "6153:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6137:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 400,
                              "nodeType": "ExpressionStatement",
                              "src": "6137:21:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 430,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 386,
                            "src": "6551:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6565:1:1",
                                "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": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6557:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 431,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6557:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6557:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6551:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 449,
                          "nodeType": "Block",
                          "src": "6766:206:1",
                          "statements": [
                            {
                              "id": 448,
                              "nodeType": "UncheckedBlock",
                              "src": "6780:182:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 446,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 442,
                                        "name": "_balances",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 159,
                                        "src": "6925:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 444,
                                      "indexExpression": {
                                        "id": 443,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 386,
                                        "src": "6935:2:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "6925:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 445,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 388,
                                      "src": "6942:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6925:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 447,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6925:22:1"
                                }
                              ]
                            }
                          ]
                        },
                        "id": 450,
                        "nodeType": "IfStatement",
                        "src": "6547:425:1",
                        "trueBody": {
                          "id": 441,
                          "nodeType": "Block",
                          "src": "6569:191:1",
                          "statements": [
                            {
                              "id": 440,
                              "nodeType": "UncheckedBlock",
                              "src": "6583:167:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 438,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 436,
                                      "name": "_totalSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 167,
                                      "src": "6714:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 437,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 388,
                                      "src": "6730:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6714:21:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 439,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6714:21:1"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 452,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 384,
                              "src": "6996:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 453,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 386,
                              "src": "7002:2:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 454,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 388,
                              "src": "7006:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 451,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 663,
                            "src": "6987:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6987:25:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 456,
                        "nodeType": "EmitStatement",
                        "src": "6982:30:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 382,
                    "nodeType": "StructuredDocumentation",
                    "src": "5603:304:1",
                    "text": " @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."
                  },
                  "id": 458,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_update",
                  "nameLocation": "5921:7:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 384,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "5937:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 458,
                        "src": "5929:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 383,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5929:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 386,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "5951:2:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 458,
                        "src": "5943:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 385,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5943:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 388,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5963:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 458,
                        "src": "5955:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5955:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5928:41:1"
                  },
                  "returnParameters": {
                    "id": 390,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5987:0:1"
                  },
                  "scope": 651,
                  "src": "5912:1107:1",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 490,
                    "nodeType": "Block",
                    "src": "7418:152:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 466,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 461,
                            "src": "7432:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7451:1:1",
                                "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": 468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7443:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 467,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7443:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7443:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7432:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 480,
                        "nodeType": "IfStatement",
                        "src": "7428:91:1",
                        "trueBody": {
                          "id": 479,
                          "nodeType": "Block",
                          "src": "7455:64:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 475,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7505:1:1",
                                        "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": 474,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7497:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 473,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7497:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 476,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7497:10:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 472,
                                  "name": "ERC20InvalidReceiver",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21,
                                  "src": "7476:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7476:32:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 478,
                              "nodeType": "RevertStatement",
                              "src": "7469:39:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7544:1:1",
                                  "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": 483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7536:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 482,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7536:7:1",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7536:10:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 486,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 461,
                              "src": "7548:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 487,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 463,
                              "src": "7557:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 481,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 458,
                            "src": "7528:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7528:35:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 489,
                        "nodeType": "ExpressionStatement",
                        "src": "7528:35:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 459,
                    "nodeType": "StructuredDocumentation",
                    "src": "7025:332:1",
                    "text": " @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."
                  },
                  "id": 491,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "7371:5:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 461,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "7385:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 491,
                        "src": "7377:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 460,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7377:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 463,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "7402:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 491,
                        "src": "7394:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 462,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7394:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7376:32:1"
                  },
                  "returnParameters": {
                    "id": 465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7418:0:1"
                  },
                  "scope": 651,
                  "src": "7362:208:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 523,
                    "nodeType": "Block",
                    "src": "7944:150:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 499,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 494,
                            "src": "7958:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7977:1:1",
                                "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": 501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7969:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 500,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7969:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7969:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7958:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 513,
                        "nodeType": "IfStatement",
                        "src": "7954:89:1",
                        "trueBody": {
                          "id": 512,
                          "nodeType": "Block",
                          "src": "7981:62:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 508,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8029:1:1",
                                        "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": 507,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8021:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 506,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8021:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 509,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8021:10:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 505,
                                  "name": "ERC20InvalidSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16,
                                  "src": "8002:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8002:30:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 511,
                              "nodeType": "RevertStatement",
                              "src": "7995:37:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 515,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "8060:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8077:1:1",
                                  "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": 517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8069:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 516,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8069:7:1",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8069:10:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 520,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 496,
                              "src": "8081:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 514,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 458,
                            "src": "8052:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8052:35:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 522,
                        "nodeType": "ExpressionStatement",
                        "src": "8052:35:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 492,
                    "nodeType": "StructuredDocumentation",
                    "src": "7576:307:1",
                    "text": " @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"
                  },
                  "id": 524,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "7897:5:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 494,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "7911:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 524,
                        "src": "7903:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 493,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7903:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 496,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "7928:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 524,
                        "src": "7920:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 495,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7920:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7902:32:1"
                  },
                  "returnParameters": {
                    "id": 498,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7944:0:1"
                  },
                  "scope": 651,
                  "src": "7888:206:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 541,
                    "nodeType": "Block",
                    "src": "8704:54:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 535,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 527,
                              "src": "8723:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 536,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 529,
                              "src": "8730:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 537,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 531,
                              "src": "8739:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8746:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 534,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              542,
                              602
                            ],
                            "referencedDeclaration": 602,
                            "src": "8714:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,uint256,bool)"
                            }
                          },
                          "id": 539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8714:37:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 540,
                        "nodeType": "ExpressionStatement",
                        "src": "8714:37:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 525,
                    "nodeType": "StructuredDocumentation",
                    "src": "8100:525:1",
                    "text": " @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."
                  },
                  "id": 542,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nameLocation": "8639:8:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 532,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 527,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "8656:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 542,
                        "src": "8648:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 526,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8648:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 529,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "8671:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 542,
                        "src": "8663:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 528,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8663:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 531,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "8688:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 542,
                        "src": "8680:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 530,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8680:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8647:47:1"
                  },
                  "returnParameters": {
                    "id": 533,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8704:0:1"
                  },
                  "scope": 651,
                  "src": "8630:128:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 601,
                    "nodeType": "Block",
                    "src": "9705:334:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 554,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 545,
                            "src": "9719:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9736:1:1",
                                "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": 556,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9728:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 555,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9728:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9728:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9719:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 568,
                        "nodeType": "IfStatement",
                        "src": "9715:89:1",
                        "trueBody": {
                          "id": 567,
                          "nodeType": "Block",
                          "src": "9740:64:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 563,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9790:1:1",
                                        "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": 562,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9782:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 561,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9782:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9782:10:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 560,
                                  "name": "ERC20InvalidApprover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35,
                                  "src": "9761:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9761:32:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 566,
                              "nodeType": "RevertStatement",
                              "src": "9754:39:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 569,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 547,
                            "src": "9817:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9836:1:1",
                                "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": 571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9828:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 570,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9828:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9828:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9817:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 583,
                        "nodeType": "IfStatement",
                        "src": "9813:90:1",
                        "trueBody": {
                          "id": 582,
                          "nodeType": "Block",
                          "src": "9840:63:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 578,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9889:1:1",
                                        "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": 577,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9881:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 576,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9881:7:1",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 579,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9881:10:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 575,
                                  "name": "ERC20InvalidSpender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 40,
                                  "src": "9861:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9861:31:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 581,
                              "nodeType": "RevertStatement",
                              "src": "9854:38:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 584,
                                "name": "_allowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 165,
                                "src": "9912:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 587,
                              "indexExpression": {
                                "id": 585,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 545,
                                "src": "9924:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9912:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 588,
                            "indexExpression": {
                              "id": 586,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 547,
                              "src": "9931:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9912:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 589,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 549,
                            "src": "9942:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9912:35:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 591,
                        "nodeType": "ExpressionStatement",
                        "src": "9912:35:1"
                      },
                      {
                        "condition": {
                          "id": 592,
                          "name": "emitEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 551,
                          "src": "9961:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 600,
                        "nodeType": "IfStatement",
                        "src": "9957:76:1",
                        "trueBody": {
                          "id": 599,
                          "nodeType": "Block",
                          "src": "9972:61:1",
                          "statements": [
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 594,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 545,
                                    "src": "10000:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 595,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 547,
                                    "src": "10007:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 596,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 549,
                                    "src": "10016:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 593,
                                  "name": "Approval",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 672,
                                  "src": "9991:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,uint256)"
                                  }
                                },
                                "id": 597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9991:31:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 598,
                              "nodeType": "EmitStatement",
                              "src": "9986:36:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 543,
                    "nodeType": "StructuredDocumentation",
                    "src": "8764:838:1",
                    "text": " @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."
                  },
                  "id": 602,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nameLocation": "9616:8:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 552,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 545,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "9633:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 602,
                        "src": "9625:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 544,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9625:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 547,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "9648:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 602,
                        "src": "9640:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 546,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9640:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 549,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9665:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 602,
                        "src": "9657:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 548,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9657:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 551,
                        "mutability": "mutable",
                        "name": "emitEvent",
                        "nameLocation": "9677:9:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 602,
                        "src": "9672:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 550,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9672:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9624:63:1"
                  },
                  "returnParameters": {
                    "id": 553,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9705:0:1"
                  },
                  "scope": 651,
                  "src": "9607:432:1",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 649,
                    "nodeType": "Block",
                    "src": "10410:387:1",
                    "statements": [
                      {
                        "assignments": [
                          613
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 613,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "10428:16:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 649,
                            "src": "10420:24:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 612,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10420:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 618,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 615,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 605,
                              "src": "10457:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 616,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 607,
                              "src": "10464:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 614,
                            "name": "allowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 278,
                            "src": "10447:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view returns (uint256)"
                            }
                          },
                          "id": 617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10447:25:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10420:52:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 619,
                            "name": "currentAllowance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 613,
                            "src": "10486:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 622,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10510:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 621,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10510:7:1",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 620,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "10505:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10505:13:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "10519:3:1",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "10505:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10486:36:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 648,
                        "nodeType": "IfStatement",
                        "src": "10482:309:1",
                        "trueBody": {
                          "id": 647,
                          "nodeType": "Block",
                          "src": "10524:267:1",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 626,
                                  "name": "currentAllowance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 613,
                                  "src": "10542:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 627,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 609,
                                  "src": "10561:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10542:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 636,
                              "nodeType": "IfStatement",
                              "src": "10538:130:1",
                              "trueBody": {
                                "id": 635,
                                "nodeType": "Block",
                                "src": "10568:100:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 630,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 607,
                                          "src": "10620:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 631,
                                          "name": "currentAllowance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 613,
                                          "src": "10629:16:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 632,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 609,
                                          "src": "10647:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 629,
                                        "name": "ERC20InsufficientAllowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 30,
                                        "src": "10593:26:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256,uint256) pure"
                                        }
                                      },
                                      "id": 633,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10593:60:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 634,
                                    "nodeType": "RevertStatement",
                                    "src": "10586:67:1"
                                  }
                                ]
                              }
                            },
                            {
                              "id": 646,
                              "nodeType": "UncheckedBlock",
                              "src": "10681:100:1",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 638,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 605,
                                        "src": "10718:5:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 639,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 607,
                                        "src": "10725:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 642,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 640,
                                          "name": "currentAllowance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 613,
                                          "src": "10734:16:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 641,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 609,
                                          "src": "10753:5:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "10734:24:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "hexValue": "66616c7365",
                                        "id": 643,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10760:5:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 637,
                                      "name": "_approve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        542,
                                        602
                                      ],
                                      "referencedDeclaration": 602,
                                      "src": "10709:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                                        "typeString": "function (address,address,uint256,bool)"
                                      }
                                    },
                                    "id": 644,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10709:57:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 645,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10709:57:1"
                                }
                              ]
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 603,
                    "nodeType": "StructuredDocumentation",
                    "src": "10045:271:1",
                    "text": " @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."
                  },
                  "id": 650,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_spendAllowance",
                  "nameLocation": "10330:15:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 605,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "10354:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 650,
                        "src": "10346:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 604,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10346:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 607,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "10369:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 650,
                        "src": "10361:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 606,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10361:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 609,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "10386:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 650,
                        "src": "10378:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10378:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10345:47:1"
                  },
                  "returnParameters": {
                    "id": 611,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10410:0:1"
                  },
                  "scope": 651,
                  "src": "10321:476:1",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 652,
              "src": "1106:9693:1",
              "usedErrors": [
                11,
                16,
                21,
                30,
                35,
                40
              ],
              "usedEvents": [
                663,
                672
              ]
            }
          ],
          "src": "105:10695:1"
        },
        "id": 1
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              729
            ]
          },
          "id": 730,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 653,
              "literals": [
                "solidity",
                ">=",
                "0.4",
                ".16"
              ],
              "nodeType": "PragmaDirective",
              "src": "106:25:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC20",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 654,
                "nodeType": "StructuredDocumentation",
                "src": "133:71:2",
                "text": " @dev Interface of the ERC-20 standard as defined in the ERC."
              },
              "fullyImplemented": false,
              "id": 729,
              "linearizedBaseContracts": [
                729
              ],
              "name": "IERC20",
              "nameLocation": "215:6:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 655,
                    "nodeType": "StructuredDocumentation",
                    "src": "228:158:2",
                    "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": 663,
                  "name": "Transfer",
                  "nameLocation": "397:8:2",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 662,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 657,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "422:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 663,
                        "src": "406:20:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 656,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "406:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 659,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "444:2:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 663,
                        "src": "428:18:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 658,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "428:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 661,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "456:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 663,
                        "src": "448:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 660,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "448:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "405:57:2"
                  },
                  "src": "391:72:2"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 664,
                    "nodeType": "StructuredDocumentation",
                    "src": "469:148:2",
                    "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": 672,
                  "name": "Approval",
                  "nameLocation": "628:8:2",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 671,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 666,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "653:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 672,
                        "src": "637:21:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 665,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "637:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 668,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "676:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 672,
                        "src": "660:23:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 667,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "660:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 670,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "693:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 672,
                        "src": "685:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 669,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "685:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "636:63:2"
                  },
                  "src": "622:78:2"
                },
                {
                  "documentation": {
                    "id": 673,
                    "nodeType": "StructuredDocumentation",
                    "src": "706:65:2",
                    "text": " @dev Returns the value of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 678,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "785:11:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 674,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "796:2:2"
                  },
                  "returnParameters": {
                    "id": 677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 676,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 678,
                        "src": "822:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 675,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "822:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "821:9:2"
                  },
                  "scope": 729,
                  "src": "776:55:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 679,
                    "nodeType": "StructuredDocumentation",
                    "src": "837:71:2",
                    "text": " @dev Returns the value of tokens owned by `account`."
                  },
                  "functionSelector": "70a08231",
                  "id": 686,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "922:9:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 682,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 681,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "940:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 686,
                        "src": "932:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 680,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "932:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "931:17:2"
                  },
                  "returnParameters": {
                    "id": 685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 684,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 686,
                        "src": "972:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 683,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "972:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "971:9:2"
                  },
                  "scope": 729,
                  "src": "913:68:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 687,
                    "nodeType": "StructuredDocumentation",
                    "src": "987:213:2",
                    "text": " @dev Moves a `value` amount of 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": 696,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "1214:8:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 692,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 689,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1231:2:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 696,
                        "src": "1223:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 688,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1223:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 691,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1243:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 696,
                        "src": "1235:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 690,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1235:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1222:27:2"
                  },
                  "returnParameters": {
                    "id": 695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 694,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 696,
                        "src": "1268:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 693,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1268:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1267:6:2"
                  },
                  "scope": 729,
                  "src": "1205:69:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 697,
                    "nodeType": "StructuredDocumentation",
                    "src": "1280:264:2",
                    "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": 706,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "1558:9:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 702,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 699,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1576:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 706,
                        "src": "1568:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 698,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1568:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 701,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1591:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 706,
                        "src": "1583:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 700,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1583:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1567:32:2"
                  },
                  "returnParameters": {
                    "id": 705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 704,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 706,
                        "src": "1623:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 703,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1623:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1622:9:2"
                  },
                  "scope": 729,
                  "src": "1549:83:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 707,
                    "nodeType": "StructuredDocumentation",
                    "src": "1638:667:2",
                    "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n 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": 716,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "2319:7:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 709,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2335:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 716,
                        "src": "2327:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 708,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2327:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 711,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2352:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 716,
                        "src": "2344:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 710,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2344:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2326:32:2"
                  },
                  "returnParameters": {
                    "id": 715,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 714,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 716,
                        "src": "2377:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 713,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2377:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2376:6:2"
                  },
                  "scope": 729,
                  "src": "2310:73:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 717,
                    "nodeType": "StructuredDocumentation",
                    "src": "2389:297:2",
                    "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 728,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "2700:12:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 724,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 719,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2721:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 728,
                        "src": "2713:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 718,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2713:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 721,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2735:2:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 728,
                        "src": "2727:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 720,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2727:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 723,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2747:5:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 728,
                        "src": "2739:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 722,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2739:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2712:41:2"
                  },
                  "returnParameters": {
                    "id": 727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 726,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 728,
                        "src": "2772:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 725,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2772:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2771:6:2"
                  },
                  "scope": 729,
                  "src": "2691:87:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 730,
              "src": "205:2575:2",
              "usedErrors": [],
              "usedEvents": [
                663,
                672
              ]
            }
          ],
          "src": "106:2675:2"
        },
        "id": 2
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
          "exportedSymbols": {
            "IERC20": [
              729
            ],
            "IERC20Metadata": [
              755
            ]
          },
          "id": 756,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 731,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "125:24:3"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "../IERC20.sol",
              "id": 733,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 756,
              "sourceUnit": 730,
              "src": "151:37:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 732,
                    "name": "IERC20",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 729,
                    "src": "159:6:3",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 735,
                    "name": "IERC20",
                    "nameLocations": [
                      "306:6:3"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 729,
                    "src": "306:6:3"
                  },
                  "id": 736,
                  "nodeType": "InheritanceSpecifier",
                  "src": "306:6:3"
                }
              ],
              "canonicalName": "IERC20Metadata",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 734,
                "nodeType": "StructuredDocumentation",
                "src": "190:87:3",
                "text": " @dev Interface for the optional metadata functions from the ERC-20 standard."
              },
              "fullyImplemented": false,
              "id": 755,
              "linearizedBaseContracts": [
                755,
                729
              ],
              "name": "IERC20Metadata",
              "nameLocation": "288:14:3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 737,
                    "nodeType": "StructuredDocumentation",
                    "src": "319:54:3",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 742,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "387:4:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 738,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "391:2:3"
                  },
                  "returnParameters": {
                    "id": 741,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 740,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 742,
                        "src": "417:13:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 739,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "417:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "416:15:3"
                  },
                  "scope": 755,
                  "src": "378:54:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 743,
                    "nodeType": "StructuredDocumentation",
                    "src": "438:56:3",
                    "text": " @dev Returns the symbol of the token."
                  },
                  "functionSelector": "95d89b41",
                  "id": 748,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "508:6:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 744,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "514:2:3"
                  },
                  "returnParameters": {
                    "id": 747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 746,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 748,
                        "src": "540:13:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 745,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "540:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "539:15:3"
                  },
                  "scope": 755,
                  "src": "499:56:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 749,
                    "nodeType": "StructuredDocumentation",
                    "src": "561:65:3",
                    "text": " @dev Returns the decimals places of the token."
                  },
                  "functionSelector": "313ce567",
                  "id": 754,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "640:8:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 750,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "648:2:3"
                  },
                  "returnParameters": {
                    "id": 753,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 752,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 754,
                        "src": "674:5:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 751,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "673:7:3"
                  },
                  "scope": 755,
                  "src": "631:50:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 756,
              "src": "278:405:3",
              "usedErrors": [],
              "usedEvents": [
                663,
                672
              ]
            }
          ],
          "src": "125:559:3"
        },
        "id": 3
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
          "exportedSymbols": {
            "Context": [
              785
            ]
          },
          "id": 786,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 757,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:24:4"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "canonicalName": "Context",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 758,
                "nodeType": "StructuredDocumentation",
                "src": "127:496:4",
                "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": 785,
              "linearizedBaseContracts": [
                785
              ],
              "name": "Context",
              "nameLocation": "642:7:4",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 766,
                    "nodeType": "Block",
                    "src": "718:34:4",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 763,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "735:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "739:6:4",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "735:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 762,
                        "id": 765,
                        "nodeType": "Return",
                        "src": "728:17:4"
                      }
                    ]
                  },
                  "id": 767,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "665:10:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 759,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "675:2:4"
                  },
                  "returnParameters": {
                    "id": 762,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 761,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 767,
                        "src": "709:7:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 760,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "709:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "708:9:4"
                  },
                  "scope": 785,
                  "src": "656:96:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 775,
                    "nodeType": "Block",
                    "src": "825:32:4",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 772,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "842:3:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "846:4:4",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "842:8:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 771,
                        "id": 774,
                        "nodeType": "Return",
                        "src": "835:15:4"
                      }
                    ]
                  },
                  "id": 776,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "767:8:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 768,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "775:2:4"
                  },
                  "returnParameters": {
                    "id": 771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 770,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 776,
                        "src": "809:14:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 769,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "809:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "808:16:4"
                  },
                  "scope": 785,
                  "src": "758:99:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 783,
                    "nodeType": "Block",
                    "src": "935:25:4",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "952:1:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 780,
                        "id": 782,
                        "nodeType": "Return",
                        "src": "945:8:4"
                      }
                    ]
                  },
                  "id": 784,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_contextSuffixLength",
                  "nameLocation": "872:20:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 777,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "892:2:4"
                  },
                  "returnParameters": {
                    "id": 780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 779,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 784,
                        "src": "926:7:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 778,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "926:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "925:9:4"
                  },
                  "scope": 785,
                  "src": "863:97:4",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 786,
              "src": "624:338:4",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "101:862:4"
        },
        "id": 4
      },
      "contracts/EdgeSwarm.sol": {
        "ast": {
          "absolutePath": "contracts/EdgeSwarm.sol",
          "exportedSymbols": {
            "Context": [
              785
            ],
            "ERC20": [
              651
            ],
            "EdgeSwarm": [
              891
            ],
            "IERC20": [
              729
            ],
            "IERC20Errors": [
              41
            ],
            "IERC20Metadata": [
              755
            ]
          },
          "id": 892,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 787,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:5"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "id": 788,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 892,
              "sourceUnit": 652,
              "src": "58:55:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 789,
                    "name": "ERC20",
                    "nameLocations": [
                      "137:5:5"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 651,
                    "src": "137:5:5"
                  },
                  "id": 790,
                  "nodeType": "InheritanceSpecifier",
                  "src": "137:5:5"
                }
              ],
              "canonicalName": "EdgeSwarm",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 891,
              "linearizedBaseContracts": [
                891,
                651,
                41,
                755,
                729,
                785
              ],
              "name": "EdgeSwarm",
              "nameLocation": "124:9:5",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "8da5cb5b",
                  "id": 792,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "164:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 891,
                  "src": "149:20:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 791,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "149:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "bd4bbeb9",
                  "id": 796,
                  "mutability": "mutable",
                  "name": "ubiEarned",
                  "nameLocation": "370:9:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 891,
                  "src": "335:44:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 795,
                    "keyName": "",
                    "keyNameLocation": "-1:-1:-1",
                    "keyType": {
                      "id": 793,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "343:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "335:27:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueName": "",
                    "valueNameLocation": "-1:-1:-1",
                    "valueType": {
                      "id": 794,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "354:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "EdgeSwarm.WorkTask",
                  "id": 805,
                  "members": [
                    {
                      "constant": false,
                      "id": 798,
                      "mutability": "mutable",
                      "name": "taskId",
                      "nameLocation": "420:6:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "412:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 797,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "412:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 800,
                      "mutability": "mutable",
                      "name": "predictionScore",
                      "nameLocation": "443:15:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "436:22:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 799,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "436:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 802,
                      "mutability": "mutable",
                      "name": "worker",
                      "nameLocation": "524:6:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "516:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 801,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "516:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 804,
                      "mutability": "mutable",
                      "name": "timestamp",
                      "nameLocation": "548:9:5",
                      "nodeType": "VariableDeclaration",
                      "scope": 805,
                      "src": "540:17:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 803,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "540:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "WorkTask",
                  "nameLocation": "393:8:5",
                  "nodeType": "StructDefinition",
                  "scope": 891,
                  "src": "386:178:5",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "10a7fd7b",
                  "id": 810,
                  "mutability": "mutable",
                  "name": "ledger",
                  "nameLocation": "663:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 891,
                  "src": "627:42:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_WorkTask_$805_storage_$",
                    "typeString": "mapping(uint256 => struct EdgeSwarm.WorkTask)"
                  },
                  "typeName": {
                    "id": 809,
                    "keyName": "",
                    "keyNameLocation": "-1:-1:-1",
                    "keyType": {
                      "id": 806,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "635:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "627:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_WorkTask_$805_storage_$",
                      "typeString": "mapping(uint256 => struct EdgeSwarm.WorkTask)"
                    },
                    "valueName": "",
                    "valueNameLocation": "-1:-1:-1",
                    "valueType": {
                      "id": 808,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 807,
                        "name": "WorkTask",
                        "nameLocations": [
                          "646:8:5"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 805,
                        "src": "646:8:5"
                      },
                      "referencedDeclaration": 805,
                      "src": "646:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_WorkTask_$805_storage_ptr",
                        "typeString": "struct EdgeSwarm.WorkTask"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "eventSelector": "e46984a7cb6a34125cc7ad2328662abe47b36cf2cefd04f2bdb4d3a74dfd484e",
                  "id": 818,
                  "name": "WorkVerified",
                  "nameLocation": "682:12:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 812,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "worker",
                        "nameLocation": "711:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 818,
                        "src": "695:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "695:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 814,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "taskId",
                        "nameLocation": "727:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 818,
                        "src": "719:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 813,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "719:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 816,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "score",
                        "nameLocation": "742:5:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 818,
                        "src": "735:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 815,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "735:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "694:54:5"
                  },
                  "src": "676:73:5"
                },
                {
                  "body": {
                    "id": 830,
                    "nodeType": "Block",
                    "src": "797:35:5",
                    "statements": [
                      {
                        "expression": {
                          "id": 828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 825,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 792,
                            "src": "807:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 826,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "815:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "819:6:5",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "815:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "807:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 829,
                        "nodeType": "ExpressionStatement",
                        "src": "807:18:5"
                      }
                    ]
                  },
                  "id": 831,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "537761726d20546f6b656e",
                          "id": 821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "775:13:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_d4437a7c2aa46c7c74cfaf0a03004db0751b3ed5788ba5652fedb9545b672066",
                            "typeString": "literal_string \"Swarm Token\""
                          },
                          "value": "Swarm Token"
                        },
                        {
                          "hexValue": "53574d",
                          "id": 822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "790:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_cefcf55a0240224bfcc179269ab954167f1cf382d275c5cf0637923f69df71ba",
                            "typeString": "literal_string \"SWM\""
                          },
                          "value": "SWM"
                        }
                      ],
                      "id": 823,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 820,
                        "name": "ERC20",
                        "nameLocations": [
                          "769:5:5"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 651,
                        "src": "769:5:5"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "769:27:5"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 819,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "766:2:5"
                  },
                  "returnParameters": {
                    "id": 824,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "797:0:5"
                  },
                  "scope": 891,
                  "src": "755:77:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 889,
                    "nodeType": "Block",
                    "src": "1043:623:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 840,
                                    "name": "ledger",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 810,
                                    "src": "1061:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_WorkTask_$805_storage_$",
                                      "typeString": "mapping(uint256 => struct EdgeSwarm.WorkTask storage ref)"
                                    }
                                  },
                                  "id": 842,
                                  "indexExpression": {
                                    "id": 841,
                                    "name": "_taskId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 834,
                                    "src": "1068:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1061:15:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_WorkTask_$805_storage",
                                    "typeString": "struct EdgeSwarm.WorkTask storage ref"
                                  }
                                },
                                "id": 843,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1077:6:5",
                                "memberName": "worker",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 802,
                                "src": "1061:22:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 846,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1095:1:5",
                                    "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": 845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1087:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 844,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1087:7:5",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1087:10:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1061:36:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5461736b20616c726561647920636f6d706c65746564",
                              "id": 849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1099:24:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3",
                                "typeString": "literal_string \"Task already completed\""
                              },
                              "value": "Task already completed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3",
                                "typeString": "literal_string \"Task already completed\""
                              }
                            ],
                            "id": 839,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1053:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1053:71:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 851,
                        "nodeType": "ExpressionStatement",
                        "src": "1053:71:5"
                      },
                      {
                        "expression": {
                          "id": 863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 852,
                              "name": "ledger",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 810,
                              "src": "1186:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_WorkTask_$805_storage_$",
                                "typeString": "mapping(uint256 => struct EdgeSwarm.WorkTask storage ref)"
                              }
                            },
                            "id": 854,
                            "indexExpression": {
                              "id": 853,
                              "name": "_taskId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 834,
                              "src": "1193:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1186:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_WorkTask_$805_storage",
                              "typeString": "struct EdgeSwarm.WorkTask storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 856,
                                "name": "_taskId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 834,
                                "src": "1235:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 857,
                                "name": "_score",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 836,
                                "src": "1273:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 858,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1301:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1305:6:5",
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "1301:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "expression": {
                                  "id": 860,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "1336:5:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1342:9:5",
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "1336:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 855,
                              "name": "WorkTask",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 805,
                              "src": "1204:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_WorkTask_$805_storage_ptr_$",
                                "typeString": "type(struct EdgeSwarm.WorkTask storage pointer)"
                              }
                            },
                            "id": 862,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "nameLocations": [
                              "1227:6:5",
                              "1256:15:5",
                              "1293:6:5",
                              "1325:9:5"
                            ],
                            "names": [
                              "taskId",
                              "predictionScore",
                              "worker",
                              "timestamp"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "1204:158:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_WorkTask_$805_memory_ptr",
                              "typeString": "struct EdgeSwarm.WorkTask memory"
                            }
                          },
                          "src": "1186:176:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_WorkTask_$805_storage",
                            "typeString": "struct EdgeSwarm.WorkTask storage ref"
                          }
                        },
                        "id": 864,
                        "nodeType": "ExpressionStatement",
                        "src": "1186:176:5"
                      },
                      {
                        "expression": {
                          "id": 870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 865,
                              "name": "ubiEarned",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 796,
                              "src": "1466:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 868,
                            "indexExpression": {
                              "expression": {
                                "id": 866,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1476:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1480:6:5",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1476:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1466:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 869,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1491:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1466:26:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 871,
                        "nodeType": "ExpressionStatement",
                        "src": "1466:26:5"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 873,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1579:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1583:6:5",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1579:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              },
                              "id": 879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "31",
                                "id": 875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1591:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                  "typeString": "int_const 1000000000000000000"
                                },
                                "id": 878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1595:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3138",
                                  "id": 877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1599:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_18_by_1",
                                    "typeString": "int_const 18"
                                  },
                                  "value": "18"
                                },
                                "src": "1595:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                  "typeString": "int_const 1000000000000000000"
                                }
                              },
                              "src": "1591:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                "typeString": "int_const 1000000000000000000"
                              }
                            ],
                            "id": 872,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 491,
                            "src": "1573:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1573:29:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 881,
                        "nodeType": "ExpressionStatement",
                        "src": "1573:29:5"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 883,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1631:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1635:6:5",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1631:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 885,
                              "name": "_taskId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 834,
                              "src": "1643:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 886,
                              "name": "_score",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 836,
                              "src": "1652:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 882,
                            "name": "WorkVerified",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 818,
                            "src": "1618:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_int256_$returns$__$",
                              "typeString": "function (address,uint256,int256)"
                            }
                          },
                          "id": 887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1618:41:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 888,
                        "nodeType": "EmitStatement",
                        "src": "1613:46:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 832,
                    "nodeType": "StructuredDocumentation",
                    "src": "838:141:5",
                    "text": " @dev This is the function your Pixel 10 calls.\n It stores the data, updates the ubiEarned counter, and mints tokens."
                  },
                  "functionSelector": "3e514bac",
                  "id": 890,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "submitWork",
                  "nameLocation": "993:10:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 834,
                        "mutability": "mutable",
                        "name": "_taskId",
                        "nameLocation": "1012:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 890,
                        "src": "1004:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 833,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1004:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 836,
                        "mutability": "mutable",
                        "name": "_score",
                        "nameLocation": "1028:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 890,
                        "src": "1021:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 835,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1021:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1003:32:5"
                  },
                  "returnParameters": {
                    "id": 838,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1043:0:5"
                  },
                  "scope": 891,
                  "src": "984:682:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 892,
              "src": "115:1553:5",
              "usedErrors": [
                11,
                16,
                21,
                30,
                35,
                40
              ],
              "usedEvents": [
                663,
                672,
                818
              ]
            }
          ],
          "src": "32:1637:5"
        },
        "id": 5
      }
    },
    "contracts": {
      "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
        "IERC1155Errors": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ERC1155InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC1155InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "idsLength",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "valuesLength",
                  "type": "uint256"
                }
              ],
              "name": "ERC1155InvalidArrayLength",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "ERC1155InvalidOperator",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC1155InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC1155InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "ERC1155MissingApprovalForAll",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}"
        },
        "IERC20Errors": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "allowance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientAllowance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSpender",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}"
        },
        "IERC721Errors": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "ERC721IncorrectOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ERC721InsufficientApproval",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidOperator",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC721InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "ERC721NonexistentToken",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "ERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "allowance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientAllowance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSpender",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "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",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "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.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "IERC20Metadata": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "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",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"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.24+commit.e11b9ed9\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}"
        }
      },
      "contracts/EdgeSwarm.sol": {
        "EdgeSwarm": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "allowance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientAllowance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "ERC20InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "approver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidApprover",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidReceiver",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSender",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "ERC20InvalidSpender",
              "type": "error"
            },
            {
              "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"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "worker",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "taskId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "int256",
                  "name": "score",
                  "type": "int256"
                }
              ],
              "name": "WorkVerified",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "ledger",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "taskId",
                  "type": "uint256"
                },
                {
                  "internalType": "int256",
                  "name": "predictionScore",
                  "type": "int256"
                },
                {
                  "internalType": "address",
                  "name": "worker",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "timestamp",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_taskId",
                  "type": "uint256"
                },
                {
                  "internalType": "int256",
                  "name": "_score",
                  "type": "int256"
                }
              ],
              "name": "submitWork",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "ubiEarned",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_188": {
                  "entryPoint": null,
                  "id": 188,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_831": {
                  "entryPoint": null,
                  "id": 831,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "array_dataslot_t_string_storage": {
                  "entryPoint": 393,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_length_t_string_memory_ptr": {
                  "entryPoint": 235,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clean_up_bytearray_end_slots_t_string_storage": {
                  "entryPoint": 714,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "cleanup_t_uint256": {
                  "entryPoint": 529,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "clear_storage_range_t_bytes1": {
                  "entryPoint": 675,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "convert_t_uint256_to_t_uint256": {
                  "entryPoint": 549,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
                  "entryPoint": 869,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "divide_by_32_ceil": {
                  "entryPoint": 414,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 340,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_used_part_and_set_length_of_short_byte_array": {
                  "entryPoint": 839,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "identity": {
                  "entryPoint": 539,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mask_bytes_dynamic": {
                  "entryPoint": 807,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x22": {
                  "entryPoint": 293,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 246,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "prepare_store_t_uint256": {
                  "entryPoint": 589,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "shift_left_dynamic": {
                  "entryPoint": 430,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "shift_right_unsigned_dynamic": {
                  "entryPoint": 794,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "storage_set_to_zero_t_uint256": {
                  "entryPoint": 647,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "update_byte_slice_dynamic32": {
                  "entryPoint": 443,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "update_storage_value_t_uint256_to_t_uint256": {
                  "entryPoint": 599,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "zero_value_for_split_t_uint256": {
                  "entryPoint": 642,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nativeSrc": "0:5231:6",
                    "nodeType": "YulBlock",
                    "src": "0:5231:6",
                    "statements": [
                      {
                        "body": {
                          "nativeSrc": "66:40:6",
                          "nodeType": "YulBlock",
                          "src": "66:40:6",
                          "statements": [
                            {
                              "nativeSrc": "77:22:6",
                              "nodeType": "YulAssignment",
                              "src": "77:22:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "93:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "93:5:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "87:5:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "87:5:6"
                                },
                                "nativeSrc": "87:12:6",
                                "nodeType": "YulFunctionCall",
                                "src": "87:12:6"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nativeSrc": "77:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "77:6:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_length_t_string_memory_ptr",
                        "nativeSrc": "7:99:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "49:5:6",
                            "nodeType": "YulTypedName",
                            "src": "49:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nativeSrc": "59:6:6",
                            "nodeType": "YulTypedName",
                            "src": "59:6:6",
                            "type": ""
                          }
                        ],
                        "src": "7:99:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "140:152:6",
                          "nodeType": "YulBlock",
                          "src": "140:152:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "157:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "157:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "160:77:6",
                                    "nodeType": "YulLiteral",
                                    "src": "160:77:6",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "150:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "150:6:6"
                                },
                                "nativeSrc": "150:88:6",
                                "nodeType": "YulFunctionCall",
                                "src": "150:88:6"
                              },
                              "nativeSrc": "150:88:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "150:88:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "254:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "254:1:6",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "257:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "257:4:6",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "247:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "247:6:6"
                                },
                                "nativeSrc": "247:15:6",
                                "nodeType": "YulFunctionCall",
                                "src": "247:15:6"
                              },
                              "nativeSrc": "247:15:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "247:15:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "278:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "278:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "281:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "281:4:6",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "271:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "271:6:6"
                                },
                                "nativeSrc": "271:15:6",
                                "nodeType": "YulFunctionCall",
                                "src": "271:15:6"
                              },
                              "nativeSrc": "271:15:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "271:15:6"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nativeSrc": "112:180:6",
                        "nodeType": "YulFunctionDefinition",
                        "src": "112:180:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "326:152:6",
                          "nodeType": "YulBlock",
                          "src": "326:152:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "343:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "343:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "346:77:6",
                                    "nodeType": "YulLiteral",
                                    "src": "346:77:6",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "336:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "336:6:6"
                                },
                                "nativeSrc": "336:88:6",
                                "nodeType": "YulFunctionCall",
                                "src": "336:88:6"
                              },
                              "nativeSrc": "336:88:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "336:88:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "440:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "440:1:6",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "443:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "443:4:6",
                                    "type": "",
                                    "value": "0x22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "433:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "433:6:6"
                                },
                                "nativeSrc": "433:15:6",
                                "nodeType": "YulFunctionCall",
                                "src": "433:15:6"
                              },
                              "nativeSrc": "433:15:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "433:15:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "464:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "464:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "467:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "467:4:6",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "457:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "457:6:6"
                                },
                                "nativeSrc": "457:15:6",
                                "nodeType": "YulFunctionCall",
                                "src": "457:15:6"
                              },
                              "nativeSrc": "457:15:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "457:15:6"
                            }
                          ]
                        },
                        "name": "panic_error_0x22",
                        "nativeSrc": "298:180:6",
                        "nodeType": "YulFunctionDefinition",
                        "src": "298:180:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "535:269:6",
                          "nodeType": "YulBlock",
                          "src": "535:269:6",
                          "statements": [
                            {
                              "nativeSrc": "545:22:6",
                              "nodeType": "YulAssignment",
                              "src": "545:22:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nativeSrc": "559:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "559:4:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "565:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "565:1:6",
                                    "type": "",
                                    "value": "2"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "555:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "555:3:6"
                                },
                                "nativeSrc": "555:12:6",
                                "nodeType": "YulFunctionCall",
                                "src": "555:12:6"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nativeSrc": "545:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "545:6:6"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "576:38:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "576:38:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nativeSrc": "606:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "606:4:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "612:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "612:1:6",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "602:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "602:3:6"
                                },
                                "nativeSrc": "602:12:6",
                                "nodeType": "YulFunctionCall",
                                "src": "602:12:6"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nativeSrc": "580:18:6",
                                  "nodeType": "YulTypedName",
                                  "src": "580:18:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nativeSrc": "653:51:6",
                                "nodeType": "YulBlock",
                                "src": "653:51:6",
                                "statements": [
                                  {
                                    "nativeSrc": "667:27:6",
                                    "nodeType": "YulAssignment",
                                    "src": "667:27:6",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nativeSrc": "681:6:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "681:6:6"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "689:4:6",
                                          "nodeType": "YulLiteral",
                                          "src": "689:4:6",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nativeSrc": "677:3:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "677:3:6"
                                      },
                                      "nativeSrc": "677:17:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "677:17:6"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "667:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "667:6:6"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nativeSrc": "633:18:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "633:18:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "626:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "626:6:6"
                                },
                                "nativeSrc": "626:26:6",
                                "nodeType": "YulFunctionCall",
                                "src": "626:26:6"
                              },
                              "nativeSrc": "623:81:6",
                              "nodeType": "YulIf",
                              "src": "623:81:6"
                            },
                            {
                              "body": {
                                "nativeSrc": "756:42:6",
                                "nodeType": "YulBlock",
                                "src": "756:42:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x22",
                                        "nativeSrc": "770:16:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "770:16:6"
                                      },
                                      "nativeSrc": "770:18:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "770:18:6"
                                    },
                                    "nativeSrc": "770:18:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "770:18:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nativeSrc": "720:18:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "720:18:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "743:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "743:6:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "751:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "751:2:6",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nativeSrc": "740:2:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "740:2:6"
                                    },
                                    "nativeSrc": "740:14:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "740:14:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nativeSrc": "717:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "717:2:6"
                                },
                                "nativeSrc": "717:38:6",
                                "nodeType": "YulFunctionCall",
                                "src": "717:38:6"
                              },
                              "nativeSrc": "714:84:6",
                              "nodeType": "YulIf",
                              "src": "714:84:6"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nativeSrc": "484:320:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nativeSrc": "519:4:6",
                            "nodeType": "YulTypedName",
                            "src": "519:4:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nativeSrc": "528:6:6",
                            "nodeType": "YulTypedName",
                            "src": "528:6:6",
                            "type": ""
                          }
                        ],
                        "src": "484:320:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "864:87:6",
                          "nodeType": "YulBlock",
                          "src": "864:87:6",
                          "statements": [
                            {
                              "nativeSrc": "874:11:6",
                              "nodeType": "YulAssignment",
                              "src": "874:11:6",
                              "value": {
                                "name": "ptr",
                                "nativeSrc": "882:3:6",
                                "nodeType": "YulIdentifier",
                                "src": "882:3:6"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nativeSrc": "874:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "874:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "902:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "902:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ptr",
                                    "nativeSrc": "905:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "905:3:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "895:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "895:6:6"
                                },
                                "nativeSrc": "895:14:6",
                                "nodeType": "YulFunctionCall",
                                "src": "895:14:6"
                              },
                              "nativeSrc": "895:14:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "895:14:6"
                            },
                            {
                              "nativeSrc": "918:26:6",
                              "nodeType": "YulAssignment",
                              "src": "918:26:6",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "936:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "936:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "939:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "939:4:6",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nativeSrc": "926:9:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "926:9:6"
                                },
                                "nativeSrc": "926:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "926:18:6"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nativeSrc": "918:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "918:4:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_dataslot_t_string_storage",
                        "nativeSrc": "810:141:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "ptr",
                            "nativeSrc": "851:3:6",
                            "nodeType": "YulTypedName",
                            "src": "851:3:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "data",
                            "nativeSrc": "859:4:6",
                            "nodeType": "YulTypedName",
                            "src": "859:4:6",
                            "type": ""
                          }
                        ],
                        "src": "810:141:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1001:49:6",
                          "nodeType": "YulBlock",
                          "src": "1001:49:6",
                          "statements": [
                            {
                              "nativeSrc": "1011:33:6",
                              "nodeType": "YulAssignment",
                              "src": "1011:33:6",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "1029:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "1029:5:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1036:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "1036:2:6",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "1025:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "1025:3:6"
                                    },
                                    "nativeSrc": "1025:14:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1025:14:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1041:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1041:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "1021:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1021:3:6"
                                },
                                "nativeSrc": "1021:23:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1021:23:6"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nativeSrc": "1011:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1011:6:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "divide_by_32_ceil",
                        "nativeSrc": "957:93:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "984:5:6",
                            "nodeType": "YulTypedName",
                            "src": "984:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "result",
                            "nativeSrc": "994:6:6",
                            "nodeType": "YulTypedName",
                            "src": "994:6:6",
                            "type": ""
                          }
                        ],
                        "src": "957:93:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1109:54:6",
                          "nodeType": "YulBlock",
                          "src": "1109:54:6",
                          "statements": [
                            {
                              "nativeSrc": "1119:37:6",
                              "nodeType": "YulAssignment",
                              "src": "1119:37:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "bits",
                                    "nativeSrc": "1144:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1144:4:6"
                                  },
                                  {
                                    "name": "value",
                                    "nativeSrc": "1150:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1150:5:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "1140:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1140:3:6"
                                },
                                "nativeSrc": "1140:16:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1140:16:6"
                              },
                              "variableNames": [
                                {
                                  "name": "newValue",
                                  "nativeSrc": "1119:8:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1119:8:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "shift_left_dynamic",
                        "nativeSrc": "1056:107:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "bits",
                            "nativeSrc": "1084:4:6",
                            "nodeType": "YulTypedName",
                            "src": "1084:4:6",
                            "type": ""
                          },
                          {
                            "name": "value",
                            "nativeSrc": "1090:5:6",
                            "nodeType": "YulTypedName",
                            "src": "1090:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "newValue",
                            "nativeSrc": "1100:8:6",
                            "nodeType": "YulTypedName",
                            "src": "1100:8:6",
                            "type": ""
                          }
                        ],
                        "src": "1056:107:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1245:317:6",
                          "nodeType": "YulBlock",
                          "src": "1245:317:6",
                          "statements": [
                            {
                              "nativeSrc": "1255:35:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "1255:35:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "shiftBytes",
                                    "nativeSrc": "1276:10:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1276:10:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1288:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1288:1:6",
                                    "type": "",
                                    "value": "8"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nativeSrc": "1272:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1272:3:6"
                                },
                                "nativeSrc": "1272:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1272:18:6"
                              },
                              "variables": [
                                {
                                  "name": "shiftBits",
                                  "nativeSrc": "1259:9:6",
                                  "nodeType": "YulTypedName",
                                  "src": "1259:9:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "1299:109:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "1299:109:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "shiftBits",
                                    "nativeSrc": "1330:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1330:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1341:66:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1341:66:6",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shift_left_dynamic",
                                  "nativeSrc": "1311:18:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1311:18:6"
                                },
                                "nativeSrc": "1311:97:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1311:97:6"
                              },
                              "variables": [
                                {
                                  "name": "mask",
                                  "nativeSrc": "1303:4:6",
                                  "nodeType": "YulTypedName",
                                  "src": "1303:4:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "1417:51:6",
                              "nodeType": "YulAssignment",
                              "src": "1417:51:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "shiftBits",
                                    "nativeSrc": "1448:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1448:9:6"
                                  },
                                  {
                                    "name": "toInsert",
                                    "nativeSrc": "1459:8:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1459:8:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "shift_left_dynamic",
                                  "nativeSrc": "1429:18:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1429:18:6"
                                },
                                "nativeSrc": "1429:39:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1429:39:6"
                              },
                              "variableNames": [
                                {
                                  "name": "toInsert",
                                  "nativeSrc": "1417:8:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1417:8:6"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "1477:30:6",
                              "nodeType": "YulAssignment",
                              "src": "1477:30:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "1490:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1490:5:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "mask",
                                        "nativeSrc": "1501:4:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "1501:4:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "1497:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "1497:3:6"
                                    },
                                    "nativeSrc": "1497:9:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1497:9:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "1486:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:3:6"
                                },
                                "nativeSrc": "1486:21:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1486:21:6"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nativeSrc": "1477:5:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1477:5:6"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "1516:40:6",
                              "nodeType": "YulAssignment",
                              "src": "1516:40:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "1529:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1529:5:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "toInsert",
                                        "nativeSrc": "1540:8:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "1540:8:6"
                                      },
                                      {
                                        "name": "mask",
                                        "nativeSrc": "1550:4:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "1550:4:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nativeSrc": "1536:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "1536:3:6"
                                    },
                                    "nativeSrc": "1536:19:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1536:19:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nativeSrc": "1526:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1526:2:6"
                                },
                                "nativeSrc": "1526:30:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1526:30:6"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nativeSrc": "1516:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1516:6:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "update_byte_slice_dynamic32",
                        "nativeSrc": "1169:393:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "1206:5:6",
                            "nodeType": "YulTypedName",
                            "src": "1206:5:6",
                            "type": ""
                          },
                          {
                            "name": "shiftBytes",
                            "nativeSrc": "1213:10:6",
                            "nodeType": "YulTypedName",
                            "src": "1213:10:6",
                            "type": ""
                          },
                          {
                            "name": "toInsert",
                            "nativeSrc": "1225:8:6",
                            "nodeType": "YulTypedName",
                            "src": "1225:8:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "result",
                            "nativeSrc": "1238:6:6",
                            "nodeType": "YulTypedName",
                            "src": "1238:6:6",
                            "type": ""
                          }
                        ],
                        "src": "1169:393:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1613:32:6",
                          "nodeType": "YulBlock",
                          "src": "1613:32:6",
                          "statements": [
                            {
                              "nativeSrc": "1623:16:6",
                              "nodeType": "YulAssignment",
                              "src": "1623:16:6",
                              "value": {
                                "name": "value",
                                "nativeSrc": "1634:5:6",
                                "nodeType": "YulIdentifier",
                                "src": "1634:5:6"
                              },
                              "variableNames": [
                                {
                                  "name": "cleaned",
                                  "nativeSrc": "1623:7:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1623:7:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "cleanup_t_uint256",
                        "nativeSrc": "1568:77:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "1595:5:6",
                            "nodeType": "YulTypedName",
                            "src": "1595:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "cleaned",
                            "nativeSrc": "1605:7:6",
                            "nodeType": "YulTypedName",
                            "src": "1605:7:6",
                            "type": ""
                          }
                        ],
                        "src": "1568:77:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1683:28:6",
                          "nodeType": "YulBlock",
                          "src": "1683:28:6",
                          "statements": [
                            {
                              "nativeSrc": "1693:12:6",
                              "nodeType": "YulAssignment",
                              "src": "1693:12:6",
                              "value": {
                                "name": "value",
                                "nativeSrc": "1700:5:6",
                                "nodeType": "YulIdentifier",
                                "src": "1700:5:6"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nativeSrc": "1693:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1693:3:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "identity",
                        "nativeSrc": "1651:60:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "1669:5:6",
                            "nodeType": "YulTypedName",
                            "src": "1669:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nativeSrc": "1679:3:6",
                            "nodeType": "YulTypedName",
                            "src": "1679:3:6",
                            "type": ""
                          }
                        ],
                        "src": "1651:60:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1777:82:6",
                          "nodeType": "YulBlock",
                          "src": "1777:82:6",
                          "statements": [
                            {
                              "nativeSrc": "1787:66:6",
                              "nodeType": "YulAssignment",
                              "src": "1787:66:6",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nativeSrc": "1845:5:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "1845:5:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "cleanup_t_uint256",
                                          "nativeSrc": "1827:17:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "1827:17:6"
                                        },
                                        "nativeSrc": "1827:24:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "1827:24:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "identity",
                                      "nativeSrc": "1818:8:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "1818:8:6"
                                    },
                                    "nativeSrc": "1818:34:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1818:34:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "cleanup_t_uint256",
                                  "nativeSrc": "1800:17:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1800:17:6"
                                },
                                "nativeSrc": "1800:53:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1800:53:6"
                              },
                              "variableNames": [
                                {
                                  "name": "converted",
                                  "nativeSrc": "1787:9:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1787:9:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "convert_t_uint256_to_t_uint256",
                        "nativeSrc": "1717:142:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "1757:5:6",
                            "nodeType": "YulTypedName",
                            "src": "1757:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "converted",
                            "nativeSrc": "1767:9:6",
                            "nodeType": "YulTypedName",
                            "src": "1767:9:6",
                            "type": ""
                          }
                        ],
                        "src": "1717:142:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1912:28:6",
                          "nodeType": "YulBlock",
                          "src": "1912:28:6",
                          "statements": [
                            {
                              "nativeSrc": "1922:12:6",
                              "nodeType": "YulAssignment",
                              "src": "1922:12:6",
                              "value": {
                                "name": "value",
                                "nativeSrc": "1929:5:6",
                                "nodeType": "YulIdentifier",
                                "src": "1929:5:6"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nativeSrc": "1922:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1922:3:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "prepare_store_t_uint256",
                        "nativeSrc": "1865:75:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "1898:5:6",
                            "nodeType": "YulTypedName",
                            "src": "1898:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nativeSrc": "1908:3:6",
                            "nodeType": "YulTypedName",
                            "src": "1908:3:6",
                            "type": ""
                          }
                        ],
                        "src": "1865:75:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2022:193:6",
                          "nodeType": "YulBlock",
                          "src": "2022:193:6",
                          "statements": [
                            {
                              "nativeSrc": "2032:63:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "2032:63:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_0",
                                    "nativeSrc": "2087:7:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2087:7:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "convert_t_uint256_to_t_uint256",
                                  "nativeSrc": "2056:30:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2056:30:6"
                                },
                                "nativeSrc": "2056:39:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2056:39:6"
                              },
                              "variables": [
                                {
                                  "name": "convertedValue_0",
                                  "nativeSrc": "2036:16:6",
                                  "nodeType": "YulTypedName",
                                  "src": "2036:16:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nativeSrc": "2111:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2111:4:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "slot",
                                            "nativeSrc": "2151:4:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "2151:4:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nativeSrc": "2145:5:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "2145:5:6"
                                        },
                                        "nativeSrc": "2145:11:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2145:11:6"
                                      },
                                      {
                                        "name": "offset",
                                        "nativeSrc": "2158:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2158:6:6"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "convertedValue_0",
                                            "nativeSrc": "2190:16:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "2190:16:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "prepare_store_t_uint256",
                                          "nativeSrc": "2166:23:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "2166:23:6"
                                        },
                                        "nativeSrc": "2166:41:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2166:41:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "update_byte_slice_dynamic32",
                                      "nativeSrc": "2117:27:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "2117:27:6"
                                    },
                                    "nativeSrc": "2117:91:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2117:91:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "sstore",
                                  "nativeSrc": "2104:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2104:6:6"
                                },
                                "nativeSrc": "2104:105:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2104:105:6"
                              },
                              "nativeSrc": "2104:105:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "2104:105:6"
                            }
                          ]
                        },
                        "name": "update_storage_value_t_uint256_to_t_uint256",
                        "nativeSrc": "1946:269:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nativeSrc": "1999:4:6",
                            "nodeType": "YulTypedName",
                            "src": "1999:4:6",
                            "type": ""
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "2005:6:6",
                            "nodeType": "YulTypedName",
                            "src": "2005:6:6",
                            "type": ""
                          },
                          {
                            "name": "value_0",
                            "nativeSrc": "2013:7:6",
                            "nodeType": "YulTypedName",
                            "src": "2013:7:6",
                            "type": ""
                          }
                        ],
                        "src": "1946:269:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2270:24:6",
                          "nodeType": "YulBlock",
                          "src": "2270:24:6",
                          "statements": [
                            {
                              "nativeSrc": "2280:8:6",
                              "nodeType": "YulAssignment",
                              "src": "2280:8:6",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "2287:1:6",
                                "nodeType": "YulLiteral",
                                "src": "2287:1:6",
                                "type": "",
                                "value": "0"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nativeSrc": "2280:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2280:3:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "zero_value_for_split_t_uint256",
                        "nativeSrc": "2221:73:6",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nativeSrc": "2266:3:6",
                            "nodeType": "YulTypedName",
                            "src": "2266:3:6",
                            "type": ""
                          }
                        ],
                        "src": "2221:73:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2353:136:6",
                          "nodeType": "YulBlock",
                          "src": "2353:136:6",
                          "statements": [
                            {
                              "nativeSrc": "2363:46:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "2363:46:6",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "zero_value_for_split_t_uint256",
                                  "nativeSrc": "2377:30:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2377:30:6"
                                },
                                "nativeSrc": "2377:32:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2377:32:6"
                              },
                              "variables": [
                                {
                                  "name": "zero_0",
                                  "nativeSrc": "2367:6:6",
                                  "nodeType": "YulTypedName",
                                  "src": "2367:6:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nativeSrc": "2462:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2462:4:6"
                                  },
                                  {
                                    "name": "offset",
                                    "nativeSrc": "2468:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2468:6:6"
                                  },
                                  {
                                    "name": "zero_0",
                                    "nativeSrc": "2476:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2476:6:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "update_storage_value_t_uint256_to_t_uint256",
                                  "nativeSrc": "2418:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2418:43:6"
                                },
                                "nativeSrc": "2418:65:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2418:65:6"
                              },
                              "nativeSrc": "2418:65:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "2418:65:6"
                            }
                          ]
                        },
                        "name": "storage_set_to_zero_t_uint256",
                        "nativeSrc": "2300:189:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nativeSrc": "2339:4:6",
                            "nodeType": "YulTypedName",
                            "src": "2339:4:6",
                            "type": ""
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "2345:6:6",
                            "nodeType": "YulTypedName",
                            "src": "2345:6:6",
                            "type": ""
                          }
                        ],
                        "src": "2300:189:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2545:136:6",
                          "nodeType": "YulBlock",
                          "src": "2545:136:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "2612:63:6",
                                "nodeType": "YulBlock",
                                "src": "2612:63:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nativeSrc": "2656:5:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "2656:5:6"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2663:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "2663:1:6",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "storage_set_to_zero_t_uint256",
                                        "nativeSrc": "2626:29:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2626:29:6"
                                      },
                                      "nativeSrc": "2626:39:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2626:39:6"
                                    },
                                    "nativeSrc": "2626:39:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2626:39:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "start",
                                    "nativeSrc": "2565:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2565:5:6"
                                  },
                                  {
                                    "name": "end",
                                    "nativeSrc": "2572:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2572:3:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nativeSrc": "2562:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2562:2:6"
                                },
                                "nativeSrc": "2562:14:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2562:14:6"
                              },
                              "nativeSrc": "2555:120:6",
                              "nodeType": "YulForLoop",
                              "post": {
                                "nativeSrc": "2577:26:6",
                                "nodeType": "YulBlock",
                                "src": "2577:26:6",
                                "statements": [
                                  {
                                    "nativeSrc": "2579:22:6",
                                    "nodeType": "YulAssignment",
                                    "src": "2579:22:6",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "start",
                                          "nativeSrc": "2592:5:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "2592:5:6"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2599:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "2599:1:6",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "2588:3:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2588:3:6"
                                      },
                                      "nativeSrc": "2588:13:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2588:13:6"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "start",
                                        "nativeSrc": "2579:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2579:5:6"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nativeSrc": "2559:2:6",
                                "nodeType": "YulBlock",
                                "src": "2559:2:6",
                                "statements": []
                              },
                              "src": "2555:120:6"
                            }
                          ]
                        },
                        "name": "clear_storage_range_t_bytes1",
                        "nativeSrc": "2495:186:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nativeSrc": "2533:5:6",
                            "nodeType": "YulTypedName",
                            "src": "2533:5:6",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nativeSrc": "2540:3:6",
                            "nodeType": "YulTypedName",
                            "src": "2540:3:6",
                            "type": ""
                          }
                        ],
                        "src": "2495:186:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2766:464:6",
                          "nodeType": "YulBlock",
                          "src": "2766:464:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "2792:431:6",
                                "nodeType": "YulBlock",
                                "src": "2792:431:6",
                                "statements": [
                                  {
                                    "nativeSrc": "2806:54:6",
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2806:54:6",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nativeSrc": "2854:5:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "2854:5:6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "array_dataslot_t_string_storage",
                                        "nativeSrc": "2822:31:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2822:31:6"
                                      },
                                      "nativeSrc": "2822:38:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2822:38:6"
                                    },
                                    "variables": [
                                      {
                                        "name": "dataArea",
                                        "nativeSrc": "2810:8:6",
                                        "nodeType": "YulTypedName",
                                        "src": "2810:8:6",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nativeSrc": "2873:63:6",
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2873:63:6",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dataArea",
                                          "nativeSrc": "2896:8:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "2896:8:6"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "startIndex",
                                              "nativeSrc": "2924:10:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "2924:10:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "divide_by_32_ceil",
                                            "nativeSrc": "2906:17:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "2906:17:6"
                                          },
                                          "nativeSrc": "2906:29:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "2906:29:6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "2892:3:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2892:3:6"
                                      },
                                      "nativeSrc": "2892:44:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2892:44:6"
                                    },
                                    "variables": [
                                      {
                                        "name": "deleteStart",
                                        "nativeSrc": "2877:11:6",
                                        "nodeType": "YulTypedName",
                                        "src": "2877:11:6",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nativeSrc": "3093:27:6",
                                      "nodeType": "YulBlock",
                                      "src": "3093:27:6",
                                      "statements": [
                                        {
                                          "nativeSrc": "3095:23:6",
                                          "nodeType": "YulAssignment",
                                          "src": "3095:23:6",
                                          "value": {
                                            "name": "dataArea",
                                            "nativeSrc": "3110:8:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "3110:8:6"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "deleteStart",
                                              "nativeSrc": "3095:11:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "3095:11:6"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "startIndex",
                                          "nativeSrc": "3077:10:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "3077:10:6"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "3089:2:6",
                                          "nodeType": "YulLiteral",
                                          "src": "3089:2:6",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nativeSrc": "3074:2:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3074:2:6"
                                      },
                                      "nativeSrc": "3074:18:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "3074:18:6"
                                    },
                                    "nativeSrc": "3071:49:6",
                                    "nodeType": "YulIf",
                                    "src": "3071:49:6"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "deleteStart",
                                          "nativeSrc": "3162:11:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "3162:11:6"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "dataArea",
                                              "nativeSrc": "3179:8:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "3179:8:6"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "len",
                                                  "nativeSrc": "3207:3:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3207:3:6"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "divide_by_32_ceil",
                                                "nativeSrc": "3189:17:6",
                                                "nodeType": "YulIdentifier",
                                                "src": "3189:17:6"
                                              },
                                              "nativeSrc": "3189:22:6",
                                              "nodeType": "YulFunctionCall",
                                              "src": "3189:22:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nativeSrc": "3175:3:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "3175:3:6"
                                          },
                                          "nativeSrc": "3175:37:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "3175:37:6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "clear_storage_range_t_bytes1",
                                        "nativeSrc": "3133:28:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3133:28:6"
                                      },
                                      "nativeSrc": "3133:80:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "3133:80:6"
                                    },
                                    "nativeSrc": "3133:80:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3133:80:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "len",
                                    "nativeSrc": "2783:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2783:3:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2788:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "2788:2:6",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "2780:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2780:2:6"
                                },
                                "nativeSrc": "2780:11:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2780:11:6"
                              },
                              "nativeSrc": "2777:446:6",
                              "nodeType": "YulIf",
                              "src": "2777:446:6"
                            }
                          ]
                        },
                        "name": "clean_up_bytearray_end_slots_t_string_storage",
                        "nativeSrc": "2687:543:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "array",
                            "nativeSrc": "2742:5:6",
                            "nodeType": "YulTypedName",
                            "src": "2742:5:6",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nativeSrc": "2749:3:6",
                            "nodeType": "YulTypedName",
                            "src": "2749:3:6",
                            "type": ""
                          },
                          {
                            "name": "startIndex",
                            "nativeSrc": "2754:10:6",
                            "nodeType": "YulTypedName",
                            "src": "2754:10:6",
                            "type": ""
                          }
                        ],
                        "src": "2687:543:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3299:54:6",
                          "nodeType": "YulBlock",
                          "src": "3299:54:6",
                          "statements": [
                            {
                              "nativeSrc": "3309:37:6",
                              "nodeType": "YulAssignment",
                              "src": "3309:37:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "bits",
                                    "nativeSrc": "3334:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3334:4:6"
                                  },
                                  {
                                    "name": "value",
                                    "nativeSrc": "3340:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3340:5:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nativeSrc": "3330:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3330:3:6"
                                },
                                "nativeSrc": "3330:16:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3330:16:6"
                              },
                              "variableNames": [
                                {
                                  "name": "newValue",
                                  "nativeSrc": "3309:8:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3309:8:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "shift_right_unsigned_dynamic",
                        "nativeSrc": "3236:117:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "bits",
                            "nativeSrc": "3274:4:6",
                            "nodeType": "YulTypedName",
                            "src": "3274:4:6",
                            "type": ""
                          },
                          {
                            "name": "value",
                            "nativeSrc": "3280:5:6",
                            "nodeType": "YulTypedName",
                            "src": "3280:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "newValue",
                            "nativeSrc": "3290:8:6",
                            "nodeType": "YulTypedName",
                            "src": "3290:8:6",
                            "type": ""
                          }
                        ],
                        "src": "3236:117:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3410:118:6",
                          "nodeType": "YulBlock",
                          "src": "3410:118:6",
                          "statements": [
                            {
                              "nativeSrc": "3420:68:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "3420:68:6",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "3469:1:6",
                                            "nodeType": "YulLiteral",
                                            "src": "3469:1:6",
                                            "type": "",
                                            "value": "8"
                                          },
                                          {
                                            "name": "bytes",
                                            "nativeSrc": "3472:5:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "3472:5:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nativeSrc": "3465:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "3465:3:6"
                                        },
                                        "nativeSrc": "3465:13:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "3465:13:6"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "3484:1:6",
                                            "nodeType": "YulLiteral",
                                            "src": "3484:1:6",
                                            "type": "",
                                            "value": "0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nativeSrc": "3480:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "3480:3:6"
                                        },
                                        "nativeSrc": "3480:6:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "3480:6:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shift_right_unsigned_dynamic",
                                      "nativeSrc": "3436:28:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "3436:28:6"
                                    },
                                    "nativeSrc": "3436:51:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3436:51:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "3432:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3432:3:6"
                                },
                                "nativeSrc": "3432:56:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3432:56:6"
                              },
                              "variables": [
                                {
                                  "name": "mask",
                                  "nativeSrc": "3424:4:6",
                                  "nodeType": "YulTypedName",
                                  "src": "3424:4:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "3497:25:6",
                              "nodeType": "YulAssignment",
                              "src": "3497:25:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nativeSrc": "3511:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3511:4:6"
                                  },
                                  {
                                    "name": "mask",
                                    "nativeSrc": "3517:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3517:4:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "3507:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3507:3:6"
                                },
                                "nativeSrc": "3507:15:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3507:15:6"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nativeSrc": "3497:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3497:6:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mask_bytes_dynamic",
                        "nativeSrc": "3359:169:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nativeSrc": "3387:4:6",
                            "nodeType": "YulTypedName",
                            "src": "3387:4:6",
                            "type": ""
                          },
                          {
                            "name": "bytes",
                            "nativeSrc": "3393:5:6",
                            "nodeType": "YulTypedName",
                            "src": "3393:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "result",
                            "nativeSrc": "3403:6:6",
                            "nodeType": "YulTypedName",
                            "src": "3403:6:6",
                            "type": ""
                          }
                        ],
                        "src": "3359:169:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3614:214:6",
                          "nodeType": "YulBlock",
                          "src": "3614:214:6",
                          "statements": [
                            {
                              "nativeSrc": "3747:37:6",
                              "nodeType": "YulAssignment",
                              "src": "3747:37:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nativeSrc": "3774:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3774:4:6"
                                  },
                                  {
                                    "name": "len",
                                    "nativeSrc": "3780:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3780:3:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mask_bytes_dynamic",
                                  "nativeSrc": "3755:18:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3755:18:6"
                                },
                                "nativeSrc": "3755:29:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3755:29:6"
                              },
                              "variableNames": [
                                {
                                  "name": "data",
                                  "nativeSrc": "3747:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3747:4:6"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "3793:29:6",
                              "nodeType": "YulAssignment",
                              "src": "3793:29:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nativeSrc": "3804:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3804:4:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "3814:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "3814:1:6",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "len",
                                        "nativeSrc": "3817:3:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3817:3:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nativeSrc": "3810:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "3810:3:6"
                                    },
                                    "nativeSrc": "3810:11:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3810:11:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nativeSrc": "3801:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3801:2:6"
                                },
                                "nativeSrc": "3801:21:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3801:21:6"
                              },
                              "variableNames": [
                                {
                                  "name": "used",
                                  "nativeSrc": "3793:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3793:4:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "extract_used_part_and_set_length_of_short_byte_array",
                        "nativeSrc": "3533:295:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nativeSrc": "3595:4:6",
                            "nodeType": "YulTypedName",
                            "src": "3595:4:6",
                            "type": ""
                          },
                          {
                            "name": "len",
                            "nativeSrc": "3601:3:6",
                            "nodeType": "YulTypedName",
                            "src": "3601:3:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "used",
                            "nativeSrc": "3609:4:6",
                            "nodeType": "YulTypedName",
                            "src": "3609:4:6",
                            "type": ""
                          }
                        ],
                        "src": "3533:295:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3925:1303:6",
                          "nodeType": "YulBlock",
                          "src": "3925:1303:6",
                          "statements": [
                            {
                              "nativeSrc": "3936:51:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "3936:51:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nativeSrc": "3983:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3983:3:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_length_t_string_memory_ptr",
                                  "nativeSrc": "3950:32:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3950:32:6"
                                },
                                "nativeSrc": "3950:37:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3950:37:6"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nativeSrc": "3940:6:6",
                                  "nodeType": "YulTypedName",
                                  "src": "3940:6:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nativeSrc": "4072:22:6",
                                "nodeType": "YulBlock",
                                "src": "4072:22:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nativeSrc": "4074:16:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4074:16:6"
                                      },
                                      "nativeSrc": "4074:18:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "4074:18:6"
                                    },
                                    "nativeSrc": "4074:18:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4074:18:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nativeSrc": "4044:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4044:6:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4052:18:6",
                                    "nodeType": "YulLiteral",
                                    "src": "4052:18:6",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "4041:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4041:2:6"
                                },
                                "nativeSrc": "4041:30:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4041:30:6"
                              },
                              "nativeSrc": "4038:56:6",
                              "nodeType": "YulIf",
                              "src": "4038:56:6"
                            },
                            {
                              "nativeSrc": "4104:52:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "4104:52:6",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "slot",
                                        "nativeSrc": "4150:4:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4150:4:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sload",
                                      "nativeSrc": "4144:5:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "4144:5:6"
                                    },
                                    "nativeSrc": "4144:11:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4144:11:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "extract_byte_array_length",
                                  "nativeSrc": "4118:25:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4118:25:6"
                                },
                                "nativeSrc": "4118:38:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4118:38:6"
                              },
                              "variables": [
                                {
                                  "name": "oldLen",
                                  "nativeSrc": "4108:6:6",
                                  "nodeType": "YulTypedName",
                                  "src": "4108:6:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "slot",
                                    "nativeSrc": "4249:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4249:4:6"
                                  },
                                  {
                                    "name": "oldLen",
                                    "nativeSrc": "4255:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4255:6:6"
                                  },
                                  {
                                    "name": "newLen",
                                    "nativeSrc": "4263:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4263:6:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "clean_up_bytearray_end_slots_t_string_storage",
                                  "nativeSrc": "4203:45:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4203:45:6"
                                },
                                "nativeSrc": "4203:67:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4203:67:6"
                              },
                              "nativeSrc": "4203:67:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "4203:67:6"
                            },
                            {
                              "nativeSrc": "4280:18:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "4280:18:6",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "4297:1:6",
                                "nodeType": "YulLiteral",
                                "src": "4297:1:6",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "srcOffset",
                                  "nativeSrc": "4284:9:6",
                                  "nodeType": "YulTypedName",
                                  "src": "4284:9:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "4308:17:6",
                              "nodeType": "YulAssignment",
                              "src": "4308:17:6",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "4321:4:6",
                                "nodeType": "YulLiteral",
                                "src": "4321:4:6",
                                "type": "",
                                "value": "0x20"
                              },
                              "variableNames": [
                                {
                                  "name": "srcOffset",
                                  "nativeSrc": "4308:9:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4308:9:6"
                                }
                              ]
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nativeSrc": "4372:611:6",
                                    "nodeType": "YulBlock",
                                    "src": "4372:611:6",
                                    "statements": [
                                      {
                                        "nativeSrc": "4386:37:6",
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4386:37:6",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "newLen",
                                              "nativeSrc": "4405:6:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "4405:6:6"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nativeSrc": "4417:4:6",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4417:4:6",
                                                  "type": "",
                                                  "value": "0x1f"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nativeSrc": "4413:3:6",
                                                "nodeType": "YulIdentifier",
                                                "src": "4413:3:6"
                                              },
                                              "nativeSrc": "4413:9:6",
                                              "nodeType": "YulFunctionCall",
                                              "src": "4413:9:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nativeSrc": "4401:3:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "4401:3:6"
                                          },
                                          "nativeSrc": "4401:22:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "4401:22:6"
                                        },
                                        "variables": [
                                          {
                                            "name": "loopEnd",
                                            "nativeSrc": "4390:7:6",
                                            "nodeType": "YulTypedName",
                                            "src": "4390:7:6",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nativeSrc": "4437:51:6",
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4437:51:6",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nativeSrc": "4483:4:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "4483:4:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_dataslot_t_string_storage",
                                            "nativeSrc": "4451:31:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "4451:31:6"
                                          },
                                          "nativeSrc": "4451:37:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "4451:37:6"
                                        },
                                        "variables": [
                                          {
                                            "name": "dstPtr",
                                            "nativeSrc": "4441:6:6",
                                            "nodeType": "YulTypedName",
                                            "src": "4441:6:6",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nativeSrc": "4501:10:6",
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "4501:10:6",
                                        "value": {
                                          "kind": "number",
                                          "nativeSrc": "4510:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "4510:1:6",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "i",
                                            "nativeSrc": "4505:1:6",
                                            "nodeType": "YulTypedName",
                                            "src": "4505:1:6",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nativeSrc": "4569:163:6",
                                          "nodeType": "YulBlock",
                                          "src": "4569:163:6",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nativeSrc": "4594:6:6",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4594:6:6"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "src",
                                                            "nativeSrc": "4612:3:6",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4612:3:6"
                                                          },
                                                          {
                                                            "name": "srcOffset",
                                                            "nativeSrc": "4617:9:6",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4617:9:6"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nativeSrc": "4608:3:6",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4608:3:6"
                                                        },
                                                        "nativeSrc": "4608:19:6",
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4608:19:6"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nativeSrc": "4602:5:6",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4602:5:6"
                                                    },
                                                    "nativeSrc": "4602:26:6",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4602:26:6"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nativeSrc": "4587:6:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4587:6:6"
                                                },
                                                "nativeSrc": "4587:42:6",
                                                "nodeType": "YulFunctionCall",
                                                "src": "4587:42:6"
                                              },
                                              "nativeSrc": "4587:42:6",
                                              "nodeType": "YulExpressionStatement",
                                              "src": "4587:42:6"
                                            },
                                            {
                                              "nativeSrc": "4646:24:6",
                                              "nodeType": "YulAssignment",
                                              "src": "4646:24:6",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nativeSrc": "4660:6:6",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4660:6:6"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nativeSrc": "4668:1:6",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4668:1:6",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "4656:3:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4656:3:6"
                                                },
                                                "nativeSrc": "4656:14:6",
                                                "nodeType": "YulFunctionCall",
                                                "src": "4656:14:6"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "dstPtr",
                                                  "nativeSrc": "4646:6:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4646:6:6"
                                                }
                                              ]
                                            },
                                            {
                                              "nativeSrc": "4687:31:6",
                                              "nodeType": "YulAssignment",
                                              "src": "4687:31:6",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "srcOffset",
                                                    "nativeSrc": "4704:9:6",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4704:9:6"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nativeSrc": "4715:2:6",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4715:2:6",
                                                    "type": "",
                                                    "value": "32"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "4700:3:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4700:3:6"
                                                },
                                                "nativeSrc": "4700:18:6",
                                                "nodeType": "YulFunctionCall",
                                                "src": "4700:18:6"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "srcOffset",
                                                  "nativeSrc": "4687:9:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4687:9:6"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nativeSrc": "4535:1:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "4535:1:6"
                                            },
                                            {
                                              "name": "loopEnd",
                                              "nativeSrc": "4538:7:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "4538:7:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nativeSrc": "4532:2:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "4532:2:6"
                                          },
                                          "nativeSrc": "4532:14:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "4532:14:6"
                                        },
                                        "nativeSrc": "4524:208:6",
                                        "nodeType": "YulForLoop",
                                        "post": {
                                          "nativeSrc": "4547:21:6",
                                          "nodeType": "YulBlock",
                                          "src": "4547:21:6",
                                          "statements": [
                                            {
                                              "nativeSrc": "4549:17:6",
                                              "nodeType": "YulAssignment",
                                              "src": "4549:17:6",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "name": "i",
                                                    "nativeSrc": "4558:1:6",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4558:1:6"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nativeSrc": "4561:4:6",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4561:4:6",
                                                    "type": "",
                                                    "value": "0x20"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "4554:3:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4554:3:6"
                                                },
                                                "nativeSrc": "4554:12:6",
                                                "nodeType": "YulFunctionCall",
                                                "src": "4554:12:6"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "i",
                                                  "nativeSrc": "4549:1:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4549:1:6"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "pre": {
                                          "nativeSrc": "4528:3:6",
                                          "nodeType": "YulBlock",
                                          "src": "4528:3:6",
                                          "statements": []
                                        },
                                        "src": "4524:208:6"
                                      },
                                      {
                                        "body": {
                                          "nativeSrc": "4768:156:6",
                                          "nodeType": "YulBlock",
                                          "src": "4768:156:6",
                                          "statements": [
                                            {
                                              "nativeSrc": "4786:43:6",
                                              "nodeType": "YulVariableDeclaration",
                                              "src": "4786:43:6",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nativeSrc": "4813:3:6",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4813:3:6"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nativeSrc": "4818:9:6",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4818:9:6"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nativeSrc": "4809:3:6",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4809:3:6"
                                                    },
                                                    "nativeSrc": "4809:19:6",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4809:19:6"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nativeSrc": "4803:5:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4803:5:6"
                                                },
                                                "nativeSrc": "4803:26:6",
                                                "nodeType": "YulFunctionCall",
                                                "src": "4803:26:6"
                                              },
                                              "variables": [
                                                {
                                                  "name": "lastValue",
                                                  "nativeSrc": "4790:9:6",
                                                  "nodeType": "YulTypedName",
                                                  "src": "4790:9:6",
                                                  "type": ""
                                                }
                                              ]
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "dstPtr",
                                                    "nativeSrc": "4853:6:6",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4853:6:6"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "lastValue",
                                                        "nativeSrc": "4880:9:6",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4880:9:6"
                                                      },
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "newLen",
                                                            "nativeSrc": "4895:6:6",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4895:6:6"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nativeSrc": "4903:4:6",
                                                            "nodeType": "YulLiteral",
                                                            "src": "4903:4:6",
                                                            "type": "",
                                                            "value": "0x1f"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "and",
                                                          "nativeSrc": "4891:3:6",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "4891:3:6"
                                                        },
                                                        "nativeSrc": "4891:17:6",
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4891:17:6"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mask_bytes_dynamic",
                                                      "nativeSrc": "4861:18:6",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4861:18:6"
                                                    },
                                                    "nativeSrc": "4861:48:6",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4861:48:6"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sstore",
                                                  "nativeSrc": "4846:6:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4846:6:6"
                                                },
                                                "nativeSrc": "4846:64:6",
                                                "nodeType": "YulFunctionCall",
                                                "src": "4846:64:6"
                                              },
                                              "nativeSrc": "4846:64:6",
                                              "nodeType": "YulExpressionStatement",
                                              "src": "4846:64:6"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "loopEnd",
                                              "nativeSrc": "4751:7:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "4751:7:6"
                                            },
                                            {
                                              "name": "newLen",
                                              "nativeSrc": "4760:6:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "4760:6:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nativeSrc": "4748:2:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "4748:2:6"
                                          },
                                          "nativeSrc": "4748:19:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "4748:19:6"
                                        },
                                        "nativeSrc": "4745:179:6",
                                        "nodeType": "YulIf",
                                        "src": "4745:179:6"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nativeSrc": "4944:4:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "4944:4:6"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "newLen",
                                                      "nativeSrc": "4958:6:6",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4958:6:6"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nativeSrc": "4966:1:6",
                                                      "nodeType": "YulLiteral",
                                                      "src": "4966:1:6",
                                                      "type": "",
                                                      "value": "2"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mul",
                                                    "nativeSrc": "4954:3:6",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4954:3:6"
                                                  },
                                                  "nativeSrc": "4954:14:6",
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4954:14:6"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nativeSrc": "4970:1:6",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4970:1:6",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nativeSrc": "4950:3:6",
                                                "nodeType": "YulIdentifier",
                                                "src": "4950:3:6"
                                              },
                                              "nativeSrc": "4950:22:6",
                                              "nodeType": "YulFunctionCall",
                                              "src": "4950:22:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nativeSrc": "4937:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "4937:6:6"
                                          },
                                          "nativeSrc": "4937:36:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "4937:36:6"
                                        },
                                        "nativeSrc": "4937:36:6",
                                        "nodeType": "YulExpressionStatement",
                                        "src": "4937:36:6"
                                      }
                                    ]
                                  },
                                  "nativeSrc": "4365:618:6",
                                  "nodeType": "YulCase",
                                  "src": "4365:618:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "4370:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "4370:1:6",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nativeSrc": "5000:222:6",
                                    "nodeType": "YulBlock",
                                    "src": "5000:222:6",
                                    "statements": [
                                      {
                                        "nativeSrc": "5014:14:6",
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "5014:14:6",
                                        "value": {
                                          "kind": "number",
                                          "nativeSrc": "5027:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "5027:1:6",
                                          "type": "",
                                          "value": "0"
                                        },
                                        "variables": [
                                          {
                                            "name": "value",
                                            "nativeSrc": "5018:5:6",
                                            "nodeType": "YulTypedName",
                                            "src": "5018:5:6",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "body": {
                                          "nativeSrc": "5051:67:6",
                                          "nodeType": "YulBlock",
                                          "src": "5051:67:6",
                                          "statements": [
                                            {
                                              "nativeSrc": "5069:35:6",
                                              "nodeType": "YulAssignment",
                                              "src": "5069:35:6",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "src",
                                                        "nativeSrc": "5088:3:6",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5088:3:6"
                                                      },
                                                      {
                                                        "name": "srcOffset",
                                                        "nativeSrc": "5093:9:6",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5093:9:6"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nativeSrc": "5084:3:6",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5084:3:6"
                                                    },
                                                    "nativeSrc": "5084:19:6",
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5084:19:6"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nativeSrc": "5078:5:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5078:5:6"
                                                },
                                                "nativeSrc": "5078:26:6",
                                                "nodeType": "YulFunctionCall",
                                                "src": "5078:26:6"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "value",
                                                  "nativeSrc": "5069:5:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5069:5:6"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "name": "newLen",
                                          "nativeSrc": "5044:6:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "5044:6:6"
                                        },
                                        "nativeSrc": "5041:77:6",
                                        "nodeType": "YulIf",
                                        "src": "5041:77:6"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "slot",
                                              "nativeSrc": "5138:4:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "5138:4:6"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nativeSrc": "5197:5:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5197:5:6"
                                                },
                                                {
                                                  "name": "newLen",
                                                  "nativeSrc": "5204:6:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5204:6:6"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "extract_used_part_and_set_length_of_short_byte_array",
                                                "nativeSrc": "5144:52:6",
                                                "nodeType": "YulIdentifier",
                                                "src": "5144:52:6"
                                              },
                                              "nativeSrc": "5144:67:6",
                                              "nodeType": "YulFunctionCall",
                                              "src": "5144:67:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sstore",
                                            "nativeSrc": "5131:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "5131:6:6"
                                          },
                                          "nativeSrc": "5131:81:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "5131:81:6"
                                        },
                                        "nativeSrc": "5131:81:6",
                                        "nodeType": "YulExpressionStatement",
                                        "src": "5131:81:6"
                                      }
                                    ]
                                  },
                                  "nativeSrc": "4992:230:6",
                                  "nodeType": "YulCase",
                                  "src": "4992:230:6",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "newLen",
                                    "nativeSrc": "4345:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4345:6:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4353:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "4353:2:6",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "4342:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4342:2:6"
                                },
                                "nativeSrc": "4342:14:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4342:14:6"
                              },
                              "nativeSrc": "4335:887:6",
                              "nodeType": "YulSwitch",
                              "src": "4335:887:6"
                            }
                          ]
                        },
                        "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
                        "nativeSrc": "3833:1395:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "slot",
                            "nativeSrc": "3914:4:6",
                            "nodeType": "YulTypedName",
                            "src": "3914:4:6",
                            "type": ""
                          },
                          {
                            "name": "src",
                            "nativeSrc": "3920:3:6",
                            "nodeType": "YulTypedName",
                            "src": "3920:3:6",
                            "type": ""
                          }
                        ],
                        "src": "3833:1395:6"
                      }
                    ]
                  },
                  "contents": "{\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function panic_error_0x41() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function array_dataslot_t_string_storage(ptr) -> data {\n        data := ptr\n\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n\n    }\n\n    function divide_by_32_ceil(value) -> result {\n        result := div(add(value, 31), 32)\n    }\n\n    function shift_left_dynamic(bits, value) -> newValue {\n        newValue :=\n\n        shl(bits, value)\n\n    }\n\n    function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n        let shiftBits := mul(shiftBytes, 8)\n        let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n        toInsert := shift_left_dynamic(shiftBits, toInsert)\n        value := and(value, not(mask))\n        result := or(value, and(toInsert, mask))\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function identity(value) -> ret {\n        ret := value\n    }\n\n    function convert_t_uint256_to_t_uint256(value) -> converted {\n        converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n    }\n\n    function prepare_store_t_uint256(value) -> ret {\n        ret := value\n    }\n\n    function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n        let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n        sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n    }\n\n    function zero_value_for_split_t_uint256() -> ret {\n        ret := 0\n    }\n\n    function storage_set_to_zero_t_uint256(slot, offset) {\n        let zero_0 := zero_value_for_split_t_uint256()\n        update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n    }\n\n    function clear_storage_range_t_bytes1(start, end) {\n        for {} lt(start, end) { start := add(start, 1) }\n        {\n            storage_set_to_zero_t_uint256(start, 0)\n        }\n    }\n\n    function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n        if gt(len, 31) {\n            let dataArea := array_dataslot_t_string_storage(array)\n            let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n            // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n            if lt(startIndex, 32) { deleteStart := dataArea }\n            clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n        }\n\n    }\n\n    function shift_right_unsigned_dynamic(bits, value) -> newValue {\n        newValue :=\n\n        shr(bits, value)\n\n    }\n\n    function mask_bytes_dynamic(data, bytes) -> result {\n        let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n        result := and(data, mask)\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n        // we want to save only elements that are part of the array after resizing\n        // others should be set to zero\n        data := mask_bytes_dynamic(data, len)\n        used := or(data, mul(2, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n        let newLen := array_length_t_string_memory_ptr(src)\n        // Make sure array length is sane\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n        let oldLen := extract_byte_array_length(sload(slot))\n\n        // potentially truncate data\n        clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n        let srcOffset := 0\n\n        srcOffset := 0x20\n\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(0x1f))\n\n            let dstPtr := array_dataslot_t_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 32)\n            }\n            if lt(loopEnd, newLen) {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n            }\n            sstore(slot, add(mul(newLen, 2), 1))\n        }\n        default {\n            let value := 0\n            if newLen {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n\n}\n",
                  "id": 6,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f537761726d20546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600381526020017f53574d000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000365565b508060049081620000a1919062000365565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044c565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200016d57607f821691505b60208210810362000183576200018262000125565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001ae565b620001f98683620001ae565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000246620002406200023a8462000211565b6200021b565b62000211565b9050919050565b6000819050919050565b620002628362000225565b6200027a62000271826200024d565b848454620001bb565b825550505050565b600090565b6200029162000282565b6200029e81848462000257565b505050565b5b81811015620002c657620002ba60008262000287565b600181019050620002a4565b5050565b601f8211156200031557620002df8162000189565b620002ea846200019e565b81016020851015620002fa578190505b6200031262000309856200019e565b830182620002a3565b50505b505050565b600082821c905092915050565b60006200033a600019846008026200031a565b1980831691505092915050565b600062000355838362000327565b9150826002028217905092915050565b6200037082620000eb565b67ffffffffffffffff8111156200038c576200038b620000f6565b5b62000398825462000154565b620003a5828285620002ca565b600060209050601f831160018114620003dd5760008415620003c8578287015190505b620003d4858262000347565b86555062000444565b601f198416620003ed8662000189565b60005b828110156200041757848901518255600182019150602085019450602081019050620003f0565b8683101562000437578489015162000433601f89168262000327565b8355505b6001600288020188555050505b505050505050565b6113df806200045c6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633e514bac1161008c57806395d89b411161006657806395d89b411461022b578063a9059cbb14610249578063bd4bbeb914610279578063dd62ed3e146102a9576100cf565b80633e514bac146101c157806370a08231146101dd5780638da5cb5b1461020d576100cf565b806306fdde03146100d4578063095ea7b3146100f257806310a7fd7b1461012257806318160ddd1461015557806323b872dd14610173578063313ce567146101a3575b600080fd5b6100dc6102d9565b6040516100e99190610ea7565b60405180910390f35b61010c60048036038101906101079190610f62565b61036b565b6040516101199190610fbd565b60405180910390f35b61013c60048036038101906101379190610fd8565b61038e565b60405161014c949392919061103c565b60405180910390f35b61015d6103de565b60405161016a9190611081565b60405180910390f35b61018d6004803603810190610188919061109c565b6103e8565b60405161019a9190610fbd565b60405180910390f35b6101ab610417565b6040516101b8919061110b565b60405180910390f35b6101db60048036038101906101d69190611152565b610420565b005b6101f760048036038101906101f29190611192565b610634565b6040516102049190611081565b60405180910390f35b61021561067c565b60405161022291906111bf565b60405180910390f35b6102336106a2565b6040516102409190610ea7565b60405180910390f35b610263600480360381019061025e9190610f62565b610734565b6040516102709190610fbd565b60405180910390f35b610293600480360381019061028e9190611192565b610757565b6040516102a09190611081565b60405180910390f35b6102c360048036038101906102be91906111da565b61076f565b6040516102d09190611081565b60405180910390f35b6060600380546102e890611249565b80601f016020809104026020016040519081016040528092919081815260200182805461031490611249565b80156103615780601f1061033657610100808354040283529160200191610361565b820191906000526020600020905b81548152906001019060200180831161034457829003601f168201915b5050505050905090565b6000806103766107f6565b90506103838185856107fe565b600191505092915050565b60076020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b6000600254905090565b6000806103f36107f6565b9050610400858285610810565b61040b8585856108a5565b60019150509392505050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bc906112c6565b60405180910390fd5b60405180608001604052808381526020018281526020013373ffffffffffffffffffffffffffffffffffffffff1681526020014281525060076000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105c79190611315565b925050819055506105e033670de0b6b3a7640000610999565b3373ffffffffffffffffffffffffffffffffffffffff167fe46984a7cb6a34125cc7ad2328662abe47b36cf2cefd04f2bdb4d3a74dfd484e8383604051610628929190611349565b60405180910390a25050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546106b190611249565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611249565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b5050505050905090565b60008061073f6107f6565b905061074c8185856108a5565b600191505092915050565b60066020528060005260406000206000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b61080b8383836001610a1b565b505050565b600061081c848461076f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561089f578181101561088f578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161088693929190611372565b60405180910390fd5b61089e84848484036000610a1b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109175760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161090e91906111bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109895760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161098091906111bf565b60405180910390fd5b610994838383610bf2565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0b5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a0291906111bf565b60405180910390fd5b610a1760008383610bf2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a8d5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a8491906111bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610aff5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610af691906111bf565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610bec578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610be39190611081565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c44578060026000828254610c389190611315565b92505081905550610d17565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cd0578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610cc793929190611372565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d605780600260008282540392505081905550610dad565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e0a9190611081565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e51578082015181840152602081019050610e36565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e7982610e17565b610e838185610e22565b9350610e93818560208601610e33565b610e9c81610e5d565b840191505092915050565b60006020820190508181036000830152610ec18184610e6e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ef982610ece565b9050919050565b610f0981610eee565b8114610f1457600080fd5b50565b600081359050610f2681610f00565b92915050565b6000819050919050565b610f3f81610f2c565b8114610f4a57600080fd5b50565b600081359050610f5c81610f36565b92915050565b60008060408385031215610f7957610f78610ec9565b5b6000610f8785828601610f17565b9250506020610f9885828601610f4d565b9150509250929050565b60008115159050919050565b610fb781610fa2565b82525050565b6000602082019050610fd26000830184610fae565b92915050565b600060208284031215610fee57610fed610ec9565b5b6000610ffc84828501610f4d565b91505092915050565b61100e81610f2c565b82525050565b6000819050919050565b61102781611014565b82525050565b61103681610eee565b82525050565b60006080820190506110516000830187611005565b61105e602083018661101e565b61106b604083018561102d565b6110786060830184611005565b95945050505050565b60006020820190506110966000830184611005565b92915050565b6000806000606084860312156110b5576110b4610ec9565b5b60006110c386828701610f17565b93505060206110d486828701610f17565b92505060406110e586828701610f4d565b9150509250925092565b600060ff82169050919050565b611105816110ef565b82525050565b600060208201905061112060008301846110fc565b92915050565b61112f81611014565b811461113a57600080fd5b50565b60008135905061114c81611126565b92915050565b6000806040838503121561116957611168610ec9565b5b600061117785828601610f4d565b92505060206111888582860161113d565b9150509250929050565b6000602082840312156111a8576111a7610ec9565b5b60006111b684828501610f17565b91505092915050565b60006020820190506111d4600083018461102d565b92915050565b600080604083850312156111f1576111f0610ec9565b5b60006111ff85828601610f17565b925050602061121085828601610f17565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061126157607f821691505b6020821081036112745761127361121a565b5b50919050565b7f5461736b20616c726561647920636f6d706c6574656400000000000000000000600082015250565b60006112b0601683610e22565b91506112bb8261127a565b602082019050919050565b600060208201905081810360008301526112df816112a3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061132082610f2c565b915061132b83610f2c565b9250828201905080821115611343576113426112e6565b5b92915050565b600060408201905061135e6000830185611005565b61136b602083018461101e565b9392505050565b6000606082019050611387600083018661102d565b6113946020830185611005565b6113a16040830184611005565b94935050505056fea2646970667358221220c1f0bde385e3675248a393a73b37ef12c8a3117f5ca73eae6d90f04daffe9b0464736f6c63430008180033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x537761726D20546F6B656E000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x53574D0000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0x8F SWAP2 SWAP1 PUSH3 0x365 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH3 0xA1 SWAP2 SWAP1 PUSH3 0x365 JUMP JUMPDEST POP POP POP CALLER PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0x44C JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x16D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x183 JUMPI PUSH3 0x182 PUSH3 0x125 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH3 0x1ED PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x1AE JUMP JUMPDEST PUSH3 0x1F9 DUP7 DUP4 PUSH3 0x1AE JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x246 PUSH3 0x240 PUSH3 0x23A DUP5 PUSH3 0x211 JUMP JUMPDEST PUSH3 0x21B JUMP JUMPDEST PUSH3 0x211 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x262 DUP4 PUSH3 0x225 JUMP JUMPDEST PUSH3 0x27A PUSH3 0x271 DUP3 PUSH3 0x24D JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x1BB JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH3 0x291 PUSH3 0x282 JUMP JUMPDEST PUSH3 0x29E DUP2 DUP5 DUP5 PUSH3 0x257 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2C6 JUMPI PUSH3 0x2BA PUSH1 0x0 DUP3 PUSH3 0x287 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x2A4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x315 JUMPI PUSH3 0x2DF DUP2 PUSH3 0x189 JUMP JUMPDEST PUSH3 0x2EA DUP5 PUSH3 0x19E JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x2FA JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x312 PUSH3 0x309 DUP6 PUSH3 0x19E JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x2A3 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x33A PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x31A JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x355 DUP4 DUP4 PUSH3 0x327 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x370 DUP3 PUSH3 0xEB JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x38C JUMPI PUSH3 0x38B PUSH3 0xF6 JUMP JUMPDEST JUMPDEST PUSH3 0x398 DUP3 SLOAD PUSH3 0x154 JUMP JUMPDEST PUSH3 0x3A5 DUP3 DUP3 DUP6 PUSH3 0x2CA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x3DD JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x3C8 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x3D4 DUP6 DUP3 PUSH3 0x347 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x444 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x3ED DUP7 PUSH3 0x189 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x417 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x3F0 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x437 JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x433 PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x327 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x13DF DUP1 PUSH3 0x45C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3E514BAC GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xBD4BBEB9 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2A9 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x3E514BAC EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x20D JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x10A7FD7B EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x173 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1A3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x2D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xEA7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x107 SWAP2 SWAP1 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x36B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xFBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0xFD8 JUMP JUMPDEST PUSH2 0x38E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x103C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15D PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16A SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x109C JUMP JUMPDEST PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xFBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AB PUSH2 0x417 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B8 SWAP2 SWAP1 PUSH2 0x110B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x634 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x204 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x215 PUSH2 0x67C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x222 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x233 PUSH2 0x6A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x240 SWAP2 SWAP1 PUSH2 0xEA7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x270 SWAP2 SWAP1 PUSH2 0xFBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0x11DA JUMP JUMPDEST PUSH2 0x76F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x2E8 SWAP1 PUSH2 0x1249 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x314 SWAP1 PUSH2 0x1249 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x361 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x336 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x361 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x344 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x376 PUSH2 0x7F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x383 DUP2 DUP6 DUP6 PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3F3 PUSH2 0x7F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x400 DUP6 DUP3 DUP6 PUSH2 0x810 JUMP JUMPDEST PUSH2 0x40B DUP6 DUP6 DUP6 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x7 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BC SWAP1 PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE POP PUSH1 0x7 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE SWAP1 POP POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x5C7 SWAP2 SWAP1 PUSH2 0x1315 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x5E0 CALLER PUSH8 0xDE0B6B3A7640000 PUSH2 0x999 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xE46984A7CB6A34125CC7AD2328662ABE47B36CF2CEFD04F2BDB4D3A74DFD484E DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x628 SWAP3 SWAP2 SWAP1 PUSH2 0x1349 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x6B1 SWAP1 PUSH2 0x1249 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6DD SWAP1 PUSH2 0x1249 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x72A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6FF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x72A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x70D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x73F PUSH2 0x7F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x74C DUP2 DUP6 DUP6 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x80B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xA1B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81C DUP5 DUP5 PUSH2 0x76F JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x89F JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x88F JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x886 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1372 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x89E DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0xA1B JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x917 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x90E SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x989 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x980 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x994 DUP4 DUP4 DUP4 PUSH2 0xBF2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA0B JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA02 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA17 PUSH1 0x0 DUP4 DUP4 PUSH2 0xBF2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA8D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xAFF JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAF6 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0xBEC JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xBE3 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xC44 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xC38 SWAP2 SWAP1 PUSH2 0x1315 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xCD0 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCC7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1372 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD60 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xDAD JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xE0A SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP 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 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE51 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xE36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE79 DUP3 PUSH2 0xE17 JUMP JUMPDEST PUSH2 0xE83 DUP2 DUP6 PUSH2 0xE22 JUMP JUMPDEST SWAP4 POP PUSH2 0xE93 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xE33 JUMP JUMPDEST PUSH2 0xE9C DUP2 PUSH2 0xE5D 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 0xEC1 DUP2 DUP5 PUSH2 0xE6E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEF9 DUP3 PUSH2 0xECE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF09 DUP2 PUSH2 0xEEE JUMP JUMPDEST DUP2 EQ PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xF26 DUP2 PUSH2 0xF00 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF3F DUP2 PUSH2 0xF2C JUMP JUMPDEST DUP2 EQ PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xF5C DUP2 PUSH2 0xF36 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF79 JUMPI PUSH2 0xF78 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xF87 DUP6 DUP3 DUP7 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xF98 DUP6 DUP3 DUP7 ADD PUSH2 0xF4D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFB7 DUP2 PUSH2 0xFA2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFD2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xFAE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFEE JUMPI PUSH2 0xFED PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xFFC DUP5 DUP3 DUP6 ADD PUSH2 0xF4D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x100E DUP2 PUSH2 0xF2C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1027 DUP2 PUSH2 0x1014 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1036 DUP2 PUSH2 0xEEE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x1051 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1005 JUMP JUMPDEST PUSH2 0x105E PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x101E JUMP JUMPDEST PUSH2 0x106B PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x102D JUMP JUMPDEST PUSH2 0x1078 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1005 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1096 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1005 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x10B5 JUMPI PUSH2 0x10B4 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x10C3 DUP7 DUP3 DUP8 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x10D4 DUP7 DUP3 DUP8 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x10E5 DUP7 DUP3 DUP8 ADD PUSH2 0xF4D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1105 DUP2 PUSH2 0x10EF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1120 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x10FC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x112F DUP2 PUSH2 0x1014 JUMP JUMPDEST DUP2 EQ PUSH2 0x113A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x114C DUP2 PUSH2 0x1126 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1169 JUMPI PUSH2 0x1168 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1177 DUP6 DUP3 DUP7 ADD PUSH2 0xF4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1188 DUP6 DUP3 DUP7 ADD PUSH2 0x113D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A8 JUMPI PUSH2 0x11A7 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x11B6 DUP5 DUP3 DUP6 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x11D4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x102D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11F1 JUMPI PUSH2 0x11F0 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x11FF DUP6 DUP3 DUP7 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1210 DUP6 DUP3 DUP7 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x1261 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1274 JUMPI PUSH2 0x1273 PUSH2 0x121A JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5461736B20616C726561647920636F6D706C6574656400000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 PUSH1 0x16 DUP4 PUSH2 0xE22 JUMP JUMPDEST SWAP2 POP PUSH2 0x12BB DUP3 PUSH2 0x127A 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 0x12DF DUP2 PUSH2 0x12A3 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 0x1320 DUP3 PUSH2 0xF2C JUMP JUMPDEST SWAP2 POP PUSH2 0x132B DUP4 PUSH2 0xF2C JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1343 JUMPI PUSH2 0x1342 PUSH2 0x12E6 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x135E PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1005 JUMP JUMPDEST PUSH2 0x136B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x101E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1387 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x102D JUMP JUMPDEST PUSH2 0x1394 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1005 JUMP JUMPDEST PUSH2 0x13A1 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1005 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC1 CREATE 0xBD 0xE3 DUP6 0xE3 PUSH8 0x5248A393A73B37EF SLT 0xC8 LOG3 GT PUSH32 0x5CA73EAE6D90F04DAFFE9B0464736F6C63430008180033000000000000000000 ",
              "sourceMap": "115:1553:5:-:0;;;755:77;;;;;;;;;;1582:113:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1656:5;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;815:10:5::1;807:5;;:18;;;;;;;;;;;;;;;;;;115:1553:::0;;7:99:6;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:180::-;160:77;157:1;150:88;257:4;254:1;247:15;281:4;278:1;271:15;298:180;346:77;343:1;336:88;443:4;440:1;433:15;467:4;464:1;457:15;484:320;528:6;565:1;559:4;555:12;545:22;;612:1;606:4;602:12;633:18;623:81;;689:4;681:6;677:17;667:27;;623:81;751:2;743:6;740:14;720:18;717:38;714:84;;770:18;;:::i;:::-;714:84;535:269;484:320;;;:::o;810:141::-;859:4;882:3;874:11;;905:3;902:1;895:14;939:4;936:1;926:18;918:26;;810:141;;;:::o;957:93::-;994:6;1041:2;1036;1029:5;1025:14;1021:23;1011:33;;957:93;;;:::o;1056:107::-;1100:8;1150:5;1144:4;1140:16;1119:37;;1056:107;;;;:::o;1169:393::-;1238:6;1288:1;1276:10;1272:18;1311:97;1341:66;1330:9;1311:97;:::i;:::-;1429:39;1459:8;1448:9;1429:39;:::i;:::-;1417:51;;1501:4;1497:9;1490:5;1486:21;1477:30;;1550:4;1540:8;1536:19;1529:5;1526:30;1516:40;;1245:317;;1169:393;;;;;:::o;1568:77::-;1605:7;1634:5;1623:16;;1568:77;;;:::o;1651:60::-;1679:3;1700:5;1693:12;;1651:60;;;:::o;1717:142::-;1767:9;1800:53;1818:34;1827:24;1845:5;1827:24;:::i;:::-;1818:34;:::i;:::-;1800:53;:::i;:::-;1787:66;;1717:142;;;:::o;1865:75::-;1908:3;1929:5;1922:12;;1865:75;;;:::o;1946:269::-;2056:39;2087:7;2056:39;:::i;:::-;2117:91;2166:41;2190:16;2166:41;:::i;:::-;2158:6;2151:4;2145:11;2117:91;:::i;:::-;2111:4;2104:105;2022:193;1946:269;;;:::o;2221:73::-;2266:3;2221:73;:::o;2300:189::-;2377:32;;:::i;:::-;2418:65;2476:6;2468;2462:4;2418:65;:::i;:::-;2353:136;2300:189;;:::o;2495:186::-;2555:120;2572:3;2565:5;2562:14;2555:120;;;2626:39;2663:1;2656:5;2626:39;:::i;:::-;2599:1;2592:5;2588:13;2579:22;;2555:120;;;2495:186;;:::o;2687:543::-;2788:2;2783:3;2780:11;2777:446;;;2822:38;2854:5;2822:38;:::i;:::-;2906:29;2924:10;2906:29;:::i;:::-;2896:8;2892:44;3089:2;3077:10;3074:18;3071:49;;;3110:8;3095:23;;3071:49;3133:80;3189:22;3207:3;3189:22;:::i;:::-;3179:8;3175:37;3162:11;3133:80;:::i;:::-;2792:431;;2777:446;2687:543;;;:::o;3236:117::-;3290:8;3340:5;3334:4;3330:16;3309:37;;3236:117;;;;:::o;3359:169::-;3403:6;3436:51;3484:1;3480:6;3472:5;3469:1;3465:13;3436:51;:::i;:::-;3432:56;3517:4;3511;3507:15;3497:25;;3410:118;3359:169;;;;:::o;3533:295::-;3609:4;3755:29;3780:3;3774:4;3755:29;:::i;:::-;3747:37;;3817:3;3814:1;3810:11;3804:4;3801:21;3793:29;;3533:295;;;;:::o;3833:1395::-;3950:37;3983:3;3950:37;:::i;:::-;4052:18;4044:6;4041:30;4038:56;;;4074:18;;:::i;:::-;4038:56;4118:38;4150:4;4144:11;4118:38;:::i;:::-;4203:67;4263:6;4255;4249:4;4203:67;:::i;:::-;4297:1;4321:4;4308:17;;4353:2;4345:6;4342:14;4370:1;4365:618;;;;5027:1;5044:6;5041:77;;;5093:9;5088:3;5084:19;5078:26;5069:35;;5041:77;5144:67;5204:6;5197:5;5144:67;:::i;:::-;5138:4;5131:81;5000:222;4335:887;;4365:618;4417:4;4413:9;4405:6;4401:22;4451:37;4483:4;4451:37;:::i;:::-;4510:1;4524:208;4538:7;4535:1;4532:14;4524:208;;;4617:9;4612:3;4608:19;4602:26;4594:6;4587:42;4668:1;4660:6;4656:14;4646:24;;4715:2;4704:9;4700:18;4687:31;;4561:4;4558:1;4554:12;4549:17;;4524:208;;;4760:6;4751:7;4748:19;4745:179;;;4818:9;4813:3;4809:19;4803:26;4861:48;4903:4;4895:6;4891:17;4880:9;4861:48;:::i;:::-;4853:6;4846:64;4768:156;4745:179;4970:1;4966;4958:6;4954:14;4950:22;4944:4;4937:36;4372:611;;;4335:887;;3925:1303;;;3833:1395;;:::o;115:1553:5:-;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_approve_542": {
                  "entryPoint": 2046,
                  "id": 542,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_602": {
                  "entryPoint": 2587,
                  "id": 602,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_mint_491": {
                  "entryPoint": 2457,
                  "id": 491,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_767": {
                  "entryPoint": 2038,
                  "id": 767,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_spendAllowance_650": {
                  "entryPoint": 2064,
                  "id": 650,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_transfer_381": {
                  "entryPoint": 2213,
                  "id": 381,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_update_458": {
                  "entryPoint": 3058,
                  "id": 458,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@allowance_278": {
                  "entryPoint": 1903,
                  "id": 278,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@approve_302": {
                  "entryPoint": 875,
                  "id": 302,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_237": {
                  "entryPoint": 1588,
                  "id": 237,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@decimals_215": {
                  "entryPoint": 1047,
                  "id": 215,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@ledger_810": {
                  "entryPoint": 910,
                  "id": 810,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@name_197": {
                  "entryPoint": 729,
                  "id": 197,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@owner_792": {
                  "entryPoint": 1660,
                  "id": 792,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@submitWork_890": {
                  "entryPoint": 1056,
                  "id": 890,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@symbol_206": {
                  "entryPoint": 1698,
                  "id": 206,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@totalSupply_224": {
                  "entryPoint": 990,
                  "id": 224,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_334": {
                  "entryPoint": 1000,
                  "id": 334,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_261": {
                  "entryPoint": 1844,
                  "id": 261,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@ubiEarned_796": {
                  "entryPoint": 1879,
                  "id": 796,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_t_address": {
                  "entryPoint": 3863,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_t_int256": {
                  "entryPoint": 4413,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_t_uint256": {
                  "entryPoint": 3917,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 4498,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 4570,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 4252,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 3938,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 4056,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_int256": {
                  "entryPoint": 4434,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_t_address_to_t_address_fromStack": {
                  "entryPoint": 4141,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_t_bool_to_t_bool_fromStack": {
                  "entryPoint": 4014,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_t_int256_to_t_int256_fromStack": {
                  "entryPoint": 4126,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
                  "entryPoint": 3694,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_t_stringliteral_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3_to_t_string_memory_ptr_fromStack": {
                  "entryPoint": 4771,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_t_uint256_to_t_uint256_fromStack": {
                  "entryPoint": 4101,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_t_uint8_to_t_uint8_fromStack": {
                  "entryPoint": 4348,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": 4543,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": 4978,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": 4029,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3751,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 4806,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": 4225,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_int256__to_t_uint256_t_int256__fromStack_reversed": {
                  "entryPoint": 4937,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_int256_t_address_t_uint256__to_t_uint256_t_int256_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": 4156,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": 4363,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_unbounded": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_length_t_string_memory_ptr": {
                  "entryPoint": 3607,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
                  "entryPoint": 3618,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 4885,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "cleanup_t_address": {
                  "entryPoint": 3822,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "cleanup_t_bool": {
                  "entryPoint": 4002,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "cleanup_t_int256": {
                  "entryPoint": 4116,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "cleanup_t_uint160": {
                  "entryPoint": 3790,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "cleanup_t_uint256": {
                  "entryPoint": 3884,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "cleanup_t_uint8": {
                  "entryPoint": 4335,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory_with_cleanup": {
                  "entryPoint": 3635,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "extract_byte_array_length": {
                  "entryPoint": 4681,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 4838,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x22": {
                  "entryPoint": 4634,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
                  "entryPoint": 3785,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "round_up_to_mul_of_32": {
                  "entryPoint": 3677,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "store_literal_in_memory_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3": {
                  "entryPoint": 4730,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_t_address": {
                  "entryPoint": 3840,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_t_int256": {
                  "entryPoint": 4390,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_t_uint256": {
                  "entryPoint": 3894,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nativeSrc": "0:10509:6",
                    "nodeType": "YulBlock",
                    "src": "0:10509:6",
                    "statements": [
                      {
                        "body": {
                          "nativeSrc": "66:40:6",
                          "nodeType": "YulBlock",
                          "src": "66:40:6",
                          "statements": [
                            {
                              "nativeSrc": "77:22:6",
                              "nodeType": "YulAssignment",
                              "src": "77:22:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "93:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "93:5:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "87:5:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "87:5:6"
                                },
                                "nativeSrc": "87:12:6",
                                "nodeType": "YulFunctionCall",
                                "src": "87:12:6"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nativeSrc": "77:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "77:6:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_length_t_string_memory_ptr",
                        "nativeSrc": "7:99:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "49:5:6",
                            "nodeType": "YulTypedName",
                            "src": "49:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nativeSrc": "59:6:6",
                            "nodeType": "YulTypedName",
                            "src": "59:6:6",
                            "type": ""
                          }
                        ],
                        "src": "7:99:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "208:73:6",
                          "nodeType": "YulBlock",
                          "src": "208:73:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "225:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "225:3:6"
                                  },
                                  {
                                    "name": "length",
                                    "nativeSrc": "230:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "230:6:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "218:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "218:6:6"
                                },
                                "nativeSrc": "218:19:6",
                                "nodeType": "YulFunctionCall",
                                "src": "218:19:6"
                              },
                              "nativeSrc": "218:19:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "218:19:6"
                            },
                            {
                              "nativeSrc": "246:29:6",
                              "nodeType": "YulAssignment",
                              "src": "246:29:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "265:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "265:3:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "270:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "270:4:6",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "261:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "261:3:6"
                                },
                                "nativeSrc": "261:14:6",
                                "nodeType": "YulFunctionCall",
                                "src": "261:14:6"
                              },
                              "variableNames": [
                                {
                                  "name": "updated_pos",
                                  "nativeSrc": "246:11:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "246:11:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                        "nativeSrc": "112:169:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nativeSrc": "180:3:6",
                            "nodeType": "YulTypedName",
                            "src": "180:3:6",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nativeSrc": "185:6:6",
                            "nodeType": "YulTypedName",
                            "src": "185:6:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "updated_pos",
                            "nativeSrc": "196:11:6",
                            "nodeType": "YulTypedName",
                            "src": "196:11:6",
                            "type": ""
                          }
                        ],
                        "src": "112:169:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "349:184:6",
                          "nodeType": "YulBlock",
                          "src": "349:184:6",
                          "statements": [
                            {
                              "nativeSrc": "359:10:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "359:10:6",
                              "value": {
                                "kind": "number",
                                "nativeSrc": "368:1:6",
                                "nodeType": "YulLiteral",
                                "src": "368:1:6",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nativeSrc": "363:1:6",
                                  "nodeType": "YulTypedName",
                                  "src": "363:1:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nativeSrc": "428:63:6",
                                "nodeType": "YulBlock",
                                "src": "428:63:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nativeSrc": "453:3:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "453:3:6"
                                            },
                                            {
                                              "name": "i",
                                              "nativeSrc": "458:1:6",
                                              "nodeType": "YulIdentifier",
                                              "src": "458:1:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nativeSrc": "449:3:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "449:3:6"
                                          },
                                          "nativeSrc": "449:11:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "449:11:6"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nativeSrc": "472:3:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "472:3:6"
                                                },
                                                {
                                                  "name": "i",
                                                  "nativeSrc": "477:1:6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "477:1:6"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nativeSrc": "468:3:6",
                                                "nodeType": "YulIdentifier",
                                                "src": "468:3:6"
                                              },
                                              "nativeSrc": "468:11:6",
                                              "nodeType": "YulFunctionCall",
                                              "src": "468:11:6"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "462:5:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "462:5:6"
                                          },
                                          "nativeSrc": "462:18:6",
                                          "nodeType": "YulFunctionCall",
                                          "src": "462:18:6"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nativeSrc": "442:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "442:6:6"
                                      },
                                      "nativeSrc": "442:39:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "442:39:6"
                                    },
                                    "nativeSrc": "442:39:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "442:39:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nativeSrc": "389:1:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "389:1:6"
                                  },
                                  {
                                    "name": "length",
                                    "nativeSrc": "392:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "392:6:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nativeSrc": "386:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "386:2:6"
                                },
                                "nativeSrc": "386:13:6",
                                "nodeType": "YulFunctionCall",
                                "src": "386:13:6"
                              },
                              "nativeSrc": "378:113:6",
                              "nodeType": "YulForLoop",
                              "post": {
                                "nativeSrc": "400:19:6",
                                "nodeType": "YulBlock",
                                "src": "400:19:6",
                                "statements": [
                                  {
                                    "nativeSrc": "402:15:6",
                                    "nodeType": "YulAssignment",
                                    "src": "402:15:6",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nativeSrc": "411:1:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "411:1:6"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "414:2:6",
                                          "nodeType": "YulLiteral",
                                          "src": "414:2:6",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "407:3:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "407:3:6"
                                      },
                                      "nativeSrc": "407:10:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "407:10:6"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nativeSrc": "402:1:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "402:1:6"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nativeSrc": "382:3:6",
                                "nodeType": "YulBlock",
                                "src": "382:3:6",
                                "statements": []
                              },
                              "src": "378:113:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dst",
                                        "nativeSrc": "511:3:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "511:3:6"
                                      },
                                      {
                                        "name": "length",
                                        "nativeSrc": "516:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "516:6:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "507:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "507:3:6"
                                    },
                                    "nativeSrc": "507:16:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "507:16:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "525:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "525:1:6",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "500:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "500:6:6"
                                },
                                "nativeSrc": "500:27:6",
                                "nodeType": "YulFunctionCall",
                                "src": "500:27:6"
                              },
                              "nativeSrc": "500:27:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "500:27:6"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory_with_cleanup",
                        "nativeSrc": "287:246:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nativeSrc": "331:3:6",
                            "nodeType": "YulTypedName",
                            "src": "331:3:6",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nativeSrc": "336:3:6",
                            "nodeType": "YulTypedName",
                            "src": "336:3:6",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nativeSrc": "341:6:6",
                            "nodeType": "YulTypedName",
                            "src": "341:6:6",
                            "type": ""
                          }
                        ],
                        "src": "287:246:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "587:54:6",
                          "nodeType": "YulBlock",
                          "src": "587:54:6",
                          "statements": [
                            {
                              "nativeSrc": "597:38:6",
                              "nodeType": "YulAssignment",
                              "src": "597:38:6",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "615:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "615:5:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "622:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "622:2:6",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "611:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "611:3:6"
                                    },
                                    "nativeSrc": "611:14:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "611:14:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "631:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "631:2:6",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "627:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "627:3:6"
                                    },
                                    "nativeSrc": "627:7:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "627:7:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "607:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "607:3:6"
                                },
                                "nativeSrc": "607:28:6",
                                "nodeType": "YulFunctionCall",
                                "src": "607:28:6"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nativeSrc": "597:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "597:6:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "round_up_to_mul_of_32",
                        "nativeSrc": "539:102:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "570:5:6",
                            "nodeType": "YulTypedName",
                            "src": "570:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "result",
                            "nativeSrc": "580:6:6",
                            "nodeType": "YulTypedName",
                            "src": "580:6:6",
                            "type": ""
                          }
                        ],
                        "src": "539:102:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "739:285:6",
                          "nodeType": "YulBlock",
                          "src": "739:285:6",
                          "statements": [
                            {
                              "nativeSrc": "749:53:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "749:53:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "796:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "796:5:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_length_t_string_memory_ptr",
                                  "nativeSrc": "763:32:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "763:32:6"
                                },
                                "nativeSrc": "763:39:6",
                                "nodeType": "YulFunctionCall",
                                "src": "763:39:6"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nativeSrc": "753:6:6",
                                  "nodeType": "YulTypedName",
                                  "src": "753:6:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "811:78:6",
                              "nodeType": "YulAssignment",
                              "src": "811:78:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "877:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "877:3:6"
                                  },
                                  {
                                    "name": "length",
                                    "nativeSrc": "882:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "882:6:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                  "nativeSrc": "818:58:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "818:58:6"
                                },
                                "nativeSrc": "818:71:6",
                                "nodeType": "YulFunctionCall",
                                "src": "818:71:6"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nativeSrc": "811:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "811:3:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "937:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "937:5:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "944:4:6",
                                        "nodeType": "YulLiteral",
                                        "src": "944:4:6",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "933:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "933:3:6"
                                    },
                                    "nativeSrc": "933:16:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "933:16:6"
                                  },
                                  {
                                    "name": "pos",
                                    "nativeSrc": "951:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "951:3:6"
                                  },
                                  {
                                    "name": "length",
                                    "nativeSrc": "956:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "956:6:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory_with_cleanup",
                                  "nativeSrc": "898:34:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "898:34:6"
                                },
                                "nativeSrc": "898:65:6",
                                "nodeType": "YulFunctionCall",
                                "src": "898:65:6"
                              },
                              "nativeSrc": "898:65:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "898:65:6"
                            },
                            {
                              "nativeSrc": "972:46:6",
                              "nodeType": "YulAssignment",
                              "src": "972:46:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "983:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "983:3:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "1010:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "1010:6:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "round_up_to_mul_of_32",
                                      "nativeSrc": "988:21:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "988:21:6"
                                    },
                                    "nativeSrc": "988:29:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "988:29:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "979:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "979:3:6"
                                },
                                "nativeSrc": "979:39:6",
                                "nodeType": "YulFunctionCall",
                                "src": "979:39:6"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nativeSrc": "972:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "972:3:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
                        "nativeSrc": "647:377:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "720:5:6",
                            "nodeType": "YulTypedName",
                            "src": "720:5:6",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nativeSrc": "727:3:6",
                            "nodeType": "YulTypedName",
                            "src": "727:3:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nativeSrc": "735:3:6",
                            "nodeType": "YulTypedName",
                            "src": "735:3:6",
                            "type": ""
                          }
                        ],
                        "src": "647:377:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1148:195:6",
                          "nodeType": "YulBlock",
                          "src": "1148:195:6",
                          "statements": [
                            {
                              "nativeSrc": "1158:26:6",
                              "nodeType": "YulAssignment",
                              "src": "1158:26:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nativeSrc": "1170:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1170:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1181:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1181:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "1166:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1166:3:6"
                                },
                                "nativeSrc": "1166:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1166:18:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "1158:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1158:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "1205:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "1205:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1216:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "1216:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "1201:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "1201:3:6"
                                    },
                                    "nativeSrc": "1201:17:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1201:17:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail",
                                        "nativeSrc": "1224:4:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "1224:4:6"
                                      },
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "1230:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "1230:9:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "1220:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "1220:3:6"
                                    },
                                    "nativeSrc": "1220:20:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1220:20:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "1194:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1194:6:6"
                                },
                                "nativeSrc": "1194:47:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1194:47:6"
                              },
                              "nativeSrc": "1194:47:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "1194:47:6"
                            },
                            {
                              "nativeSrc": "1250:86:6",
                              "nodeType": "YulAssignment",
                              "src": "1250:86:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "1322:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1322:6:6"
                                  },
                                  {
                                    "name": "tail",
                                    "nativeSrc": "1331:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1331:4:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
                                  "nativeSrc": "1258:63:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1258:63:6"
                                },
                                "nativeSrc": "1258:78:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1258:78:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "1250:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1250:4:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nativeSrc": "1030:313:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1120:9:6",
                            "nodeType": "YulTypedName",
                            "src": "1120:9:6",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nativeSrc": "1132:6:6",
                            "nodeType": "YulTypedName",
                            "src": "1132:6:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nativeSrc": "1143:4:6",
                            "nodeType": "YulTypedName",
                            "src": "1143:4:6",
                            "type": ""
                          }
                        ],
                        "src": "1030:313:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1389:35:6",
                          "nodeType": "YulBlock",
                          "src": "1389:35:6",
                          "statements": [
                            {
                              "nativeSrc": "1399:19:6",
                              "nodeType": "YulAssignment",
                              "src": "1399:19:6",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1415:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1415:2:6",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "1409:5:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1409:5:6"
                                },
                                "nativeSrc": "1409:9:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1409:9:6"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nativeSrc": "1399:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1399:6:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "allocate_unbounded",
                        "nativeSrc": "1349:75:6",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "1382:6:6",
                            "nodeType": "YulTypedName",
                            "src": "1382:6:6",
                            "type": ""
                          }
                        ],
                        "src": "1349:75:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1519:28:6",
                          "nodeType": "YulBlock",
                          "src": "1519:28:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1536:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1536:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1539:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1539:1:6",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "1529:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1529:6:6"
                                },
                                "nativeSrc": "1529:12:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1529:12:6"
                              },
                              "nativeSrc": "1529:12:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "1529:12:6"
                            }
                          ]
                        },
                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                        "nativeSrc": "1430:117:6",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1430:117:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1642:28:6",
                          "nodeType": "YulBlock",
                          "src": "1642:28:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1659:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1659:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1662:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1662:1:6",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "1652:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1652:6:6"
                                },
                                "nativeSrc": "1652:12:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1652:12:6"
                              },
                              "nativeSrc": "1652:12:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "1652:12:6"
                            }
                          ]
                        },
                        "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
                        "nativeSrc": "1553:117:6",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1553:117:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1721:81:6",
                          "nodeType": "YulBlock",
                          "src": "1721:81:6",
                          "statements": [
                            {
                              "nativeSrc": "1731:65:6",
                              "nodeType": "YulAssignment",
                              "src": "1731:65:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "1746:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1746:5:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1753:42:6",
                                    "nodeType": "YulLiteral",
                                    "src": "1753:42:6",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "1742:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1742:3:6"
                                },
                                "nativeSrc": "1742:54:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1742:54:6"
                              },
                              "variableNames": [
                                {
                                  "name": "cleaned",
                                  "nativeSrc": "1731:7:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1731:7:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "cleanup_t_uint160",
                        "nativeSrc": "1676:126:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "1703:5:6",
                            "nodeType": "YulTypedName",
                            "src": "1703:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "cleaned",
                            "nativeSrc": "1713:7:6",
                            "nodeType": "YulTypedName",
                            "src": "1713:7:6",
                            "type": ""
                          }
                        ],
                        "src": "1676:126:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1853:51:6",
                          "nodeType": "YulBlock",
                          "src": "1853:51:6",
                          "statements": [
                            {
                              "nativeSrc": "1863:35:6",
                              "nodeType": "YulAssignment",
                              "src": "1863:35:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "1892:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "1892:5:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "cleanup_t_uint160",
                                  "nativeSrc": "1874:17:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1874:17:6"
                                },
                                "nativeSrc": "1874:24:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1874:24:6"
                              },
                              "variableNames": [
                                {
                                  "name": "cleaned",
                                  "nativeSrc": "1863:7:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1863:7:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "cleanup_t_address",
                        "nativeSrc": "1808:96:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "1835:5:6",
                            "nodeType": "YulTypedName",
                            "src": "1835:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "cleaned",
                            "nativeSrc": "1845:7:6",
                            "nodeType": "YulTypedName",
                            "src": "1845:7:6",
                            "type": ""
                          }
                        ],
                        "src": "1808:96:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "1953:79:6",
                          "nodeType": "YulBlock",
                          "src": "1953:79:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "2010:16:6",
                                "nodeType": "YulBlock",
                                "src": "2010:16:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2019:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "2019:1:6",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2022:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "2022:1:6",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nativeSrc": "2012:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2012:6:6"
                                      },
                                      "nativeSrc": "2012:12:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2012:12:6"
                                    },
                                    "nativeSrc": "2012:12:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2012:12:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "1976:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "1976:5:6"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nativeSrc": "2001:5:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "2001:5:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "cleanup_t_address",
                                          "nativeSrc": "1983:17:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "1983:17:6"
                                        },
                                        "nativeSrc": "1983:24:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "1983:24:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nativeSrc": "1973:2:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "1973:2:6"
                                    },
                                    "nativeSrc": "1973:35:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1973:35:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "1966:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1966:6:6"
                                },
                                "nativeSrc": "1966:43:6",
                                "nodeType": "YulFunctionCall",
                                "src": "1966:43:6"
                              },
                              "nativeSrc": "1963:63:6",
                              "nodeType": "YulIf",
                              "src": "1963:63:6"
                            }
                          ]
                        },
                        "name": "validator_revert_t_address",
                        "nativeSrc": "1910:122:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "1946:5:6",
                            "nodeType": "YulTypedName",
                            "src": "1946:5:6",
                            "type": ""
                          }
                        ],
                        "src": "1910:122:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2090:87:6",
                          "nodeType": "YulBlock",
                          "src": "2090:87:6",
                          "statements": [
                            {
                              "nativeSrc": "2100:29:6",
                              "nodeType": "YulAssignment",
                              "src": "2100:29:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nativeSrc": "2122:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2122:6:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nativeSrc": "2109:12:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2109:12:6"
                                },
                                "nativeSrc": "2109:20:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2109:20:6"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nativeSrc": "2100:5:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2100:5:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "2165:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2165:5:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nativeSrc": "2138:26:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2138:26:6"
                                },
                                "nativeSrc": "2138:33:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2138:33:6"
                              },
                              "nativeSrc": "2138:33:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "2138:33:6"
                            }
                          ]
                        },
                        "name": "abi_decode_t_address",
                        "nativeSrc": "2038:139:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nativeSrc": "2068:6:6",
                            "nodeType": "YulTypedName",
                            "src": "2068:6:6",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nativeSrc": "2076:3:6",
                            "nodeType": "YulTypedName",
                            "src": "2076:3:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nativeSrc": "2084:5:6",
                            "nodeType": "YulTypedName",
                            "src": "2084:5:6",
                            "type": ""
                          }
                        ],
                        "src": "2038:139:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2228:32:6",
                          "nodeType": "YulBlock",
                          "src": "2228:32:6",
                          "statements": [
                            {
                              "nativeSrc": "2238:16:6",
                              "nodeType": "YulAssignment",
                              "src": "2238:16:6",
                              "value": {
                                "name": "value",
                                "nativeSrc": "2249:5:6",
                                "nodeType": "YulIdentifier",
                                "src": "2249:5:6"
                              },
                              "variableNames": [
                                {
                                  "name": "cleaned",
                                  "nativeSrc": "2238:7:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2238:7:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "cleanup_t_uint256",
                        "nativeSrc": "2183:77:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "2210:5:6",
                            "nodeType": "YulTypedName",
                            "src": "2210:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "cleaned",
                            "nativeSrc": "2220:7:6",
                            "nodeType": "YulTypedName",
                            "src": "2220:7:6",
                            "type": ""
                          }
                        ],
                        "src": "2183:77:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2309:79:6",
                          "nodeType": "YulBlock",
                          "src": "2309:79:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "2366:16:6",
                                "nodeType": "YulBlock",
                                "src": "2366:16:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2375:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "2375:1:6",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2378:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "2378:1:6",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nativeSrc": "2368:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2368:6:6"
                                      },
                                      "nativeSrc": "2368:12:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2368:12:6"
                                    },
                                    "nativeSrc": "2368:12:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2368:12:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "2332:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2332:5:6"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nativeSrc": "2357:5:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "2357:5:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "cleanup_t_uint256",
                                          "nativeSrc": "2339:17:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "2339:17:6"
                                        },
                                        "nativeSrc": "2339:24:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2339:24:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nativeSrc": "2329:2:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "2329:2:6"
                                    },
                                    "nativeSrc": "2329:35:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2329:35:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "2322:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2322:6:6"
                                },
                                "nativeSrc": "2322:43:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2322:43:6"
                              },
                              "nativeSrc": "2319:63:6",
                              "nodeType": "YulIf",
                              "src": "2319:63:6"
                            }
                          ]
                        },
                        "name": "validator_revert_t_uint256",
                        "nativeSrc": "2266:122:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "2302:5:6",
                            "nodeType": "YulTypedName",
                            "src": "2302:5:6",
                            "type": ""
                          }
                        ],
                        "src": "2266:122:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2446:87:6",
                          "nodeType": "YulBlock",
                          "src": "2446:87:6",
                          "statements": [
                            {
                              "nativeSrc": "2456:29:6",
                              "nodeType": "YulAssignment",
                              "src": "2456:29:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nativeSrc": "2478:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2478:6:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nativeSrc": "2465:12:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2465:12:6"
                                },
                                "nativeSrc": "2465:20:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2465:20:6"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nativeSrc": "2456:5:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2456:5:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "2521:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "2521:5:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_uint256",
                                  "nativeSrc": "2494:26:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2494:26:6"
                                },
                                "nativeSrc": "2494:33:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2494:33:6"
                              },
                              "nativeSrc": "2494:33:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "2494:33:6"
                            }
                          ]
                        },
                        "name": "abi_decode_t_uint256",
                        "nativeSrc": "2394:139:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nativeSrc": "2424:6:6",
                            "nodeType": "YulTypedName",
                            "src": "2424:6:6",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nativeSrc": "2432:3:6",
                            "nodeType": "YulTypedName",
                            "src": "2432:3:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nativeSrc": "2440:5:6",
                            "nodeType": "YulTypedName",
                            "src": "2440:5:6",
                            "type": ""
                          }
                        ],
                        "src": "2394:139:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "2622:391:6",
                          "nodeType": "YulBlock",
                          "src": "2622:391:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "2668:83:6",
                                "nodeType": "YulBlock",
                                "src": "2668:83:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                        "nativeSrc": "2670:77:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2670:77:6"
                                      },
                                      "nativeSrc": "2670:79:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2670:79:6"
                                    },
                                    "nativeSrc": "2670:79:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2670:79:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "2643:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2643:7:6"
                                      },
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "2652:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2652:9:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "2639:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "2639:3:6"
                                    },
                                    "nativeSrc": "2639:23:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2639:23:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2664:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "2664:2:6",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nativeSrc": "2635:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "2635:3:6"
                                },
                                "nativeSrc": "2635:32:6",
                                "nodeType": "YulFunctionCall",
                                "src": "2635:32:6"
                              },
                              "nativeSrc": "2632:119:6",
                              "nodeType": "YulIf",
                              "src": "2632:119:6"
                            },
                            {
                              "nativeSrc": "2761:117:6",
                              "nodeType": "YulBlock",
                              "src": "2761:117:6",
                              "statements": [
                                {
                                  "nativeSrc": "2776:15:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "2776:15:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "2790:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "2790:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "2780:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "2780:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "2805:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "2805:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "2840:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "2840:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "2851:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "2851:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "2836:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "2836:3:6"
                                        },
                                        "nativeSrc": "2836:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2836:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "2860:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2860:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_address",
                                      "nativeSrc": "2815:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "2815:20:6"
                                    },
                                    "nativeSrc": "2815:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2815:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value0",
                                      "nativeSrc": "2805:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "2805:6:6"
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "nativeSrc": "2888:118:6",
                              "nodeType": "YulBlock",
                              "src": "2888:118:6",
                              "statements": [
                                {
                                  "nativeSrc": "2903:16:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "2903:16:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "2917:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "2917:2:6",
                                    "type": "",
                                    "value": "32"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "2907:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "2907:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "2933:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "2933:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "2968:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "2968:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "2979:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "2979:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "2964:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "2964:3:6"
                                        },
                                        "nativeSrc": "2964:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2964:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "2988:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "2988:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_uint256",
                                      "nativeSrc": "2943:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "2943:20:6"
                                    },
                                    "nativeSrc": "2943:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2943:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value1",
                                      "nativeSrc": "2933:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "2933:6:6"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nativeSrc": "2539:474:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2584:9:6",
                            "nodeType": "YulTypedName",
                            "src": "2584:9:6",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "2595:7:6",
                            "nodeType": "YulTypedName",
                            "src": "2595:7:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nativeSrc": "2607:6:6",
                            "nodeType": "YulTypedName",
                            "src": "2607:6:6",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nativeSrc": "2615:6:6",
                            "nodeType": "YulTypedName",
                            "src": "2615:6:6",
                            "type": ""
                          }
                        ],
                        "src": "2539:474:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3061:48:6",
                          "nodeType": "YulBlock",
                          "src": "3061:48:6",
                          "statements": [
                            {
                              "nativeSrc": "3071:32:6",
                              "nodeType": "YulAssignment",
                              "src": "3071:32:6",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "3096:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3096:5:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nativeSrc": "3089:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "3089:6:6"
                                    },
                                    "nativeSrc": "3089:13:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3089:13:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "3082:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3082:6:6"
                                },
                                "nativeSrc": "3082:21:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3082:21:6"
                              },
                              "variableNames": [
                                {
                                  "name": "cleaned",
                                  "nativeSrc": "3071:7:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3071:7:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "cleanup_t_bool",
                        "nativeSrc": "3019:90:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "3043:5:6",
                            "nodeType": "YulTypedName",
                            "src": "3043:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "cleaned",
                            "nativeSrc": "3053:7:6",
                            "nodeType": "YulTypedName",
                            "src": "3053:7:6",
                            "type": ""
                          }
                        ],
                        "src": "3019:90:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3174:50:6",
                          "nodeType": "YulBlock",
                          "src": "3174:50:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "3191:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3191:3:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "3211:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3211:5:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "cleanup_t_bool",
                                      "nativeSrc": "3196:14:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "3196:14:6"
                                    },
                                    "nativeSrc": "3196:21:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3196:21:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "3184:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3184:6:6"
                                },
                                "nativeSrc": "3184:34:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3184:34:6"
                              },
                              "nativeSrc": "3184:34:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "3184:34:6"
                            }
                          ]
                        },
                        "name": "abi_encode_t_bool_to_t_bool_fromStack",
                        "nativeSrc": "3115:109:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "3162:5:6",
                            "nodeType": "YulTypedName",
                            "src": "3162:5:6",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nativeSrc": "3169:3:6",
                            "nodeType": "YulTypedName",
                            "src": "3169:3:6",
                            "type": ""
                          }
                        ],
                        "src": "3115:109:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3322:118:6",
                          "nodeType": "YulBlock",
                          "src": "3322:118:6",
                          "statements": [
                            {
                              "nativeSrc": "3332:26:6",
                              "nodeType": "YulAssignment",
                              "src": "3332:26:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nativeSrc": "3344:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3344:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3355:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "3355:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "3340:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3340:3:6"
                                },
                                "nativeSrc": "3340:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3340:18:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "3332:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3332:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "3406:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3406:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "3419:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3419:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "3430:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "3430:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "3415:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "3415:3:6"
                                    },
                                    "nativeSrc": "3415:17:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3415:17:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_bool_to_t_bool_fromStack",
                                  "nativeSrc": "3368:37:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3368:37:6"
                                },
                                "nativeSrc": "3368:65:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3368:65:6"
                              },
                              "nativeSrc": "3368:65:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "3368:65:6"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nativeSrc": "3230:210:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3294:9:6",
                            "nodeType": "YulTypedName",
                            "src": "3294:9:6",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nativeSrc": "3306:6:6",
                            "nodeType": "YulTypedName",
                            "src": "3306:6:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nativeSrc": "3317:4:6",
                            "nodeType": "YulTypedName",
                            "src": "3317:4:6",
                            "type": ""
                          }
                        ],
                        "src": "3230:210:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3512:263:6",
                          "nodeType": "YulBlock",
                          "src": "3512:263:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "3558:83:6",
                                "nodeType": "YulBlock",
                                "src": "3558:83:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                        "nativeSrc": "3560:77:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3560:77:6"
                                      },
                                      "nativeSrc": "3560:79:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "3560:79:6"
                                    },
                                    "nativeSrc": "3560:79:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3560:79:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "3533:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3533:7:6"
                                      },
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "3542:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3542:9:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "3529:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "3529:3:6"
                                    },
                                    "nativeSrc": "3529:23:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3529:23:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3554:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "3554:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nativeSrc": "3525:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3525:3:6"
                                },
                                "nativeSrc": "3525:32:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3525:32:6"
                              },
                              "nativeSrc": "3522:119:6",
                              "nodeType": "YulIf",
                              "src": "3522:119:6"
                            },
                            {
                              "nativeSrc": "3651:117:6",
                              "nodeType": "YulBlock",
                              "src": "3651:117:6",
                              "statements": [
                                {
                                  "nativeSrc": "3666:15:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "3666:15:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "3680:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "3680:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "3670:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "3670:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "3695:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "3695:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "3730:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "3730:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "3741:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "3741:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "3726:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "3726:3:6"
                                        },
                                        "nativeSrc": "3726:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "3726:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "3750:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3750:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_uint256",
                                      "nativeSrc": "3705:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "3705:20:6"
                                    },
                                    "nativeSrc": "3705:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3705:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value0",
                                      "nativeSrc": "3695:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "3695:6:6"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nativeSrc": "3446:329:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3482:9:6",
                            "nodeType": "YulTypedName",
                            "src": "3482:9:6",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "3493:7:6",
                            "nodeType": "YulTypedName",
                            "src": "3493:7:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nativeSrc": "3505:6:6",
                            "nodeType": "YulTypedName",
                            "src": "3505:6:6",
                            "type": ""
                          }
                        ],
                        "src": "3446:329:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3846:53:6",
                          "nodeType": "YulBlock",
                          "src": "3846:53:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "3863:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "3863:3:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "3886:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "3886:5:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "cleanup_t_uint256",
                                      "nativeSrc": "3868:17:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "3868:17:6"
                                    },
                                    "nativeSrc": "3868:24:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3868:24:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "3856:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3856:6:6"
                                },
                                "nativeSrc": "3856:37:6",
                                "nodeType": "YulFunctionCall",
                                "src": "3856:37:6"
                              },
                              "nativeSrc": "3856:37:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "3856:37:6"
                            }
                          ]
                        },
                        "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                        "nativeSrc": "3781:118:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "3834:5:6",
                            "nodeType": "YulTypedName",
                            "src": "3834:5:6",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nativeSrc": "3841:3:6",
                            "nodeType": "YulTypedName",
                            "src": "3841:3:6",
                            "type": ""
                          }
                        ],
                        "src": "3781:118:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "3949:32:6",
                          "nodeType": "YulBlock",
                          "src": "3949:32:6",
                          "statements": [
                            {
                              "nativeSrc": "3959:16:6",
                              "nodeType": "YulAssignment",
                              "src": "3959:16:6",
                              "value": {
                                "name": "value",
                                "nativeSrc": "3970:5:6",
                                "nodeType": "YulIdentifier",
                                "src": "3970:5:6"
                              },
                              "variableNames": [
                                {
                                  "name": "cleaned",
                                  "nativeSrc": "3959:7:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3959:7:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "cleanup_t_int256",
                        "nativeSrc": "3905:76:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "3931:5:6",
                            "nodeType": "YulTypedName",
                            "src": "3931:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "cleaned",
                            "nativeSrc": "3941:7:6",
                            "nodeType": "YulTypedName",
                            "src": "3941:7:6",
                            "type": ""
                          }
                        ],
                        "src": "3905:76:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "4050:52:6",
                          "nodeType": "YulBlock",
                          "src": "4050:52:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "4067:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4067:3:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "4089:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4089:5:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "cleanup_t_int256",
                                      "nativeSrc": "4072:16:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "4072:16:6"
                                    },
                                    "nativeSrc": "4072:23:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4072:23:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "4060:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4060:6:6"
                                },
                                "nativeSrc": "4060:36:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4060:36:6"
                              },
                              "nativeSrc": "4060:36:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "4060:36:6"
                            }
                          ]
                        },
                        "name": "abi_encode_t_int256_to_t_int256_fromStack",
                        "nativeSrc": "3987:115:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "4038:5:6",
                            "nodeType": "YulTypedName",
                            "src": "4038:5:6",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nativeSrc": "4045:3:6",
                            "nodeType": "YulTypedName",
                            "src": "4045:3:6",
                            "type": ""
                          }
                        ],
                        "src": "3987:115:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "4173:53:6",
                          "nodeType": "YulBlock",
                          "src": "4173:53:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "4190:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4190:3:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "4213:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4213:5:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "cleanup_t_address",
                                      "nativeSrc": "4195:17:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "4195:17:6"
                                    },
                                    "nativeSrc": "4195:24:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4195:24:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "4183:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4183:6:6"
                                },
                                "nativeSrc": "4183:37:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4183:37:6"
                              },
                              "nativeSrc": "4183:37:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "4183:37:6"
                            }
                          ]
                        },
                        "name": "abi_encode_t_address_to_t_address_fromStack",
                        "nativeSrc": "4108:118:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "4161:5:6",
                            "nodeType": "YulTypedName",
                            "src": "4161:5:6",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nativeSrc": "4168:3:6",
                            "nodeType": "YulTypedName",
                            "src": "4168:3:6",
                            "type": ""
                          }
                        ],
                        "src": "4108:118:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "4412:369:6",
                          "nodeType": "YulBlock",
                          "src": "4412:369:6",
                          "statements": [
                            {
                              "nativeSrc": "4422:27:6",
                              "nodeType": "YulAssignment",
                              "src": "4422:27:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nativeSrc": "4434:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4434:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4445:3:6",
                                    "nodeType": "YulLiteral",
                                    "src": "4445:3:6",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "4430:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4430:3:6"
                                },
                                "nativeSrc": "4430:19:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4430:19:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "4422:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4422:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "4503:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4503:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "4516:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4516:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4527:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "4527:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4512:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "4512:3:6"
                                    },
                                    "nativeSrc": "4512:17:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4512:17:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                  "nativeSrc": "4459:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4459:43:6"
                                },
                                "nativeSrc": "4459:71:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4459:71:6"
                              },
                              "nativeSrc": "4459:71:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "4459:71:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nativeSrc": "4582:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4582:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "4595:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4595:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4606:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "4606:2:6",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4591:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "4591:3:6"
                                    },
                                    "nativeSrc": "4591:18:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4591:18:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_int256_to_t_int256_fromStack",
                                  "nativeSrc": "4540:41:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4540:41:6"
                                },
                                "nativeSrc": "4540:70:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4540:70:6"
                              },
                              "nativeSrc": "4540:70:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "4540:70:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nativeSrc": "4664:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4664:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "4677:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4677:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4688:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "4688:2:6",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4673:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "4673:3:6"
                                    },
                                    "nativeSrc": "4673:18:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4673:18:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_address_to_t_address_fromStack",
                                  "nativeSrc": "4620:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4620:43:6"
                                },
                                "nativeSrc": "4620:72:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4620:72:6"
                              },
                              "nativeSrc": "4620:72:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "4620:72:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nativeSrc": "4746:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4746:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "4759:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4759:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4770:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "4770:2:6",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4755:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "4755:3:6"
                                    },
                                    "nativeSrc": "4755:18:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4755:18:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                  "nativeSrc": "4702:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4702:43:6"
                                },
                                "nativeSrc": "4702:72:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4702:72:6"
                              },
                              "nativeSrc": "4702:72:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "4702:72:6"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_int256_t_address_t_uint256__to_t_uint256_t_int256_t_address_t_uint256__fromStack_reversed",
                        "nativeSrc": "4232:549:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4360:9:6",
                            "nodeType": "YulTypedName",
                            "src": "4360:9:6",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nativeSrc": "4372:6:6",
                            "nodeType": "YulTypedName",
                            "src": "4372:6:6",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nativeSrc": "4380:6:6",
                            "nodeType": "YulTypedName",
                            "src": "4380:6:6",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nativeSrc": "4388:6:6",
                            "nodeType": "YulTypedName",
                            "src": "4388:6:6",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nativeSrc": "4396:6:6",
                            "nodeType": "YulTypedName",
                            "src": "4396:6:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nativeSrc": "4407:4:6",
                            "nodeType": "YulTypedName",
                            "src": "4407:4:6",
                            "type": ""
                          }
                        ],
                        "src": "4232:549:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "4885:124:6",
                          "nodeType": "YulBlock",
                          "src": "4885:124:6",
                          "statements": [
                            {
                              "nativeSrc": "4895:26:6",
                              "nodeType": "YulAssignment",
                              "src": "4895:26:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nativeSrc": "4907:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4907:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4918:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "4918:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "4903:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4903:3:6"
                                },
                                "nativeSrc": "4903:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4903:18:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "4895:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4895:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "4975:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "4975:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "4988:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "4988:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4999:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "4999:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4984:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "4984:3:6"
                                    },
                                    "nativeSrc": "4984:17:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4984:17:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                  "nativeSrc": "4931:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4931:43:6"
                                },
                                "nativeSrc": "4931:71:6",
                                "nodeType": "YulFunctionCall",
                                "src": "4931:71:6"
                              },
                              "nativeSrc": "4931:71:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "4931:71:6"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nativeSrc": "4787:222:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4857:9:6",
                            "nodeType": "YulTypedName",
                            "src": "4857:9:6",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nativeSrc": "4869:6:6",
                            "nodeType": "YulTypedName",
                            "src": "4869:6:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nativeSrc": "4880:4:6",
                            "nodeType": "YulTypedName",
                            "src": "4880:4:6",
                            "type": ""
                          }
                        ],
                        "src": "4787:222:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "5115:519:6",
                          "nodeType": "YulBlock",
                          "src": "5115:519:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "5161:83:6",
                                "nodeType": "YulBlock",
                                "src": "5161:83:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                        "nativeSrc": "5163:77:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5163:77:6"
                                      },
                                      "nativeSrc": "5163:79:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "5163:79:6"
                                    },
                                    "nativeSrc": "5163:79:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5163:79:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "5136:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5136:7:6"
                                      },
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "5145:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5145:9:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "5132:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "5132:3:6"
                                    },
                                    "nativeSrc": "5132:23:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5132:23:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5157:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "5157:2:6",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nativeSrc": "5128:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5128:3:6"
                                },
                                "nativeSrc": "5128:32:6",
                                "nodeType": "YulFunctionCall",
                                "src": "5128:32:6"
                              },
                              "nativeSrc": "5125:119:6",
                              "nodeType": "YulIf",
                              "src": "5125:119:6"
                            },
                            {
                              "nativeSrc": "5254:117:6",
                              "nodeType": "YulBlock",
                              "src": "5254:117:6",
                              "statements": [
                                {
                                  "nativeSrc": "5269:15:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "5269:15:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "5283:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "5283:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "5273:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "5273:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "5298:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "5298:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "5333:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "5333:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "5344:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "5344:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "5329:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "5329:3:6"
                                        },
                                        "nativeSrc": "5329:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "5329:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "5353:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_address",
                                      "nativeSrc": "5308:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "5308:20:6"
                                    },
                                    "nativeSrc": "5308:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5308:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value0",
                                      "nativeSrc": "5298:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:6:6"
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "nativeSrc": "5381:118:6",
                              "nodeType": "YulBlock",
                              "src": "5381:118:6",
                              "statements": [
                                {
                                  "nativeSrc": "5396:16:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "5396:16:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "5410:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "5410:2:6",
                                    "type": "",
                                    "value": "32"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "5400:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "5400:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "5426:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "5426:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "5461:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "5461:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "5472:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "5472:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "5457:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "5457:3:6"
                                        },
                                        "nativeSrc": "5457:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "5457:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "5481:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5481:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_address",
                                      "nativeSrc": "5436:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "5436:20:6"
                                    },
                                    "nativeSrc": "5436:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5436:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value1",
                                      "nativeSrc": "5426:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:6:6"
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "nativeSrc": "5509:118:6",
                              "nodeType": "YulBlock",
                              "src": "5509:118:6",
                              "statements": [
                                {
                                  "nativeSrc": "5524:16:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "5524:16:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "5538:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "5538:2:6",
                                    "type": "",
                                    "value": "64"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "5528:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "5528:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "5554:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "5554:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "5589:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "5589:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "5600:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "5600:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "5585:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "5585:3:6"
                                        },
                                        "nativeSrc": "5585:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "5585:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "5609:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5609:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_uint256",
                                      "nativeSrc": "5564:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "5564:20:6"
                                    },
                                    "nativeSrc": "5564:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5564:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value2",
                                      "nativeSrc": "5554:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "5554:6:6"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nativeSrc": "5015:619:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5069:9:6",
                            "nodeType": "YulTypedName",
                            "src": "5069:9:6",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "5080:7:6",
                            "nodeType": "YulTypedName",
                            "src": "5080:7:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nativeSrc": "5092:6:6",
                            "nodeType": "YulTypedName",
                            "src": "5092:6:6",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nativeSrc": "5100:6:6",
                            "nodeType": "YulTypedName",
                            "src": "5100:6:6",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nativeSrc": "5108:6:6",
                            "nodeType": "YulTypedName",
                            "src": "5108:6:6",
                            "type": ""
                          }
                        ],
                        "src": "5015:619:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "5683:43:6",
                          "nodeType": "YulBlock",
                          "src": "5683:43:6",
                          "statements": [
                            {
                              "nativeSrc": "5693:27:6",
                              "nodeType": "YulAssignment",
                              "src": "5693:27:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "5708:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "5708:5:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5715:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "5715:4:6",
                                    "type": "",
                                    "value": "0xff"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "5704:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5704:3:6"
                                },
                                "nativeSrc": "5704:16:6",
                                "nodeType": "YulFunctionCall",
                                "src": "5704:16:6"
                              },
                              "variableNames": [
                                {
                                  "name": "cleaned",
                                  "nativeSrc": "5693:7:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5693:7:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "cleanup_t_uint8",
                        "nativeSrc": "5640:86:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "5665:5:6",
                            "nodeType": "YulTypedName",
                            "src": "5665:5:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "cleaned",
                            "nativeSrc": "5675:7:6",
                            "nodeType": "YulTypedName",
                            "src": "5675:7:6",
                            "type": ""
                          }
                        ],
                        "src": "5640:86:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "5793:51:6",
                          "nodeType": "YulBlock",
                          "src": "5793:51:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "5810:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "5810:3:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "5831:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "5831:5:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "cleanup_t_uint8",
                                      "nativeSrc": "5815:15:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "5815:15:6"
                                    },
                                    "nativeSrc": "5815:22:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5815:22:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "5803:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5803:6:6"
                                },
                                "nativeSrc": "5803:35:6",
                                "nodeType": "YulFunctionCall",
                                "src": "5803:35:6"
                              },
                              "nativeSrc": "5803:35:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "5803:35:6"
                            }
                          ]
                        },
                        "name": "abi_encode_t_uint8_to_t_uint8_fromStack",
                        "nativeSrc": "5732:112:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "5781:5:6",
                            "nodeType": "YulTypedName",
                            "src": "5781:5:6",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nativeSrc": "5788:3:6",
                            "nodeType": "YulTypedName",
                            "src": "5788:3:6",
                            "type": ""
                          }
                        ],
                        "src": "5732:112:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "5944:120:6",
                          "nodeType": "YulBlock",
                          "src": "5944:120:6",
                          "statements": [
                            {
                              "nativeSrc": "5954:26:6",
                              "nodeType": "YulAssignment",
                              "src": "5954:26:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nativeSrc": "5966:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "5966:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5977:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "5977:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "5962:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5962:3:6"
                                },
                                "nativeSrc": "5962:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "5962:18:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "5954:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5954:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "6030:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "6030:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "6043:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6043:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "6054:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "6054:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "6039:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "6039:3:6"
                                    },
                                    "nativeSrc": "6039:17:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "6039:17:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_uint8_to_t_uint8_fromStack",
                                  "nativeSrc": "5990:39:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5990:39:6"
                                },
                                "nativeSrc": "5990:67:6",
                                "nodeType": "YulFunctionCall",
                                "src": "5990:67:6"
                              },
                              "nativeSrc": "5990:67:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "5990:67:6"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nativeSrc": "5850:214:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5916:9:6",
                            "nodeType": "YulTypedName",
                            "src": "5916:9:6",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nativeSrc": "5928:6:6",
                            "nodeType": "YulTypedName",
                            "src": "5928:6:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nativeSrc": "5939:4:6",
                            "nodeType": "YulTypedName",
                            "src": "5939:4:6",
                            "type": ""
                          }
                        ],
                        "src": "5850:214:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "6112:78:6",
                          "nodeType": "YulBlock",
                          "src": "6112:78:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "6168:16:6",
                                "nodeType": "YulBlock",
                                "src": "6168:16:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "6177:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "6177:1:6",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "6180:1:6",
                                          "nodeType": "YulLiteral",
                                          "src": "6180:1:6",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nativeSrc": "6170:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6170:6:6"
                                      },
                                      "nativeSrc": "6170:12:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "6170:12:6"
                                    },
                                    "nativeSrc": "6170:12:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6170:12:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nativeSrc": "6135:5:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6135:5:6"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nativeSrc": "6159:5:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "6159:5:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "cleanup_t_int256",
                                          "nativeSrc": "6142:16:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "6142:16:6"
                                        },
                                        "nativeSrc": "6142:23:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "6142:23:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nativeSrc": "6132:2:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "6132:2:6"
                                    },
                                    "nativeSrc": "6132:34:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "6132:34:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "6125:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "6125:6:6"
                                },
                                "nativeSrc": "6125:42:6",
                                "nodeType": "YulFunctionCall",
                                "src": "6125:42:6"
                              },
                              "nativeSrc": "6122:62:6",
                              "nodeType": "YulIf",
                              "src": "6122:62:6"
                            }
                          ]
                        },
                        "name": "validator_revert_t_int256",
                        "nativeSrc": "6070:120:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nativeSrc": "6105:5:6",
                            "nodeType": "YulTypedName",
                            "src": "6105:5:6",
                            "type": ""
                          }
                        ],
                        "src": "6070:120:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "6247:86:6",
                          "nodeType": "YulBlock",
                          "src": "6247:86:6",
                          "statements": [
                            {
                              "nativeSrc": "6257:29:6",
                              "nodeType": "YulAssignment",
                              "src": "6257:29:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nativeSrc": "6279:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "6279:6:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nativeSrc": "6266:12:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "6266:12:6"
                                },
                                "nativeSrc": "6266:20:6",
                                "nodeType": "YulFunctionCall",
                                "src": "6266:20:6"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nativeSrc": "6257:5:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "6257:5:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "6321:5:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "6321:5:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_int256",
                                  "nativeSrc": "6295:25:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "6295:25:6"
                                },
                                "nativeSrc": "6295:32:6",
                                "nodeType": "YulFunctionCall",
                                "src": "6295:32:6"
                              },
                              "nativeSrc": "6295:32:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "6295:32:6"
                            }
                          ]
                        },
                        "name": "abi_decode_t_int256",
                        "nativeSrc": "6196:137:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nativeSrc": "6225:6:6",
                            "nodeType": "YulTypedName",
                            "src": "6225:6:6",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nativeSrc": "6233:3:6",
                            "nodeType": "YulTypedName",
                            "src": "6233:3:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nativeSrc": "6241:5:6",
                            "nodeType": "YulTypedName",
                            "src": "6241:5:6",
                            "type": ""
                          }
                        ],
                        "src": "6196:137:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "6421:390:6",
                          "nodeType": "YulBlock",
                          "src": "6421:390:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "6467:83:6",
                                "nodeType": "YulBlock",
                                "src": "6467:83:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                        "nativeSrc": "6469:77:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6469:77:6"
                                      },
                                      "nativeSrc": "6469:79:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "6469:79:6"
                                    },
                                    "nativeSrc": "6469:79:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6469:79:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "6442:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6442:7:6"
                                      },
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "6451:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6451:9:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "6438:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "6438:3:6"
                                    },
                                    "nativeSrc": "6438:23:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "6438:23:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "6463:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "6463:2:6",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nativeSrc": "6434:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "6434:3:6"
                                },
                                "nativeSrc": "6434:32:6",
                                "nodeType": "YulFunctionCall",
                                "src": "6434:32:6"
                              },
                              "nativeSrc": "6431:119:6",
                              "nodeType": "YulIf",
                              "src": "6431:119:6"
                            },
                            {
                              "nativeSrc": "6560:117:6",
                              "nodeType": "YulBlock",
                              "src": "6560:117:6",
                              "statements": [
                                {
                                  "nativeSrc": "6575:15:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "6575:15:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "6589:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "6589:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "6579:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "6579:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "6604:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "6604:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "6639:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "6639:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "6650:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "6650:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "6635:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "6635:3:6"
                                        },
                                        "nativeSrc": "6635:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "6635:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "6659:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6659:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_uint256",
                                      "nativeSrc": "6614:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "6614:20:6"
                                    },
                                    "nativeSrc": "6614:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "6614:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value0",
                                      "nativeSrc": "6604:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "6604:6:6"
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "nativeSrc": "6687:117:6",
                              "nodeType": "YulBlock",
                              "src": "6687:117:6",
                              "statements": [
                                {
                                  "nativeSrc": "6702:16:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "6702:16:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "6716:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "6716:2:6",
                                    "type": "",
                                    "value": "32"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "6706:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "6706:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "6732:62:6",
                                  "nodeType": "YulAssignment",
                                  "src": "6732:62:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "6766:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "6766:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "6777:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "6777:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "6762:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "6762:3:6"
                                        },
                                        "nativeSrc": "6762:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "6762:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "6786:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6786:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_int256",
                                      "nativeSrc": "6742:19:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "6742:19:6"
                                    },
                                    "nativeSrc": "6742:52:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "6742:52:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value1",
                                      "nativeSrc": "6732:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "6732:6:6"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_int256",
                        "nativeSrc": "6339:472:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6383:9:6",
                            "nodeType": "YulTypedName",
                            "src": "6383:9:6",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "6394:7:6",
                            "nodeType": "YulTypedName",
                            "src": "6394:7:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nativeSrc": "6406:6:6",
                            "nodeType": "YulTypedName",
                            "src": "6406:6:6",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nativeSrc": "6414:6:6",
                            "nodeType": "YulTypedName",
                            "src": "6414:6:6",
                            "type": ""
                          }
                        ],
                        "src": "6339:472:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "6883:263:6",
                          "nodeType": "YulBlock",
                          "src": "6883:263:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "6929:83:6",
                                "nodeType": "YulBlock",
                                "src": "6929:83:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                        "nativeSrc": "6931:77:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6931:77:6"
                                      },
                                      "nativeSrc": "6931:79:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "6931:79:6"
                                    },
                                    "nativeSrc": "6931:79:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6931:79:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "6904:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6904:7:6"
                                      },
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "6913:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "6913:9:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "6900:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "6900:3:6"
                                    },
                                    "nativeSrc": "6900:23:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "6900:23:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "6925:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "6925:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nativeSrc": "6896:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "6896:3:6"
                                },
                                "nativeSrc": "6896:32:6",
                                "nodeType": "YulFunctionCall",
                                "src": "6896:32:6"
                              },
                              "nativeSrc": "6893:119:6",
                              "nodeType": "YulIf",
                              "src": "6893:119:6"
                            },
                            {
                              "nativeSrc": "7022:117:6",
                              "nodeType": "YulBlock",
                              "src": "7022:117:6",
                              "statements": [
                                {
                                  "nativeSrc": "7037:15:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7037:15:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "7051:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "7051:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "7041:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "7041:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "7066:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "7066:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "7101:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "7101:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "7112:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "7112:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "7097:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "7097:3:6"
                                        },
                                        "nativeSrc": "7097:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "7097:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "7121:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "7121:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_address",
                                      "nativeSrc": "7076:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "7076:20:6"
                                    },
                                    "nativeSrc": "7076:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "7076:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value0",
                                      "nativeSrc": "7066:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "7066:6:6"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nativeSrc": "6817:329:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6853:9:6",
                            "nodeType": "YulTypedName",
                            "src": "6853:9:6",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "6864:7:6",
                            "nodeType": "YulTypedName",
                            "src": "6864:7:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nativeSrc": "6876:6:6",
                            "nodeType": "YulTypedName",
                            "src": "6876:6:6",
                            "type": ""
                          }
                        ],
                        "src": "6817:329:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "7250:124:6",
                          "nodeType": "YulBlock",
                          "src": "7250:124:6",
                          "statements": [
                            {
                              "nativeSrc": "7260:26:6",
                              "nodeType": "YulAssignment",
                              "src": "7260:26:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nativeSrc": "7272:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "7272:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7283:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "7283:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "7268:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "7268:3:6"
                                },
                                "nativeSrc": "7268:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "7268:18:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "7260:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "7260:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "7340:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "7340:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "7353:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "7353:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "7364:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "7364:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "7349:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "7349:3:6"
                                    },
                                    "nativeSrc": "7349:17:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "7349:17:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_address_to_t_address_fromStack",
                                  "nativeSrc": "7296:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "7296:43:6"
                                },
                                "nativeSrc": "7296:71:6",
                                "nodeType": "YulFunctionCall",
                                "src": "7296:71:6"
                              },
                              "nativeSrc": "7296:71:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "7296:71:6"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nativeSrc": "7152:222:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7222:9:6",
                            "nodeType": "YulTypedName",
                            "src": "7222:9:6",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nativeSrc": "7234:6:6",
                            "nodeType": "YulTypedName",
                            "src": "7234:6:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nativeSrc": "7245:4:6",
                            "nodeType": "YulTypedName",
                            "src": "7245:4:6",
                            "type": ""
                          }
                        ],
                        "src": "7152:222:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "7463:391:6",
                          "nodeType": "YulBlock",
                          "src": "7463:391:6",
                          "statements": [
                            {
                              "body": {
                                "nativeSrc": "7509:83:6",
                                "nodeType": "YulBlock",
                                "src": "7509:83:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
                                        "nativeSrc": "7511:77:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "7511:77:6"
                                      },
                                      "nativeSrc": "7511:79:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "7511:79:6"
                                    },
                                    "nativeSrc": "7511:79:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7511:79:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "7484:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "7484:7:6"
                                      },
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "7493:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "7493:9:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "7480:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "7480:3:6"
                                    },
                                    "nativeSrc": "7480:23:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "7480:23:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7505:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "7505:2:6",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nativeSrc": "7476:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "7476:3:6"
                                },
                                "nativeSrc": "7476:32:6",
                                "nodeType": "YulFunctionCall",
                                "src": "7476:32:6"
                              },
                              "nativeSrc": "7473:119:6",
                              "nodeType": "YulIf",
                              "src": "7473:119:6"
                            },
                            {
                              "nativeSrc": "7602:117:6",
                              "nodeType": "YulBlock",
                              "src": "7602:117:6",
                              "statements": [
                                {
                                  "nativeSrc": "7617:15:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7617:15:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "7631:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "7631:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "7621:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "7621:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "7646:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "7646:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "7681:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "7681:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "7692:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "7692:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "7677:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "7677:3:6"
                                        },
                                        "nativeSrc": "7677:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "7677:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "7701:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "7701:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_address",
                                      "nativeSrc": "7656:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "7656:20:6"
                                    },
                                    "nativeSrc": "7656:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "7656:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value0",
                                      "nativeSrc": "7646:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "7646:6:6"
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "nativeSrc": "7729:118:6",
                              "nodeType": "YulBlock",
                              "src": "7729:118:6",
                              "statements": [
                                {
                                  "nativeSrc": "7744:16:6",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7744:16:6",
                                  "value": {
                                    "kind": "number",
                                    "nativeSrc": "7758:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "7758:2:6",
                                    "type": "",
                                    "value": "32"
                                  },
                                  "variables": [
                                    {
                                      "name": "offset",
                                      "nativeSrc": "7748:6:6",
                                      "nodeType": "YulTypedName",
                                      "src": "7748:6:6",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "7774:63:6",
                                  "nodeType": "YulAssignment",
                                  "src": "7774:63:6",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nativeSrc": "7809:9:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "7809:9:6"
                                          },
                                          {
                                            "name": "offset",
                                            "nativeSrc": "7820:6:6",
                                            "nodeType": "YulIdentifier",
                                            "src": "7820:6:6"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "7805:3:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "7805:3:6"
                                        },
                                        "nativeSrc": "7805:22:6",
                                        "nodeType": "YulFunctionCall",
                                        "src": "7805:22:6"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nativeSrc": "7829:7:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "7829:7:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_address",
                                      "nativeSrc": "7784:20:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "7784:20:6"
                                    },
                                    "nativeSrc": "7784:53:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "7784:53:6"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "value1",
                                      "nativeSrc": "7774:6:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "7774:6:6"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nativeSrc": "7380:474:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "7425:9:6",
                            "nodeType": "YulTypedName",
                            "src": "7425:9:6",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "7436:7:6",
                            "nodeType": "YulTypedName",
                            "src": "7436:7:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nativeSrc": "7448:6:6",
                            "nodeType": "YulTypedName",
                            "src": "7448:6:6",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nativeSrc": "7456:6:6",
                            "nodeType": "YulTypedName",
                            "src": "7456:6:6",
                            "type": ""
                          }
                        ],
                        "src": "7380:474:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "7888:152:6",
                          "nodeType": "YulBlock",
                          "src": "7888:152:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7905:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "7905:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "7908:77:6",
                                    "nodeType": "YulLiteral",
                                    "src": "7908:77:6",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "7898:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "7898:6:6"
                                },
                                "nativeSrc": "7898:88:6",
                                "nodeType": "YulFunctionCall",
                                "src": "7898:88:6"
                              },
                              "nativeSrc": "7898:88:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "7898:88:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8002:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "8002:1:6",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8005:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "8005:4:6",
                                    "type": "",
                                    "value": "0x22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "7995:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "7995:6:6"
                                },
                                "nativeSrc": "7995:15:6",
                                "nodeType": "YulFunctionCall",
                                "src": "7995:15:6"
                              },
                              "nativeSrc": "7995:15:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "7995:15:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8026:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "8026:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8029:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "8029:4:6",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "8019:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8019:6:6"
                                },
                                "nativeSrc": "8019:15:6",
                                "nodeType": "YulFunctionCall",
                                "src": "8019:15:6"
                              },
                              "nativeSrc": "8019:15:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "8019:15:6"
                            }
                          ]
                        },
                        "name": "panic_error_0x22",
                        "nativeSrc": "7860:180:6",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7860:180:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "8097:269:6",
                          "nodeType": "YulBlock",
                          "src": "8097:269:6",
                          "statements": [
                            {
                              "nativeSrc": "8107:22:6",
                              "nodeType": "YulAssignment",
                              "src": "8107:22:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nativeSrc": "8121:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "8121:4:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8127:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "8127:1:6",
                                    "type": "",
                                    "value": "2"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "8117:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8117:3:6"
                                },
                                "nativeSrc": "8117:12:6",
                                "nodeType": "YulFunctionCall",
                                "src": "8117:12:6"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nativeSrc": "8107:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8107:6:6"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "8138:38:6",
                              "nodeType": "YulVariableDeclaration",
                              "src": "8138:38:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nativeSrc": "8168:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "8168:4:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8174:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "8174:1:6",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "8164:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8164:3:6"
                                },
                                "nativeSrc": "8164:12:6",
                                "nodeType": "YulFunctionCall",
                                "src": "8164:12:6"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nativeSrc": "8142:18:6",
                                  "nodeType": "YulTypedName",
                                  "src": "8142:18:6",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nativeSrc": "8215:51:6",
                                "nodeType": "YulBlock",
                                "src": "8215:51:6",
                                "statements": [
                                  {
                                    "nativeSrc": "8229:27:6",
                                    "nodeType": "YulAssignment",
                                    "src": "8229:27:6",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nativeSrc": "8243:6:6",
                                          "nodeType": "YulIdentifier",
                                          "src": "8243:6:6"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "8251:4:6",
                                          "nodeType": "YulLiteral",
                                          "src": "8251:4:6",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nativeSrc": "8239:3:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "8239:3:6"
                                      },
                                      "nativeSrc": "8239:17:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "8239:17:6"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "8229:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "8229:6:6"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nativeSrc": "8195:18:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "8195:18:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "8188:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8188:6:6"
                                },
                                "nativeSrc": "8188:26:6",
                                "nodeType": "YulFunctionCall",
                                "src": "8188:26:6"
                              },
                              "nativeSrc": "8185:81:6",
                              "nodeType": "YulIf",
                              "src": "8185:81:6"
                            },
                            {
                              "body": {
                                "nativeSrc": "8318:42:6",
                                "nodeType": "YulBlock",
                                "src": "8318:42:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x22",
                                        "nativeSrc": "8332:16:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "8332:16:6"
                                      },
                                      "nativeSrc": "8332:18:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "8332:18:6"
                                    },
                                    "nativeSrc": "8332:18:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8332:18:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nativeSrc": "8282:18:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "8282:18:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "8305:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "8305:6:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "8313:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "8313:2:6",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nativeSrc": "8302:2:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "8302:2:6"
                                    },
                                    "nativeSrc": "8302:14:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "8302:14:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nativeSrc": "8279:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8279:2:6"
                                },
                                "nativeSrc": "8279:38:6",
                                "nodeType": "YulFunctionCall",
                                "src": "8279:38:6"
                              },
                              "nativeSrc": "8276:84:6",
                              "nodeType": "YulIf",
                              "src": "8276:84:6"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nativeSrc": "8046:320:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nativeSrc": "8081:4:6",
                            "nodeType": "YulTypedName",
                            "src": "8081:4:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nativeSrc": "8090:6:6",
                            "nodeType": "YulTypedName",
                            "src": "8090:6:6",
                            "type": ""
                          }
                        ],
                        "src": "8046:320:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "8478:66:6",
                          "nodeType": "YulBlock",
                          "src": "8478:66:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nativeSrc": "8500:6:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "8500:6:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "8508:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "8508:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "8496:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "8496:3:6"
                                    },
                                    "nativeSrc": "8496:14:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "8496:14:6"
                                  },
                                  {
                                    "hexValue": "5461736b20616c726561647920636f6d706c65746564",
                                    "kind": "string",
                                    "nativeSrc": "8512:24:6",
                                    "nodeType": "YulLiteral",
                                    "src": "8512:24:6",
                                    "type": "",
                                    "value": "Task already completed"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "8489:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8489:6:6"
                                },
                                "nativeSrc": "8489:48:6",
                                "nodeType": "YulFunctionCall",
                                "src": "8489:48:6"
                              },
                              "nativeSrc": "8489:48:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "8489:48:6"
                            }
                          ]
                        },
                        "name": "store_literal_in_memory_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3",
                        "nativeSrc": "8372:172:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "8470:6:6",
                            "nodeType": "YulTypedName",
                            "src": "8470:6:6",
                            "type": ""
                          }
                        ],
                        "src": "8372:172:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "8696:220:6",
                          "nodeType": "YulBlock",
                          "src": "8696:220:6",
                          "statements": [
                            {
                              "nativeSrc": "8706:74:6",
                              "nodeType": "YulAssignment",
                              "src": "8706:74:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "8772:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "8772:3:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8777:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "8777:2:6",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                                  "nativeSrc": "8713:58:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8713:58:6"
                                },
                                "nativeSrc": "8713:67:6",
                                "nodeType": "YulFunctionCall",
                                "src": "8713:67:6"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nativeSrc": "8706:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8706:3:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "8878:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "8878:3:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "store_literal_in_memory_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3",
                                  "nativeSrc": "8789:88:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8789:88:6"
                                },
                                "nativeSrc": "8789:93:6",
                                "nodeType": "YulFunctionCall",
                                "src": "8789:93:6"
                              },
                              "nativeSrc": "8789:93:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "8789:93:6"
                            },
                            {
                              "nativeSrc": "8891:19:6",
                              "nodeType": "YulAssignment",
                              "src": "8891:19:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nativeSrc": "8902:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "8902:3:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "8907:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "8907:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "8898:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8898:3:6"
                                },
                                "nativeSrc": "8898:12:6",
                                "nodeType": "YulFunctionCall",
                                "src": "8898:12:6"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nativeSrc": "8891:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "8891:3:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_t_stringliteral_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3_to_t_string_memory_ptr_fromStack",
                        "nativeSrc": "8550:366:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nativeSrc": "8684:3:6",
                            "nodeType": "YulTypedName",
                            "src": "8684:3:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nativeSrc": "8692:3:6",
                            "nodeType": "YulTypedName",
                            "src": "8692:3:6",
                            "type": ""
                          }
                        ],
                        "src": "8550:366:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "9093:248:6",
                          "nodeType": "YulBlock",
                          "src": "9093:248:6",
                          "statements": [
                            {
                              "nativeSrc": "9103:26:6",
                              "nodeType": "YulAssignment",
                              "src": "9103:26:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nativeSrc": "9115:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9115:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9126:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "9126:2:6",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "9111:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9111:3:6"
                                },
                                "nativeSrc": "9111:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9111:18:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "9103:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9103:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "9150:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "9150:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "9161:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "9161:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "9146:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "9146:3:6"
                                    },
                                    "nativeSrc": "9146:17:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "9146:17:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail",
                                        "nativeSrc": "9169:4:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "9169:4:6"
                                      },
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "9175:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "9175:9:6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "9165:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "9165:3:6"
                                    },
                                    "nativeSrc": "9165:20:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "9165:20:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "9139:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9139:6:6"
                                },
                                "nativeSrc": "9139:47:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9139:47:6"
                              },
                              "nativeSrc": "9139:47:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "9139:47:6"
                            },
                            {
                              "nativeSrc": "9195:139:6",
                              "nodeType": "YulAssignment",
                              "src": "9195:139:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "tail",
                                    "nativeSrc": "9329:4:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9329:4:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_stringliteral_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3_to_t_string_memory_ptr_fromStack",
                                  "nativeSrc": "9203:124:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9203:124:6"
                                },
                                "nativeSrc": "9203:131:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9203:131:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "9195:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9195:4:6"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3__to_t_string_memory_ptr__fromStack_reversed",
                        "nativeSrc": "8922:419:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9073:9:6",
                            "nodeType": "YulTypedName",
                            "src": "9073:9:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nativeSrc": "9088:4:6",
                            "nodeType": "YulTypedName",
                            "src": "9088:4:6",
                            "type": ""
                          }
                        ],
                        "src": "8922:419:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "9375:152:6",
                          "nodeType": "YulBlock",
                          "src": "9375:152:6",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9392:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "9392:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9395:77:6",
                                    "nodeType": "YulLiteral",
                                    "src": "9395:77:6",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "9385:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9385:6:6"
                                },
                                "nativeSrc": "9385:88:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9385:88:6"
                              },
                              "nativeSrc": "9385:88:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "9385:88:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9489:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "9489:1:6",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9492:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "9492:4:6",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "9482:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9482:6:6"
                                },
                                "nativeSrc": "9482:15:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9482:15:6"
                              },
                              "nativeSrc": "9482:15:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "9482:15:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9513:1:6",
                                    "nodeType": "YulLiteral",
                                    "src": "9513:1:6",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9516:4:6",
                                    "nodeType": "YulLiteral",
                                    "src": "9516:4:6",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "9506:6:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9506:6:6"
                                },
                                "nativeSrc": "9506:15:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9506:15:6"
                              },
                              "nativeSrc": "9506:15:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "9506:15:6"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nativeSrc": "9347:180:6",
                        "nodeType": "YulFunctionDefinition",
                        "src": "9347:180:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "9577:147:6",
                          "nodeType": "YulBlock",
                          "src": "9577:147:6",
                          "statements": [
                            {
                              "nativeSrc": "9587:25:6",
                              "nodeType": "YulAssignment",
                              "src": "9587:25:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "9610:1:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9610:1:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "cleanup_t_uint256",
                                  "nativeSrc": "9592:17:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9592:17:6"
                                },
                                "nativeSrc": "9592:20:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9592:20:6"
                              },
                              "variableNames": [
                                {
                                  "name": "x",
                                  "nativeSrc": "9587:1:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9587:1:6"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "9621:25:6",
                              "nodeType": "YulAssignment",
                              "src": "9621:25:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nativeSrc": "9644:1:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9644:1:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "cleanup_t_uint256",
                                  "nativeSrc": "9626:17:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9626:17:6"
                                },
                                "nativeSrc": "9626:20:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9626:20:6"
                              },
                              "variableNames": [
                                {
                                  "name": "y",
                                  "nativeSrc": "9621:1:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9621:1:6"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "9655:16:6",
                              "nodeType": "YulAssignment",
                              "src": "9655:16:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "9666:1:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9666:1:6"
                                  },
                                  {
                                    "name": "y",
                                    "nativeSrc": "9669:1:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9669:1:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "9662:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9662:3:6"
                                },
                                "nativeSrc": "9662:9:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9662:9:6"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nativeSrc": "9655:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9655:3:6"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nativeSrc": "9695:22:6",
                                "nodeType": "YulBlock",
                                "src": "9695:22:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nativeSrc": "9697:16:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "9697:16:6"
                                      },
                                      "nativeSrc": "9697:18:6",
                                      "nodeType": "YulFunctionCall",
                                      "src": "9697:18:6"
                                    },
                                    "nativeSrc": "9697:18:6",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9697:18:6"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nativeSrc": "9687:1:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9687:1:6"
                                  },
                                  {
                                    "name": "sum",
                                    "nativeSrc": "9690:3:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9690:3:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nativeSrc": "9684:2:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9684:2:6"
                                },
                                "nativeSrc": "9684:10:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9684:10:6"
                              },
                              "nativeSrc": "9681:36:6",
                              "nodeType": "YulIf",
                              "src": "9681:36:6"
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nativeSrc": "9533:191:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nativeSrc": "9564:1:6",
                            "nodeType": "YulTypedName",
                            "src": "9564:1:6",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nativeSrc": "9567:1:6",
                            "nodeType": "YulTypedName",
                            "src": "9567:1:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nativeSrc": "9573:3:6",
                            "nodeType": "YulTypedName",
                            "src": "9573:3:6",
                            "type": ""
                          }
                        ],
                        "src": "9533:191:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "9854:204:6",
                          "nodeType": "YulBlock",
                          "src": "9854:204:6",
                          "statements": [
                            {
                              "nativeSrc": "9864:26:6",
                              "nodeType": "YulAssignment",
                              "src": "9864:26:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nativeSrc": "9876:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9876:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "9887:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "9887:2:6",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "9872:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9872:3:6"
                                },
                                "nativeSrc": "9872:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9872:18:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "9864:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9864:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "9944:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9944:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "9957:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "9957:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "9968:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "9968:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "9953:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "9953:3:6"
                                    },
                                    "nativeSrc": "9953:17:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "9953:17:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                  "nativeSrc": "9900:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9900:43:6"
                                },
                                "nativeSrc": "9900:71:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9900:71:6"
                              },
                              "nativeSrc": "9900:71:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "9900:71:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nativeSrc": "10023:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "10023:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "10036:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "10036:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "10047:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "10047:2:6",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "10032:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "10032:3:6"
                                    },
                                    "nativeSrc": "10032:18:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "10032:18:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_int256_to_t_int256_fromStack",
                                  "nativeSrc": "9981:41:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "9981:41:6"
                                },
                                "nativeSrc": "9981:70:6",
                                "nodeType": "YulFunctionCall",
                                "src": "9981:70:6"
                              },
                              "nativeSrc": "9981:70:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "9981:70:6"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_int256__to_t_uint256_t_int256__fromStack_reversed",
                        "nativeSrc": "9730:328:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "9818:9:6",
                            "nodeType": "YulTypedName",
                            "src": "9818:9:6",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nativeSrc": "9830:6:6",
                            "nodeType": "YulTypedName",
                            "src": "9830:6:6",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nativeSrc": "9838:6:6",
                            "nodeType": "YulTypedName",
                            "src": "9838:6:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nativeSrc": "9849:4:6",
                            "nodeType": "YulTypedName",
                            "src": "9849:4:6",
                            "type": ""
                          }
                        ],
                        "src": "9730:328:6"
                      },
                      {
                        "body": {
                          "nativeSrc": "10218:288:6",
                          "nodeType": "YulBlock",
                          "src": "10218:288:6",
                          "statements": [
                            {
                              "nativeSrc": "10228:26:6",
                              "nodeType": "YulAssignment",
                              "src": "10228:26:6",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nativeSrc": "10240:9:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "10240:9:6"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "10251:2:6",
                                    "nodeType": "YulLiteral",
                                    "src": "10251:2:6",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "10236:3:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "10236:3:6"
                                },
                                "nativeSrc": "10236:18:6",
                                "nodeType": "YulFunctionCall",
                                "src": "10236:18:6"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nativeSrc": "10228:4:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "10228:4:6"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nativeSrc": "10308:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "10308:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "10321:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "10321:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "10332:1:6",
                                        "nodeType": "YulLiteral",
                                        "src": "10332:1:6",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "10317:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "10317:3:6"
                                    },
                                    "nativeSrc": "10317:17:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "10317:17:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_address_to_t_address_fromStack",
                                  "nativeSrc": "10264:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "10264:43:6"
                                },
                                "nativeSrc": "10264:71:6",
                                "nodeType": "YulFunctionCall",
                                "src": "10264:71:6"
                              },
                              "nativeSrc": "10264:71:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "10264:71:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nativeSrc": "10389:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "10389:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "10402:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "10402:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "10413:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "10413:2:6",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "10398:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "10398:3:6"
                                    },
                                    "nativeSrc": "10398:18:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "10398:18:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                  "nativeSrc": "10345:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "10345:43:6"
                                },
                                "nativeSrc": "10345:72:6",
                                "nodeType": "YulFunctionCall",
                                "src": "10345:72:6"
                              },
                              "nativeSrc": "10345:72:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "10345:72:6"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nativeSrc": "10471:6:6",
                                    "nodeType": "YulIdentifier",
                                    "src": "10471:6:6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nativeSrc": "10484:9:6",
                                        "nodeType": "YulIdentifier",
                                        "src": "10484:9:6"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "10495:2:6",
                                        "nodeType": "YulLiteral",
                                        "src": "10495:2:6",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "10480:3:6",
                                      "nodeType": "YulIdentifier",
                                      "src": "10480:3:6"
                                    },
                                    "nativeSrc": "10480:18:6",
                                    "nodeType": "YulFunctionCall",
                                    "src": "10480:18:6"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                                  "nativeSrc": "10427:43:6",
                                  "nodeType": "YulIdentifier",
                                  "src": "10427:43:6"
                                },
                                "nativeSrc": "10427:72:6",
                                "nodeType": "YulFunctionCall",
                                "src": "10427:72:6"
                              },
                              "nativeSrc": "10427:72:6",
                              "nodeType": "YulExpressionStatement",
                              "src": "10427:72:6"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nativeSrc": "10064:442:6",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nativeSrc": "10174:9:6",
                            "nodeType": "YulTypedName",
                            "src": "10174:9:6",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nativeSrc": "10186:6:6",
                            "nodeType": "YulTypedName",
                            "src": "10186:6:6",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nativeSrc": "10194:6:6",
                            "nodeType": "YulTypedName",
                            "src": "10194:6:6",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nativeSrc": "10202:6:6",
                            "nodeType": "YulTypedName",
                            "src": "10202:6:6",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nativeSrc": "10213:4:6",
                            "nodeType": "YulTypedName",
                            "src": "10213:4:6",
                            "type": ""
                          }
                        ],
                        "src": "10064:442:6"
                      }
                    ]
                  },
                  "contents": "{\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function copy_memory_to_memory_with_cleanup(src, dst, length) {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n\n    function round_up_to_mul_of_32(value) -> result {\n        result := and(add(value, 31), not(31))\n    }\n\n    function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n        let length := array_length_t_string_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0,  tail)\n\n    }\n\n    function allocate_unbounded() -> memPtr {\n        memPtr := mload(64)\n    }\n\n    function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n        revert(0, 0)\n    }\n\n    function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n        revert(0, 0)\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_address(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function validator_revert_t_uint256(value) {\n        if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_uint256(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_bool(value) -> cleaned {\n        cleaned := iszero(iszero(value))\n    }\n\n    function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bool(value))\n    }\n\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_bool_to_t_bool_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_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_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\n\n    function cleanup_t_int256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_int256(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_int256_t_address_t_uint256__to_t_uint256_t_int256_t_address_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n        tail := add(headStart, 128)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_int256_to_t_int256_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_address_to_t_address_fromStack(value2,  add(headStart, 64))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value3,  add(headStart, 96))\n\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n        if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 64\n\n            value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function cleanup_t_uint8(value) -> cleaned {\n        cleaned := and(value, 0xff)\n    }\n\n    function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint8(value))\n    }\n\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint8_to_t_uint8_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function validator_revert_t_int256(value) {\n        if iszero(eq(value, cleanup_t_int256(value))) { revert(0, 0) }\n    }\n\n    function abi_decode_t_int256(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_int256(value)\n    }\n\n    function abi_decode_tuple_t_uint256t_int256(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_int256(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 abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function panic_error_0x22() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x22)\n        revert(0, 0x24)\n    }\n\n    function extract_byte_array_length(data) -> length {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) {\n            length := and(length, 0x7f)\n        }\n\n        if eq(outOfPlaceEncoding, lt(length, 32)) {\n            panic_error_0x22()\n        }\n    }\n\n    function store_literal_in_memory_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3(memPtr) {\n\n        mstore(add(memPtr, 0), \"Task already completed\")\n\n    }\n\n    function abi_encode_t_stringliteral_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 22)\n        store_literal_in_memory_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3(pos)\n        end := add(pos, 32)\n    }\n\n    function abi_encode_tuple_t_stringliteral_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3__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_11d982537cef1182584b8fe65779e423bd34c13f71c81fc31dfb19420fa840f3_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function panic_error_0x11() {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n\n    function checked_add_t_uint256(x, y) -> sum {\n        x := cleanup_t_uint256(x)\n        y := cleanup_t_uint256(y)\n        sum := add(x, y)\n\n        if gt(x, sum) { panic_error_0x11() }\n\n    }\n\n    function abi_encode_tuple_t_uint256_t_int256__to_t_uint256_t_int256__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_int256_to_t_int256_fromStack(value1,  add(headStart, 32))\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}\n",
                  "id": 6,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633e514bac1161008c57806395d89b411161006657806395d89b411461022b578063a9059cbb14610249578063bd4bbeb914610279578063dd62ed3e146102a9576100cf565b80633e514bac146101c157806370a08231146101dd5780638da5cb5b1461020d576100cf565b806306fdde03146100d4578063095ea7b3146100f257806310a7fd7b1461012257806318160ddd1461015557806323b872dd14610173578063313ce567146101a3575b600080fd5b6100dc6102d9565b6040516100e99190610ea7565b60405180910390f35b61010c60048036038101906101079190610f62565b61036b565b6040516101199190610fbd565b60405180910390f35b61013c60048036038101906101379190610fd8565b61038e565b60405161014c949392919061103c565b60405180910390f35b61015d6103de565b60405161016a9190611081565b60405180910390f35b61018d6004803603810190610188919061109c565b6103e8565b60405161019a9190610fbd565b60405180910390f35b6101ab610417565b6040516101b8919061110b565b60405180910390f35b6101db60048036038101906101d69190611152565b610420565b005b6101f760048036038101906101f29190611192565b610634565b6040516102049190611081565b60405180910390f35b61021561067c565b60405161022291906111bf565b60405180910390f35b6102336106a2565b6040516102409190610ea7565b60405180910390f35b610263600480360381019061025e9190610f62565b610734565b6040516102709190610fbd565b60405180910390f35b610293600480360381019061028e9190611192565b610757565b6040516102a09190611081565b60405180910390f35b6102c360048036038101906102be91906111da565b61076f565b6040516102d09190611081565b60405180910390f35b6060600380546102e890611249565b80601f016020809104026020016040519081016040528092919081815260200182805461031490611249565b80156103615780601f1061033657610100808354040283529160200191610361565b820191906000526020600020905b81548152906001019060200180831161034457829003601f168201915b5050505050905090565b6000806103766107f6565b90506103838185856107fe565b600191505092915050565b60076020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b6000600254905090565b6000806103f36107f6565b9050610400858285610810565b61040b8585856108a5565b60019150509392505050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bc906112c6565b60405180910390fd5b60405180608001604052808381526020018281526020013373ffffffffffffffffffffffffffffffffffffffff1681526020014281525060076000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301559050506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105c79190611315565b925050819055506105e033670de0b6b3a7640000610999565b3373ffffffffffffffffffffffffffffffffffffffff167fe46984a7cb6a34125cc7ad2328662abe47b36cf2cefd04f2bdb4d3a74dfd484e8383604051610628929190611349565b60405180910390a25050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546106b190611249565b80601f01602080910402602001604051908101604052809291908181526020018280546106dd90611249565b801561072a5780601f106106ff5761010080835404028352916020019161072a565b820191906000526020600020905b81548152906001019060200180831161070d57829003601f168201915b5050505050905090565b60008061073f6107f6565b905061074c8185856108a5565b600191505092915050565b60066020528060005260406000206000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b61080b8383836001610a1b565b505050565b600061081c848461076f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81101561089f578181101561088f578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161088693929190611372565b60405180910390fd5b61089e84848484036000610a1b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109175760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161090e91906111bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109895760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161098091906111bf565b60405180910390fd5b610994838383610bf2565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0b5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a0291906111bf565b60405180910390fd5b610a1760008383610bf2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a8d5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a8491906111bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610aff5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610af691906111bf565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610bec578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610be39190611081565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c44578060026000828254610c389190611315565b92505081905550610d17565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cd0578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610cc793929190611372565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d605780600260008282540392505081905550610dad565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e0a9190611081565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e51578082015181840152602081019050610e36565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e7982610e17565b610e838185610e22565b9350610e93818560208601610e33565b610e9c81610e5d565b840191505092915050565b60006020820190508181036000830152610ec18184610e6e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ef982610ece565b9050919050565b610f0981610eee565b8114610f1457600080fd5b50565b600081359050610f2681610f00565b92915050565b6000819050919050565b610f3f81610f2c565b8114610f4a57600080fd5b50565b600081359050610f5c81610f36565b92915050565b60008060408385031215610f7957610f78610ec9565b5b6000610f8785828601610f17565b9250506020610f9885828601610f4d565b9150509250929050565b60008115159050919050565b610fb781610fa2565b82525050565b6000602082019050610fd26000830184610fae565b92915050565b600060208284031215610fee57610fed610ec9565b5b6000610ffc84828501610f4d565b91505092915050565b61100e81610f2c565b82525050565b6000819050919050565b61102781611014565b82525050565b61103681610eee565b82525050565b60006080820190506110516000830187611005565b61105e602083018661101e565b61106b604083018561102d565b6110786060830184611005565b95945050505050565b60006020820190506110966000830184611005565b92915050565b6000806000606084860312156110b5576110b4610ec9565b5b60006110c386828701610f17565b93505060206110d486828701610f17565b92505060406110e586828701610f4d565b9150509250925092565b600060ff82169050919050565b611105816110ef565b82525050565b600060208201905061112060008301846110fc565b92915050565b61112f81611014565b811461113a57600080fd5b50565b60008135905061114c81611126565b92915050565b6000806040838503121561116957611168610ec9565b5b600061117785828601610f4d565b92505060206111888582860161113d565b9150509250929050565b6000602082840312156111a8576111a7610ec9565b5b60006111b684828501610f17565b91505092915050565b60006020820190506111d4600083018461102d565b92915050565b600080604083850312156111f1576111f0610ec9565b5b60006111ff85828601610f17565b925050602061121085828601610f17565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061126157607f821691505b6020821081036112745761127361121a565b5b50919050565b7f5461736b20616c726561647920636f6d706c6574656400000000000000000000600082015250565b60006112b0601683610e22565b91506112bb8261127a565b602082019050919050565b600060208201905081810360008301526112df816112a3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061132082610f2c565b915061132b83610f2c565b9250828201905080821115611343576113426112e6565b5b92915050565b600060408201905061135e6000830185611005565b61136b602083018461101e565b9392505050565b6000606082019050611387600083018661102d565b6113946020830185611005565b6113a16040830184611005565b94935050505056fea2646970667358221220c1f0bde385e3675248a393a73b37ef12c8a3117f5ca73eae6d90f04daffe9b0464736f6c63430008180033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3E514BAC GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0xBD4BBEB9 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2A9 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x3E514BAC EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x20D JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x10A7FD7B EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x173 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1A3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x2D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xEA7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x107 SWAP2 SWAP1 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x36B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xFBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0xFD8 JUMP JUMPDEST PUSH2 0x38E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x103C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15D PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16A SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x188 SWAP2 SWAP1 PUSH2 0x109C JUMP JUMPDEST PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19A SWAP2 SWAP1 PUSH2 0xFBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AB PUSH2 0x417 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B8 SWAP2 SWAP1 PUSH2 0x110B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D6 SWAP2 SWAP1 PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1F2 SWAP2 SWAP1 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x634 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x204 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x215 PUSH2 0x67C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x222 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x233 PUSH2 0x6A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x240 SWAP2 SWAP1 PUSH2 0xEA7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x263 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25E SWAP2 SWAP1 PUSH2 0xF62 JUMP JUMPDEST PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x270 SWAP2 SWAP1 PUSH2 0xFBD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x293 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x1192 JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BE SWAP2 SWAP1 PUSH2 0x11DA JUMP JUMPDEST PUSH2 0x76F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x2E8 SWAP1 PUSH2 0x1249 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x314 SWAP1 PUSH2 0x1249 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x361 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x336 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x361 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x344 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x376 PUSH2 0x7F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x383 DUP2 DUP6 DUP6 PUSH2 0x7FE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3F3 PUSH2 0x7F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x400 DUP6 DUP3 DUP6 PUSH2 0x810 JUMP JUMPDEST PUSH2 0x40B DUP6 DUP6 DUP6 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x7 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4BC SWAP1 PUSH2 0x12C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE POP PUSH1 0x7 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE SWAP1 POP POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x5C7 SWAP2 SWAP1 PUSH2 0x1315 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x5E0 CALLER PUSH8 0xDE0B6B3A7640000 PUSH2 0x999 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xE46984A7CB6A34125CC7AD2328662ABE47B36CF2CEFD04F2BDB4D3A74DFD484E DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x628 SWAP3 SWAP2 SWAP1 PUSH2 0x1349 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x6B1 SWAP1 PUSH2 0x1249 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x6DD SWAP1 PUSH2 0x1249 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x72A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6FF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x72A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x70D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x73F PUSH2 0x7F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x74C DUP2 DUP6 DUP6 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x80B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xA1B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81C DUP5 DUP5 PUSH2 0x76F JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x89F JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x88F JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x886 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1372 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x89E DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0xA1B JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x917 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x90E SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x989 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x980 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x994 DUP4 DUP4 DUP4 PUSH2 0xBF2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA0B JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA02 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA17 PUSH1 0x0 DUP4 DUP4 PUSH2 0xBF2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA8D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xAFF JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAF6 SWAP2 SWAP1 PUSH2 0x11BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0xBEC JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xBE3 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xC44 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xC38 SWAP2 SWAP1 PUSH2 0x1315 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xD17 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xCD0 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCC7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1372 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD60 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xDAD JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xE0A SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP 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 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE51 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xE36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE79 DUP3 PUSH2 0xE17 JUMP JUMPDEST PUSH2 0xE83 DUP2 DUP6 PUSH2 0xE22 JUMP JUMPDEST SWAP4 POP PUSH2 0xE93 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xE33 JUMP JUMPDEST PUSH2 0xE9C DUP2 PUSH2 0xE5D 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 0xEC1 DUP2 DUP5 PUSH2 0xE6E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEF9 DUP3 PUSH2 0xECE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF09 DUP2 PUSH2 0xEEE JUMP JUMPDEST DUP2 EQ PUSH2 0xF14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xF26 DUP2 PUSH2 0xF00 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xF3F DUP2 PUSH2 0xF2C JUMP JUMPDEST DUP2 EQ PUSH2 0xF4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xF5C DUP2 PUSH2 0xF36 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF79 JUMPI PUSH2 0xF78 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xF87 DUP6 DUP3 DUP7 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xF98 DUP6 DUP3 DUP7 ADD PUSH2 0xF4D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFB7 DUP2 PUSH2 0xFA2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xFD2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xFAE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFEE JUMPI PUSH2 0xFED PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xFFC DUP5 DUP3 DUP6 ADD PUSH2 0xF4D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x100E DUP2 PUSH2 0xF2C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1027 DUP2 PUSH2 0x1014 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1036 DUP2 PUSH2 0xEEE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x1051 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1005 JUMP JUMPDEST PUSH2 0x105E PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x101E JUMP JUMPDEST PUSH2 0x106B PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x102D JUMP JUMPDEST PUSH2 0x1078 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1005 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1096 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1005 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x10B5 JUMPI PUSH2 0x10B4 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x10C3 DUP7 DUP3 DUP8 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x10D4 DUP7 DUP3 DUP8 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x10E5 DUP7 DUP3 DUP8 ADD PUSH2 0xF4D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1105 DUP2 PUSH2 0x10EF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1120 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x10FC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x112F DUP2 PUSH2 0x1014 JUMP JUMPDEST DUP2 EQ PUSH2 0x113A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x114C DUP2 PUSH2 0x1126 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1169 JUMPI PUSH2 0x1168 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1177 DUP6 DUP3 DUP7 ADD PUSH2 0xF4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1188 DUP6 DUP3 DUP7 ADD PUSH2 0x113D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11A8 JUMPI PUSH2 0x11A7 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x11B6 DUP5 DUP3 DUP6 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x11D4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x102D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11F1 JUMPI PUSH2 0x11F0 PUSH2 0xEC9 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x11FF DUP6 DUP3 DUP7 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1210 DUP6 DUP3 DUP7 ADD PUSH2 0xF17 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x1261 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1274 JUMPI PUSH2 0x1273 PUSH2 0x121A JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5461736B20616C726561647920636F6D706C6574656400000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12B0 PUSH1 0x16 DUP4 PUSH2 0xE22 JUMP JUMPDEST SWAP2 POP PUSH2 0x12BB DUP3 PUSH2 0x127A 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 0x12DF DUP2 PUSH2 0x12A3 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 0x1320 DUP3 PUSH2 0xF2C JUMP JUMPDEST SWAP2 POP PUSH2 0x132B DUP4 PUSH2 0xF2C JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1343 JUMPI PUSH2 0x1342 PUSH2 0x12E6 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x135E PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1005 JUMP JUMPDEST PUSH2 0x136B PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x101E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1387 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x102D JUMP JUMPDEST PUSH2 0x1394 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1005 JUMP JUMPDEST PUSH2 0x13A1 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1005 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC1 CREATE 0xBD 0xE3 DUP6 0xE3 PUSH8 0x5248A393A73B37EF SLT 0xC8 LOG3 GT PUSH32 0x5CA73EAE6D90F04DAFFE9B0464736F6C63430008180033000000000000000000 ",
              "sourceMap": "115:1553:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;627:42:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;2803:97:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2688:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;984:682:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2933:116:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;149:20:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1962:93:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3244:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;335:44:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3455:140:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1760:89;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;3991:13;4007:12;:10;:12::i;:::-;3991:28;;4029:31;4038:5;4045:7;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;:::o;627:42:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2803:97:1:-;2855:7;2881:12;;2874:19;;2803:97;:::o;4680:244::-;4767:4;4783:15;4801:12;:10;:12::i;:::-;4783:30;;4823:37;4839:4;4845:7;4854:5;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;:::o;2688:82::-;2737:5;2761:2;2754:9;;2688:82;:::o;984:682:5:-;1095:1;1061:36;;:6;:15;1068:7;1061:15;;;;;;;;;;;:22;;;;;;;;;;;;:36;;;1053:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;1204:158;;;;;;;;1235:7;1204:158;;;;1273:6;1204:158;;;;1301:10;1204:158;;;;;;1336:15;1204:158;;;1186:6;:15;1193:7;1186:15;;;;;;;;;;;:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1491:1;1466:9;:21;1476:10;1466:21;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;1573:29;1579:10;1591;1573:5;:29::i;:::-;1631:10;1618:41;;;1643:7;1652:6;1618:41;;;;;;;:::i;:::-;;;;;;;;984:682;;:::o;2933:116:1:-;2998:7;3024:9;:18;3034:7;3024:18;;;;;;;;;;;;;;;;3017:25;;2933:116;;;:::o;149:20:5:-;;;;;;;;;;;;;:::o;1962:93:1:-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;3244:178::-;3313:4;3329:13;3345:12;:10;:12::i;:::-;3329:28;;3367:27;3377:5;3384:2;3388:5;3367:9;:27::i;:::-;3411:4;3404:11;;;3244:178;;;;:::o;335:44:5:-;;;;;;;;;;;;;;;;;:::o;3455:140:1:-;3535:7;3561:11;:18;3573:5;3561:18;;;;;;;;;;;;;;;:27;3580:7;3561:27;;;;;;;;;;;;;;;;3554:34;;3455:140;;;;:::o;656:96:4:-;709:7;735:10;728:17;;656:96;:::o;8630:128:1:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10321:476::-;10420:24;10447:25;10457:5;10464:7;10447:9;:25::i;:::-;10420:52;;10505:17;10486:16;:36;10482:309;;;10561:5;10542:16;:24;10538:130;;;10620:7;10629:16;10647:5;10593:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10538:130;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10482:309;10410:387;10321:476;;;:::o;5297:300::-;5396:1;5380:18;;:4;:18;;;5376:86;;5448:1;5421:30;;;;;;;;;;;:::i;:::-;;;;;;;;5376:86;5489:1;5475:16;;:2;:16;;;5471:86;;5543:1;5514:32;;;;;;;;;;;:::i;:::-;;;;;;;;5471:86;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;:::-;5297:300;;;:::o;7362:208::-;7451:1;7432:21;;:7;:21;;;7428:91;;7505:1;7476:32;;;;;;;;;;;:::i;:::-;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;9607:432::-;9736:1;9719:19;;:5;:19;;;9715:89;;9790:1;9761:32;;;;;;;;;;;:::i;:::-;;;;;;;;9715:89;9836:1;9817:21;;:7;:21;;;9813:90;;9889:1;9861:31;;;;;;;;;;;:::i;:::-;;;;;;;;9813:90;9942:5;9912:11;:18;9924:5;9912:18;;;;;;;;;;;;;;;:27;9931:7;9912:27;;;;;;;;;;;;;;;:35;;;;9961:9;9957:76;;;10007:7;9991:31;;10000:5;9991:31;;;10016:5;9991:31;;;;;;:::i;:::-;;;;;;;;9957:76;9607:432;;;;:::o;5912:1107::-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:76::-;3941:7;3970:5;3959:16;;3905:76;;;:::o;3987:115::-;4072:23;4089:5;4072:23;:::i;:::-;4067:3;4060:36;3987:115;;:::o;4108:118::-;4195:24;4213:5;4195:24;:::i;:::-;4190:3;4183:37;4108:118;;:::o;4232:549::-;4407:4;4445:3;4434:9;4430:19;4422:27;;4459:71;4527:1;4516:9;4512:17;4503:6;4459:71;:::i;:::-;4540:70;4606:2;4595:9;4591:18;4582:6;4540:70;:::i;:::-;4620:72;4688:2;4677:9;4673:18;4664:6;4620:72;:::i;:::-;4702;4770:2;4759:9;4755:18;4746:6;4702:72;:::i;:::-;4232:549;;;;;;;:::o;4787:222::-;4880:4;4918:2;4907:9;4903:18;4895:26;;4931:71;4999:1;4988:9;4984:17;4975:6;4931:71;:::i;:::-;4787:222;;;;:::o;5015:619::-;5092:6;5100;5108;5157:2;5145:9;5136:7;5132:23;5128:32;5125:119;;;5163:79;;:::i;:::-;5125:119;5283:1;5308:53;5353:7;5344:6;5333:9;5329:22;5308:53;:::i;:::-;5298:63;;5254:117;5410:2;5436:53;5481:7;5472:6;5461:9;5457:22;5436:53;:::i;:::-;5426:63;;5381:118;5538:2;5564:53;5609:7;5600:6;5589:9;5585:22;5564:53;:::i;:::-;5554:63;;5509:118;5015:619;;;;;:::o;5640:86::-;5675:7;5715:4;5708:5;5704:16;5693:27;;5640:86;;;:::o;5732:112::-;5815:22;5831:5;5815:22;:::i;:::-;5810:3;5803:35;5732:112;;:::o;5850:214::-;5939:4;5977:2;5966:9;5962:18;5954:26;;5990:67;6054:1;6043:9;6039:17;6030:6;5990:67;:::i;:::-;5850:214;;;;:::o;6070:120::-;6142:23;6159:5;6142:23;:::i;:::-;6135:5;6132:34;6122:62;;6180:1;6177;6170:12;6122:62;6070:120;:::o;6196:137::-;6241:5;6279:6;6266:20;6257:29;;6295:32;6321:5;6295:32;:::i;:::-;6196:137;;;;:::o;6339:472::-;6406:6;6414;6463:2;6451:9;6442:7;6438:23;6434:32;6431:119;;;6469:79;;:::i;:::-;6431:119;6589:1;6614:53;6659:7;6650:6;6639:9;6635:22;6614:53;:::i;:::-;6604:63;;6560:117;6716:2;6742:52;6786:7;6777:6;6766:9;6762:22;6742:52;:::i;:::-;6732:62;;6687:117;6339:472;;;;;:::o;6817:329::-;6876:6;6925:2;6913:9;6904:7;6900:23;6896:32;6893:119;;;6931:79;;:::i;:::-;6893:119;7051:1;7076:53;7121:7;7112:6;7101:9;7097:22;7076:53;:::i;:::-;7066:63;;7022:117;6817:329;;;;:::o;7152:222::-;7245:4;7283:2;7272:9;7268:18;7260:26;;7296:71;7364:1;7353:9;7349:17;7340:6;7296:71;:::i;:::-;7152:222;;;;:::o;7380:474::-;7448:6;7456;7505:2;7493:9;7484:7;7480:23;7476:32;7473:119;;;7511:79;;:::i;:::-;7473:119;7631:1;7656:53;7701:7;7692:6;7681:9;7677:22;7656:53;:::i;:::-;7646:63;;7602:117;7758:2;7784:53;7829:7;7820:6;7809:9;7805:22;7784:53;:::i;:::-;7774:63;;7729:118;7380:474;;;;;:::o;7860:180::-;7908:77;7905:1;7898:88;8005:4;8002:1;7995:15;8029:4;8026:1;8019:15;8046:320;8090:6;8127:1;8121:4;8117:12;8107:22;;8174:1;8168:4;8164:12;8195:18;8185:81;;8251:4;8243:6;8239:17;8229:27;;8185:81;8313:2;8305:6;8302:14;8282:18;8279:38;8276:84;;8332:18;;:::i;:::-;8276:84;8097:269;8046:320;;;:::o;8372:172::-;8512:24;8508:1;8500:6;8496:14;8489:48;8372:172;:::o;8550:366::-;8692:3;8713:67;8777:2;8772:3;8713:67;:::i;:::-;8706:74;;8789:93;8878:3;8789:93;:::i;:::-;8907:2;8902:3;8898:12;8891:19;;8550:366;;;:::o;8922:419::-;9088:4;9126:2;9115:9;9111:18;9103:26;;9175:9;9169:4;9165:20;9161:1;9150:9;9146:17;9139:47;9203:131;9329:4;9203:131;:::i;:::-;9195:139;;8922:419;;;:::o;9347:180::-;9395:77;9392:1;9385:88;9492:4;9489:1;9482:15;9516:4;9513:1;9506:15;9533:191;9573:3;9592:20;9610:1;9592:20;:::i;:::-;9587:25;;9626:20;9644:1;9626:20;:::i;:::-;9621:25;;9669:1;9666;9662:9;9655:16;;9690:3;9687:1;9684:10;9681:36;;;9697:18;;:::i;:::-;9681:36;9533:191;;;;:::o;9730:328::-;9849:4;9887:2;9876:9;9872:18;9864:26;;9900:71;9968:1;9957:9;9953:17;9944:6;9900:71;:::i;:::-;9981:70;10047:2;10036:9;10032:18;10023:6;9981:70;:::i;:::-;9730:328;;;;;:::o;10064:442::-;10213:4;10251:2;10240:9;10236:18;10228:26;;10264:71;10332:1;10321:9;10317:17;10308:6;10264:71;:::i;:::-;10345:72;10413:2;10402:9;10398:18;10389:6;10345:72;:::i;:::-;10427;10495:2;10484:9;10480:18;10471:6;10427:72;:::i;:::-;10064:442;;;;;;:::o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "ledger(uint256)": "10a7fd7b",
              "name()": "06fdde03",
              "owner()": "8da5cb5b",
              "submitWork(uint256,int256)": "3e514bac",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "ubiEarned(address)": "bd4bbeb9"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"worker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"score\",\"type\":\"int256\"}],\"name\":\"WorkVerified\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ledger\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"predictionScore\",\"type\":\"int256\"},{\"internalType\":\"address\",\"name\":\"worker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_taskId\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"_score\",\"type\":\"int256\"}],\"name\":\"submitWork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"ubiEarned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"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\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"submitWork(uint256,int256)\":{\"details\":\"This is the function your Pixel 10 calls. It stores the data, updates the ubiEarned counter, and mints tokens.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/EdgeSwarm.sol\":\"EdgeSwarm\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x1b88b3fb3d85ba5496d7d5f396f83ee1fddcdd6762059ff65992655b67920998\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89393bb3212da1c0889601b9706a07b39419ddc4d2faab9eaf6e7f9152cf6a1c\",\"dweb:/ipfs/QmcCfzzxv1Bkdz1c1yF4gQCeYb6Us5BJANnzTFqawfd1HL\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x669464167428061ee0f8618b73b3ee90aff8405683e7ddde8cd77dadaa1afe29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0dda78587a7358b4fdf6b9fca0fde5a5e34930f36d5268a16028627fc0170195\",\"dweb:/ipfs/QmQ1b6cCceDRWNxti9HifsTCzmVP25Haxs1bWugm52vTqH\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/EdgeSwarm.sol\":{\"keccak256\":\"0x547613fe6a309366ffabc7df9fb789f1eced690bf63b8c55e9e7ac6a4a8876d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d416633fe64e571082ffa32dc4f5c527d2687538506c629fd31fdc021785761\",\"dweb:/ipfs/QmVYxg29xeYM8yFHaTHZxg36e13dEHofEezwcJjubufwxv\"]}},\"version\":1}"
        }
      }
    }
  }
}