{
  "id": "ec4b83c30f0346a06afd1d00f0ea68f7",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.12",
  "solcLongVersion": "0.6.12+commit.27d51765",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/MiniChefV2.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity 0.6.12;\r\npragma experimental ABIEncoderV2;\r\n\r\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\r\nimport \"openzeppelin-contracts-legacy/access/Ownable.sol\";\r\nimport \"./libraries/SignedSafeMath.sol\";\r\nimport \"./interfaces/IRewarder.sol\";\r\n\r\ninterface IMigratorChef {\r\n    // Take the current LP token address and return the new LP token address.\r\n    // Migrator should have full access to the caller's LP token.\r\n    function migrate(IERC20 token) external returns (IERC20);\r\n}\r\n\r\n/// @notice The (older) MiniChefV2 contract gives out a reward tokens per block.\r\n// The reward tokens must be topped up regularly to ensure users do not accrue non-existent rewards\r\n// This implementation aims to avoid that issue by using a dynamic window of funding\r\ncontract MiniChefV2 is Ownable {\r\n    using BoringMath for uint256;\r\n    using BoringMath128 for uint128;\r\n    using BoringERC20 for IERC20;\r\n    using SignedSafeMath for int256;\r\n\r\n    /// @notice Info of each MCV2 user.\r\n    /// `amount` LP token amount the user has provided.\r\n    /// `rewardDebt` The amount of reward entitled to the user.\r\n    struct UserInfo {\r\n        uint256 amount;\r\n        int256 rewardDebt;\r\n    }\r\n\r\n    /// @notice Info of each MCV2 pool.\r\n    /// `allocPoint` The amount of allocation points assigned to the pool.\r\n    /// Also known as the amount of reward to distribute per block.\r\n    struct PoolInfo {\r\n        uint128 accRewardPerShare;\r\n        uint64 lastRewardTime;\r\n        uint64 allocPoint;\r\n    }\r\n\r\n    /// @notice Address of reward (PNG) contract.\r\n    IERC20 public immutable REWARD;\r\n    // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner).\r\n    IMigratorChef public migrator;\r\n    bool public migrationDisabled;\r\n\r\n    /// @notice Info of each MCV2 pool.\r\n    PoolInfo[] public poolInfo;\r\n    /// @notice Address of the LP token for each MCV2 pool.\r\n    IERC20[] public lpToken;\r\n    /// @notice Address of each `IRewarder` contract in MCV2.\r\n    IRewarder[] public rewarder;\r\n\r\n    /// @notice Info of each user that stakes LP tokens.\r\n    mapping (uint256 => mapping (address => UserInfo)) public userInfo;\r\n\r\n    /// @dev Tokens added\r\n    mapping (address => bool) public addedTokens;\r\n\r\n    /// @dev Addresses allowed to change rewardsExpiration duration\r\n    mapping (address => bool) private funder;\r\n\r\n    /// @dev Total allocation points. Must be the sum of all allocation points in all pools.\r\n    uint256 public totalAllocPoint;\r\n\r\n    uint256 public rewardPerSecond;\r\n    uint256 private constant ACC_REWARD_PRECISION = 1e12;\r\n\r\n    /// @dev Block time when the rewards per second stops\r\n    uint256 public rewardsExpiration;\r\n\r\n    event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\r\n    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\r\n    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to);\r\n    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);\r\n    event PoolAdded(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder);\r\n    event PoolSet(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite);\r\n    event PoolUpdate(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accRewardPerShare);\r\n    event MigratorSet(address migrator);\r\n    event MigratorDisabled();\r\n    event Migrate(uint256 pid);\r\n    event FunderAdded(address funder);\r\n    event FunderRemoved(address funder);\r\n    event LogRewardPerSecond(uint256 rewardPerSecond);\r\n    event LogRewardsExpiration(uint256 rewardsExpiration);\r\n\r\n    /// @param _rewardToken The reward token contract address.\r\n    /// @param _firstOwner Initial owner of the contract.\r\n    constructor(address _rewardToken, address _firstOwner) public {\r\n        require(\r\n            _rewardToken != address(0)\r\n            && _firstOwner != address(0),\r\n            \"MiniChefV2::Cannot construct with zero address\"\r\n        );\r\n\r\n        REWARD = IERC20(_rewardToken);\r\n        transferOwnership(_firstOwner);\r\n    }\r\n\r\n    /// @notice Returns the number of MCV2 pools.\r\n    function poolLength() public view returns (uint256 pools) {\r\n        pools = poolInfo.length;\r\n    }\r\n\r\n    /// @notice Returns list of all lpTokens for ease of interfacing\r\n    function lpTokens() external view returns (IERC20[] memory) {\r\n        return lpToken;\r\n    }\r\n\r\n    /// @notice Returns list of all pool infos for ease of interfacing\r\n    function poolInfos() external view returns (PoolInfo[] memory) {\r\n        return poolInfo;\r\n    }\r\n\r\n    /// @notice Returns the status of an address as a funder\r\n    function isFunder(address _funder) external view returns (bool allowed) {\r\n        allowed = funder[_funder];\r\n    }\r\n\r\n    /// @notice Add a single reward pool after appropriately updating all pools\r\n    function addPool(uint256 _allocPoint, IERC20 _lpToken, IRewarder _rewarder) external onlyOwner {\r\n        massUpdateAllPools();\r\n        add(_allocPoint, _lpToken, _rewarder);\r\n    }\r\n\r\n\r\n    /// @notice Add multiple reward pools after appropriately updating all pools\r\n    function addPools(uint256[] calldata _allocPoints, IERC20[] calldata _lpTokens, IRewarder[] calldata _rewarders) external onlyOwner {\r\n        require(\r\n            _allocPoints.length == _lpTokens.length\r\n            && _lpTokens.length == _rewarders.length,\r\n            \"MiniChefV2: invalid parameter lengths\"\r\n        );\r\n\r\n        massUpdateAllPools();\r\n\r\n        uint256 len = _allocPoints.length;\r\n        for (uint256 i = 0; i < len; ++i) {\r\n            add(_allocPoints[i], _lpTokens[i], _rewarders[i]);\r\n        }\r\n    }\r\n\r\n    /// @notice Add a new LP to the pool. Can only be called by the owner.\r\n    /// DO NOT add the same LP token more than once. Rewards will be messed up if you do.\r\n    /// @param allocPoint AP of the new pool.\r\n    /// @param _lpToken Address of the LP ERC-20 token.\r\n    /// @param _rewarder Address of the rewarder delegate.\r\n    function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) internal {\r\n        require(addedTokens[address(_lpToken)] == false, \"Token already added\");\r\n        totalAllocPoint = totalAllocPoint.add(allocPoint);\r\n        lpToken.push(_lpToken);\r\n        rewarder.push(_rewarder);\r\n\r\n        poolInfo.push(PoolInfo({\r\n            allocPoint: allocPoint.to64(),\r\n            lastRewardTime: block.timestamp.to64(),\r\n            accRewardPerShare: 0\r\n        }));\r\n        addedTokens[address(_lpToken)] = true;\r\n        emit PoolAdded(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder);\r\n    }\r\n\r\n    /// @notice Change information for one pool after appropriately updating all pools\r\n    function setPool(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) external onlyOwner {\r\n        massUpdateAllPools();\r\n        set(_pid, _allocPoint, _rewarder, overwrite);\r\n    }\r\n\r\n    /// @notice Change information for multiple pools after appropriately updating all pools\r\n    function setPools(uint256[] calldata pids, uint256[] calldata allocPoints, IRewarder[] calldata rewarders, bool[] calldata overwrites) external onlyOwner {\r\n        require(\r\n            pids.length == allocPoints.length\r\n            && allocPoints.length == rewarders.length\r\n            && rewarders.length == overwrites.length,\r\n            \"MiniChefV2: invalid parameter lengths\"\r\n        );\r\n\r\n        massUpdateAllPools();\r\n\r\n        uint256 len = pids.length;\r\n        for (uint256 i = 0; i < len; ++i) {\r\n            set(pids[i], allocPoints[i], rewarders[i], overwrites[i]);\r\n        }\r\n    }\r\n\r\n    /// @notice Update the given pool's reward allocation point and `IRewarder` contract. Can only be called by the owner.\r\n    /// @param _pid The index of the pool. See `poolInfo`.\r\n    /// @param _allocPoint New AP of the pool.\r\n    /// @param _rewarder Address of the rewarder delegate.\r\n    /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored.\r\n    function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) internal {\r\n        totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint);\r\n        poolInfo[_pid].allocPoint = _allocPoint.to64();\r\n        if (overwrite) { rewarder[_pid] = _rewarder; }\r\n        emit PoolSet(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite);\r\n    }\r\n\r\n    /// @notice Set the `migrator` contract. Can only be called by the owner.\r\n    /// @param _migrator The contract address to set.\r\n    function setMigrator(IMigratorChef _migrator) public onlyOwner {\r\n        require(!migrationDisabled, \"MiniChefV2: migration has been disabled\");\r\n        migrator = _migrator;\r\n        emit MigratorSet(address(_migrator));\r\n    }\r\n\r\n    /// @notice Permanently disable the `migrator` functionality.\r\n    /// This can only effectively be called once.\r\n    function disableMigrator() public onlyOwner {\r\n        migrationDisabled = true;\r\n        emit MigratorDisabled();\r\n    }\r\n\r\n    /// @notice Migrate LP token to another LP contract through the `migrator` contract.\r\n    /// @param _pid The index of the pool. See `poolInfo`.\r\n    function migrate(uint256 _pid) public onlyOwner {\r\n        require(!migrationDisabled, \"MiniChefV2: migration has been disabled\");\r\n        require(address(migrator) != address(0), \"MiniChefV2: no migrator set\");\r\n        IERC20 _lpToken = lpToken[_pid];\r\n        uint256 bal = _lpToken.balanceOf(address(this));\r\n        _lpToken.approve(address(migrator), bal);\r\n        IERC20 newLpToken = migrator.migrate(_lpToken);\r\n        require(bal == newLpToken.balanceOf(address(this)), \"MiniChefV2: migrated balance must match\");\r\n        lpToken[_pid] = newLpToken;\r\n        emit Migrate(_pid);\r\n    }\r\n\r\n    /// @notice View function to see pending reward on frontend.\r\n    /// @param _pid The index of the pool. See `poolInfo`.\r\n    /// @param _user Address of user.\r\n    /// @return pending reward for a given user.\r\n    function pendingReward(uint256 _pid, address _user) external view returns (uint256 pending) {\r\n        PoolInfo memory pool = poolInfo[_pid];\r\n        UserInfo storage user = userInfo[_pid][_user];\r\n        uint256 accRewardPerShare = pool.accRewardPerShare;\r\n        uint256 lpSupply = lpToken[_pid].balanceOf(address(this));\r\n        if (block.timestamp > pool.lastRewardTime && lpSupply != 0) {\r\n            uint256 time = block.timestamp <= rewardsExpiration\r\n                ? block.timestamp.sub(pool.lastRewardTime) // Accrue rewards until now\r\n                : rewardsExpiration > pool.lastRewardTime\r\n                    ? rewardsExpiration.sub(pool.lastRewardTime) // Accrue rewards until expiration\r\n                    : 0; // No rewards to accrue\r\n            uint256 reward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\r\n            accRewardPerShare = accRewardPerShare.add(reward.mul(ACC_REWARD_PRECISION) / lpSupply);\r\n        }\r\n        pending = int256(user.amount.mul(accRewardPerShare) / ACC_REWARD_PRECISION).sub(user.rewardDebt).toUInt256();\r\n    }\r\n\r\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\r\n    /// @param pids Pool IDs of all to be updated. Make sure to update all active pools.\r\n    function massUpdatePools(uint256[] calldata pids) external {\r\n        uint256 len = pids.length;\r\n        for (uint256 i = 0; i < len; ++i) {\r\n            updatePool(pids[i]);\r\n        }\r\n    }\r\n\r\n    /// @notice Update reward variables for all pools. Be careful of gas spending!\r\n    function massUpdateAllPools() public {\r\n        uint256 len = poolInfo.length;\r\n        for (uint256 pid = 0; pid < len; ++pid) {\r\n            updatePool(pid);\r\n        }\r\n    }\r\n\r\n    /// @notice Update reward variables of the given pool.\r\n    /// @param pid The index of the pool. See `poolInfo`.\r\n    /// @return pool Returns the pool that was updated.\r\n    function updatePool(uint256 pid) public returns (PoolInfo memory pool) {\r\n        pool = poolInfo[pid];\r\n        if (block.timestamp > pool.lastRewardTime) {\r\n            uint256 lpSupply = lpToken[pid].balanceOf(address(this));\r\n            if (lpSupply > 0) {\r\n                uint256 time = block.timestamp <= rewardsExpiration\r\n                    ? block.timestamp.sub(pool.lastRewardTime) // Accrue rewards until now\r\n                    : rewardsExpiration > pool.lastRewardTime\r\n                        ? rewardsExpiration.sub(pool.lastRewardTime) // Accrue rewards until expiration\r\n                        : 0; // No rewards to accrue\r\n                uint256 reward = time.mul(rewardPerSecond).mul(pool.allocPoint) / totalAllocPoint;\r\n                pool.accRewardPerShare = pool.accRewardPerShare.add((reward.mul(ACC_REWARD_PRECISION) / lpSupply).to128());\r\n            }\r\n            pool.lastRewardTime = block.timestamp.to64();\r\n            poolInfo[pid] = pool;\r\n            emit PoolUpdate(pid, pool.lastRewardTime, lpSupply, pool.accRewardPerShare);\r\n        }\r\n    }\r\n\r\n    /// @notice Deposit LP tokens to MCV2 for reward allocation.\r\n    /// @param pid The index of the pool. See `poolInfo`.\r\n    /// @param amount LP token amount to deposit.\r\n    /// @param to The receiver of `amount` deposit benefit.\r\n    function deposit(uint256 pid, uint256 amount, address to) public {\r\n        PoolInfo memory pool = updatePool(pid);\r\n        UserInfo storage user = userInfo[pid][to];\r\n\r\n        // Effects\r\n        user.amount = user.amount.add(amount);\r\n        user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accRewardPerShare) / ACC_REWARD_PRECISION));\r\n\r\n        // Interactions\r\n        IRewarder _rewarder = rewarder[pid];\r\n        if (address(_rewarder) != address(0)) {\r\n            _rewarder.onReward(pid, to, to, 0, user.amount);\r\n        }\r\n\r\n        lpToken[pid].safeTransferFrom(msg.sender, address(this), amount);\r\n\r\n        emit Deposit(msg.sender, pid, amount, to);\r\n    }\r\n\r\n    function depositWithPermit(uint256 pid, uint256 amount, address to, uint deadline, uint8 v, bytes32 r, bytes32 s) external {\r\n        // permit\r\n        lpToken[pid].permit(msg.sender, address(this), amount, deadline, v, r, s);\r\n\r\n        // deposit\r\n        deposit(pid, amount, to);\r\n    }\r\n\r\n    /// @notice Withdraw LP tokens from MCV2.\r\n    /// @param pid The index of the pool. See `poolInfo`.\r\n    /// @param amount LP token amount to withdraw.\r\n    /// @param to Receiver of the LP tokens.\r\n    function withdraw(uint256 pid, uint256 amount, address to) public {\r\n        PoolInfo memory pool = updatePool(pid);\r\n        UserInfo storage user = userInfo[pid][msg.sender];\r\n\r\n        // Effects\r\n        user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accRewardPerShare) / ACC_REWARD_PRECISION));\r\n        user.amount = user.amount.sub(amount);\r\n\r\n        // Interactions\r\n        IRewarder _rewarder = rewarder[pid];\r\n        if (address(_rewarder) != address(0)) {\r\n            _rewarder.onReward(pid, msg.sender, to, 0, user.amount);\r\n        }\r\n\r\n        lpToken[pid].safeTransfer(to, amount);\r\n\r\n        emit Withdraw(msg.sender, pid, amount, to);\r\n    }\r\n\r\n    /// @notice Harvest proceeds for transaction sender to `to`.\r\n    /// @param pid The index of the pool. See `poolInfo`.\r\n    /// @param to Receiver of rewards.\r\n    function harvest(uint256 pid, address to) public {\r\n        PoolInfo memory pool = updatePool(pid);\r\n        UserInfo storage user = userInfo[pid][msg.sender];\r\n        int256 accumulatedReward = int256(user.amount.mul(pool.accRewardPerShare) / ACC_REWARD_PRECISION);\r\n        uint256 _pendingReward = accumulatedReward.sub(user.rewardDebt).toUInt256();\r\n\r\n        // Effects\r\n        user.rewardDebt = accumulatedReward;\r\n\r\n        // Interactions\r\n        if (_pendingReward != 0) {\r\n            REWARD.safeTransfer(to, _pendingReward);\r\n        }\r\n\r\n        IRewarder _rewarder = rewarder[pid];\r\n        if (address(_rewarder) != address(0)) {\r\n            _rewarder.onReward( pid, msg.sender, to, _pendingReward, user.amount);\r\n        }\r\n\r\n        emit Harvest(msg.sender, pid, _pendingReward);\r\n    }\r\n\r\n    /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\r\n    /// @param pid The index of the pool. See `poolInfo`.\r\n    /// @param amount LP token amount to withdraw.\r\n    /// @param to Receiver of the LP tokens and rewards.\r\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public {\r\n        PoolInfo memory pool = updatePool(pid);\r\n        UserInfo storage user = userInfo[pid][msg.sender];\r\n        int256 accumulatedReward = int256(user.amount.mul(pool.accRewardPerShare) / ACC_REWARD_PRECISION);\r\n        uint256 _pendingReward = accumulatedReward.sub(user.rewardDebt).toUInt256();\r\n\r\n        // Effects\r\n        user.rewardDebt = accumulatedReward.sub(int256(amount.mul(pool.accRewardPerShare) / ACC_REWARD_PRECISION));\r\n        user.amount = user.amount.sub(amount);\r\n\r\n        // Interactions\r\n        REWARD.safeTransfer(to, _pendingReward);\r\n\r\n        IRewarder _rewarder = rewarder[pid];\r\n        if (address(_rewarder) != address(0)) {\r\n            _rewarder.onReward(pid, msg.sender, to, _pendingReward, user.amount);\r\n        }\r\n\r\n        lpToken[pid].safeTransfer(to, amount);\r\n\r\n        emit Withdraw(msg.sender, pid, amount, to);\r\n        emit Harvest(msg.sender, pid, _pendingReward);\r\n    }\r\n\r\n    /// @notice Withdraw without caring about rewards. EMERGENCY ONLY.\r\n    /// @param pid The index of the pool. See `poolInfo`.\r\n    /// @param to Receiver of the LP tokens.\r\n    function emergencyWithdraw(uint256 pid, address to) public {\r\n        UserInfo storage user = userInfo[pid][msg.sender];\r\n        uint256 amount = user.amount;\r\n        user.amount = 0;\r\n        user.rewardDebt = 0;\r\n\r\n        // Note: transfer can fail or succeed if `amount` is zero.\r\n        lpToken[pid].safeTransfer(to, amount);\r\n        emit EmergencyWithdraw(msg.sender, pid, amount, to);\r\n    }\r\n\r\n    /// @notice Give permission for an address to change the rewards duration\r\n    /// @param _funder The address to be added\r\n    function addFunder(address _funder) external onlyOwner {\r\n        funder[_funder] = true;\r\n        emit FunderAdded(_funder);\r\n    }\r\n\r\n    /// @notice Remove permission for an address to change the rewards duration\r\n    /// @param _funder The address to be removed\r\n    function removeFunder(address _funder) external onlyOwner {\r\n        funder[_funder] = false;\r\n        emit FunderRemoved(_funder);\r\n    }\r\n\r\n    modifier onlyFunder() {\r\n        require(msg.sender == owner() || funder[msg.sender] == true, \"MiniChefV2: caller is not a funder\");\r\n        _;\r\n    }\r\n\r\n    /// @notice Add funding and potentially extend duration of the rolling reward period\r\n    /// @param funding Amount of reward token to add\r\n    /// @param duration Total time (seconds) during which the additional funds are distributed\r\n    function fundRewards(uint256 funding, uint256 duration) external onlyFunder {\r\n        require(funding > 0, \"MiniChefV2: funding cannot be zero\");\r\n\r\n        REWARD.safeTransferFrom(msg.sender, address(this), funding);\r\n\r\n        if (block.timestamp >= rewardsExpiration) {\r\n            require(duration > 0, \"MiniChefV2: reward duration cannot be zero\");\r\n            massUpdateAllPools();\r\n            rewardsExpiration = block.timestamp.add(duration);\r\n            rewardPerSecond = funding / duration;\r\n        } else {\r\n            uint256 remainingTime = rewardsExpiration.sub(block.timestamp);\r\n            uint256 remainingRewards = remainingTime.mul(rewardPerSecond);\r\n            uint256 newRewardsExpiration = rewardsExpiration.add(duration);\r\n            uint256 newRewardPerSecond = remainingRewards.add(funding) / (newRewardsExpiration.sub(block.timestamp));\r\n            if (newRewardPerSecond != rewardPerSecond) {\r\n                massUpdateAllPools();\r\n            }\r\n            rewardsExpiration = newRewardsExpiration;\r\n            rewardPerSecond = newRewardPerSecond;\r\n        }\r\n\r\n        emit LogRewardPerSecond(rewardPerSecond);\r\n        emit LogRewardsExpiration(rewardsExpiration);\r\n    }\r\n\r\n    /// @notice Allocate the existing rewards during a newly defined period starting now\r\n    /// @param duration Time (seconds) to fully distribute the currently present rewards\r\n    function resetRewardsDuration(uint256 duration) external onlyOwner {\r\n        require(duration > 0, \"MiniChefV2: reward duration cannot be zero\");\r\n\r\n        massUpdateAllPools();\r\n\r\n        uint256 remainingTime = rewardsExpiration.sub(block.timestamp);\r\n        uint256 remainingRewards = remainingTime.mul(rewardPerSecond);\r\n        rewardsExpiration = block.timestamp.add(duration);\r\n        rewardPerSecond = remainingRewards / (rewardsExpiration.sub(block.timestamp));\r\n\r\n        emit LogRewardPerSecond(rewardPerSecond);\r\n        emit LogRewardsExpiration(rewardsExpiration);\r\n    }\r\n\r\n    /// @notice Extends the rolling reward period by adding funds without changing the reward rate\r\n    /// @param funding Amount of reward token to add\r\n    /// @notice minExtension Minimum time (seconds) that the reward duration must be increased\r\n    function extendRewardsViaFunding(uint256 funding, uint256 minExtension) external {\r\n        require(funding > 0, \"MiniChefV2: funding amount cannot be zero\");\r\n\r\n        uint256 extensionDuration = funding / rewardPerSecond;\r\n        require(extensionDuration >= minExtension, \"MiniChefV2: insufficient extension limit\");\r\n\r\n        rewardsExpiration = rewardsExpiration.add(extensionDuration);\r\n\r\n        REWARD.safeTransferFrom(msg.sender, address(this), funding);\r\n\r\n        emit LogRewardsExpiration(rewardsExpiration);\r\n    }\r\n\r\n    /// @notice Extends the rolling reward period by adding funds without changing the reward rate\r\n    /// @param extension Time (seconds) to increase the rewards duration\r\n    /// @param maxFunding Maximum amount of the reward token that can be used\r\n    function extendRewardsViaDuration(uint256 extension, uint256 maxFunding) external {\r\n        require(extension > 0, \"MiniChefV2: extension duration cannot be zero\");\r\n\r\n        uint256 fundingRequired = rewardPerSecond.mul(extension);\r\n        require(fundingRequired <= maxFunding, \"MiniChefV2: insufficient funding limit\");\r\n\r\n        rewardsExpiration = rewardsExpiration.add(extension);\r\n\r\n        REWARD.safeTransferFrom(msg.sender, address(this), fundingRequired);\r\n\r\n        emit LogRewardsExpiration(rewardsExpiration);\r\n    }\r\n}\r\n"
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.6.12;\r\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\r\nlibrary BoringMath {\r\n    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \"BoringMath: Mul Overflow\");}\r\n    function to128(uint256 a) internal pure returns (uint128 c) {\r\n        require(a <= uint128(-1), \"BoringMath: uint128 Overflow\");\r\n        c = uint128(a);\r\n    }\r\n    function to64(uint256 a) internal pure returns (uint64 c) {\r\n        require(a <= uint64(-1), \"BoringMath: uint64 Overflow\");\r\n        c = uint64(a);\r\n    }\r\n    function to32(uint256 a) internal pure returns (uint32 c) {\r\n        require(a <= uint32(-1), \"BoringMath: uint32 Overflow\");\r\n        c = uint32(a);\r\n    }\r\n}\r\n\r\nlibrary BoringMath128 {\r\n    function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n}\r\n\r\nlibrary BoringMath64 {\r\n    function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n}\r\n\r\nlibrary BoringMath32 {\r\n    function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, \"BoringMath: Add Overflow\");}\r\n    function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, \"BoringMath: Underflow\");}\r\n}"
      },
      "openzeppelin-contracts-legacy/access/Ownable.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"../GSN/Context.sol\";\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor () internal {\n        address msgSender = _msgSender();\n        _owner = msgSender;\n        emit OwnershipTransferred(address(0), msgSender);\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(_owner == _msgSender(), \"Ownable: caller is not the owner\");\n        _;\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        emit OwnershipTransferred(_owner, address(0));\n        _owner = address(0);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        emit OwnershipTransferred(_owner, newOwner);\n        _owner = newOwner;\n    }\n}\n"
      },
      "contracts/libraries/SignedSafeMath.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity 0.6.12;\r\n\r\nlibrary SignedSafeMath {\r\n    int256 constant private _INT256_MIN = -2**255;\r\n\r\n    /**\r\n     * @dev Returns the multiplication of two signed integers, reverting on\r\n     * overflow.\r\n     *\r\n     * Counterpart to Solidity's `*` operator.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - Multiplication cannot overflow.\r\n     */\r\n    function mul(int256 a, int256 b) internal pure returns (int256) {\r\n        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\r\n        // benefit is lost if 'b' is also tested.\r\n        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\r\n        if (a == 0) {\r\n            return 0;\r\n        }\r\n\r\n        require(!(a == -1 && b == _INT256_MIN), \"SignedSafeMath: multiplication overflow\");\r\n\r\n        int256 c = a * b;\r\n        require(c / a == b, \"SignedSafeMath: multiplication overflow\");\r\n\r\n        return c;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the integer division of two signed integers. Reverts on\r\n     * division by zero. The result is rounded towards zero.\r\n     *\r\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\r\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\r\n     * uses an invalid opcode to revert (consuming all remaining gas).\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - The divisor cannot be zero.\r\n     */\r\n    function div(int256 a, int256 b) internal pure returns (int256) {\r\n        require(b != 0, \"SignedSafeMath: division by zero\");\r\n        require(!(b == -1 && a == _INT256_MIN), \"SignedSafeMath: division overflow\");\r\n\r\n        int256 c = a / b;\r\n\r\n        return c;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the subtraction of two signed integers, reverting on\r\n     * overflow.\r\n     *\r\n     * Counterpart to Solidity's `-` operator.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - Subtraction cannot overflow.\r\n     */\r\n    function sub(int256 a, int256 b) internal pure returns (int256) {\r\n        int256 c = a - b;\r\n        require((b >= 0 && c <= a) || (b < 0 && c > a), \"SignedSafeMath: subtraction overflow\");\r\n\r\n        return c;\r\n    }\r\n\r\n    /**\r\n     * @dev Returns the addition of two signed integers, reverting on\r\n     * overflow.\r\n     *\r\n     * Counterpart to Solidity's `+` operator.\r\n     *\r\n     * Requirements:\r\n     *\r\n     * - Addition cannot overflow.\r\n     */\r\n    function add(int256 a, int256 b) internal pure returns (int256) {\r\n        int256 c = a + b;\r\n        require((b >= 0 && c >= a) || (b < 0 && c < a), \"SignedSafeMath: addition overflow\");\r\n\r\n        return c;\r\n    }\r\n\r\n    function toUInt256(int256 a) internal pure returns (uint256) {\r\n        require(a >= 0, \"Integer < 0\");\r\n        return uint256(a);\r\n    }\r\n}"
      },
      "contracts/interfaces/IRewarder.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity 0.6.12;\r\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\r\n\r\ninterface IRewarder {\r\n    using BoringERC20 for IERC20;\r\n    function onReward(uint256 pid, address user, address recipient, uint256 rewardAmount, uint256 newLpAmount) external;\r\n    function pendingTokens(uint256 pid, address user, uint256 rewardAmount) external view returns (IERC20[] memory, uint256[] memory);\r\n}\r\n"
      },
      "openzeppelin-contracts-legacy/GSN/Context.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN 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 payable) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes memory) {\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n        return msg.data;\n    }\n}\n"
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol": {
        "content": "// SPDX-License-Identifier: UNLICENSED\r\npragma solidity 0.6.12;\r\n\r\nimport \"../interfaces/IERC20.sol\";\r\n\r\nlibrary BoringERC20 {\r\n    function safeSymbol(IERC20 token) internal view returns(string memory) {\r\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\r\n        return success && data.length > 0 ? abi.decode(data, (string)) : \"???\";\r\n    }\r\n\r\n    function safeName(IERC20 token) internal view returns(string memory) {\r\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\r\n        return success && data.length > 0 ? abi.decode(data, (string)) : \"???\";\r\n    }\r\n\r\n    function safeDecimals(IERC20 token) internal view returns (uint8) {\r\n        (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\r\n        return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\r\n    }\r\n\r\n    function safeTransfer(IERC20 token, address to, uint256 amount) internal {\r\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \"BoringERC20: Transfer failed\");\r\n    }\r\n\r\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {\r\n        (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount));\r\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \"BoringERC20: TransferFrom failed\");\r\n    }\r\n}"
      },
      "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.6.12;\r\n\r\ninterface IERC20 {\r\n    function totalSupply() external view returns (uint256);\r\n    function balanceOf(address account) external view returns (uint256);\r\n    function allowance(address owner, address spender) external view returns (uint256);\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n\r\n    // EIP 2612\r\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\r\n}"
      },
      "contracts/RewarderSimple.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity 0.6.12;\r\n\r\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\";\r\nimport \"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\";\r\n\r\nimport \"./interfaces/IRewarder.sol\";\r\n\r\ncontract RewarderSimple is IRewarder {\r\n    using BoringMath for uint256;\r\n    using BoringERC20 for IERC20;\r\n    uint256 private immutable rewardMultiplier;\r\n    IERC20 private immutable rewardToken;\r\n    uint256 private immutable REWARD_TOKEN_DIVISOR;\r\n    address private immutable MASTERCHEF_V2;\r\n\r\n    constructor (uint256 _rewardMultiplier, address _rewardToken, uint256 _rewardDecimals, address _MASTERCHEF_V2) public {\r\n        require(_rewardMultiplier > 0, \"RewarderSimple::Invalid multiplier\");\r\n        require(_rewardDecimals <= 77, \"RewarderSimple::Invalid decimals\");\r\n        require(\r\n            _rewardToken != address(0)\r\n            && _MASTERCHEF_V2 != address(0),\r\n            \"RewarderSimple::Cannot construct with zero address\"\r\n        );\r\n\r\n        rewardMultiplier = _rewardMultiplier;\r\n        rewardToken = IERC20(_rewardToken);\r\n        REWARD_TOKEN_DIVISOR = 10 ** _rewardDecimals;\r\n        MASTERCHEF_V2 = _MASTERCHEF_V2;\r\n    }\r\n\r\n    function onReward(uint256, address, address to, uint256 rewardAmount, uint256) onlyMCV2 override external {\r\n        uint256 pendingReward = rewardAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\r\n        uint256 rewardBal = rewardToken.balanceOf(address(this));\r\n        if (pendingReward > rewardBal) {\r\n            rewardToken.safeTransfer(to, rewardBal);\r\n        } else {\r\n            rewardToken.safeTransfer(to, pendingReward);\r\n        }\r\n    }\r\n\r\n    function pendingTokens(uint256, address, uint256 rewardAmount) override external view returns (IERC20[] memory rewardTokens, uint256[] memory rewardAmounts) {\r\n        IERC20[] memory _rewardTokens = new IERC20[](1);\r\n        _rewardTokens[0] = (rewardToken);\r\n        uint256[] memory _rewardAmounts = new uint256[](1);\r\n        _rewardAmounts[0] = rewardAmount.mul(rewardMultiplier) / REWARD_TOKEN_DIVISOR;\r\n        return (_rewardTokens, _rewardAmounts);\r\n    }\r\n\r\n    modifier onlyMCV2 {\r\n        require(\r\n            msg.sender == MASTERCHEF_V2,\r\n            \"Only MCV2 can call this function.\"\r\n        );\r\n        _;\r\n    }\r\n\r\n}"
      },
      "contracts/interfaces/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\npragma solidity 0.6.12;\r\n\r\ninterface IERC20 {\r\n    function totalSupply() external view returns (uint256);\r\n    function balanceOf(address account) external view returns (uint256);\r\n    function allowance(address owner, address spender) external view returns (uint256);\r\n    function approve(address spender, uint256 amount) external returns (bool);\r\n    event Transfer(address indexed from, address indexed to, uint256 value);\r\n    event Approval(address indexed owner, address indexed spender, uint256 value);\r\n\r\n    // EIP 2612\r\n    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\r\n}\r\n"
      },
      "contracts/interfaces/IMiniChefV2.sol": {
        "content": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity 0.6.12;\r\npragma experimental ABIEncoderV2;\r\n\r\ninterface IMiniChefV2 {\r\n    struct UserInfo {\r\n        uint256 amount;\r\n        uint256 rewardDebt;\r\n    }\r\n\r\n    struct PoolInfo {\r\n        uint128 accRewardPerShare;\r\n        uint64 lastRewardTime;\r\n        uint64 allocPoint;\r\n    }\r\n\r\n    function poolLength() external view returns (uint256);\r\n    function updatePool(uint256 pid) external returns (IMiniChefV2.PoolInfo memory);\r\n    function userInfo(uint256 _pid, address _user) external view returns (uint256, uint256);\r\n    function deposit(uint256 pid, uint256 amount, address to) external;\r\n    function withdraw(uint256 pid, uint256 amount, address to) external;\r\n    function harvest(uint256 pid, address to) external;\r\n    function withdrawAndHarvest(uint256 pid, uint256 amount, address to) external;\r\n    function emergencyWithdraw(uint256 pid, address to) external;\r\n\r\n    function disableMigrator() external;\r\n    function migrate(uint256 _pid) external;\r\n\r\n    function addFunder(address _funder) external;\r\n    function removeFunder(address _funder) external;\r\n    function fundRewards(uint256 funding, uint256 duration) external;\r\n    function resetRewardsDuration(uint256 duration) external;\r\n    function extendRewardsViaFunding(uint256 funding, uint256 minExtension) external;\r\n    function extendRewardsViaDuration(uint256 extension, uint256 maxFunding) external;\r\n}\r\n"
      },
      "contracts/MockContract.sol": {
        "content": "pragma solidity ^0.6.4;\n\ninterface MockInterface {\n\t/**\n\t * @dev After calling this method, the mock will return `response` when it is called\n\t * with any calldata that is not mocked more specifically below\n\t * (e.g. using givenMethodReturn).\n\t * @param response ABI encoded response that will be returned if method is invoked\n\t */\n\tfunction givenAnyReturn(bytes calldata response) external;\n\tfunction givenAnyReturnBool(bool response) external;\n\tfunction givenAnyReturnUint(uint response) external;\n\tfunction givenAnyReturnAddress(address response) external;\n\n\tfunction givenAnyRevert() external;\n\tfunction givenAnyRevertWithMessage(string calldata message) external;\n\tfunction givenAnyRunOutOfGas() external;\n\n\t/**\n\t * @dev After calling this method, the mock will return `response` when the given\n\t * methodId is called regardless of arguments. If the methodId and arguments\n\t * are mocked more specifically (using `givenMethodAndArguments`) the latter\n\t * will take precedence.\n\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\n\t * @param response ABI encoded response that will be returned if method is invoked\n\t */\n\tfunction givenMethodReturn(bytes calldata method, bytes calldata response) external;\n\tfunction givenMethodReturnBool(bytes calldata method, bool response) external;\n\tfunction givenMethodReturnUint(bytes calldata method, uint response) external;\n\tfunction givenMethodReturnAddress(bytes calldata method, address response) external;\n\n\tfunction givenMethodRevert(bytes calldata method) external;\n\tfunction givenMethodRevertWithMessage(bytes calldata method, string calldata message) external;\n\tfunction givenMethodRunOutOfGas(bytes calldata method) external;\n\n\t/**\n\t * @dev After calling this method, the mock will return `response` when the given\n\t * methodId is called with matching arguments. These exact calldataMocks will take\n\t * precedence over all other calldataMocks.\n\t * @param call ABI encoded calldata (methodId and arguments)\n\t * @param response ABI encoded response that will be returned if contract is invoked with calldata\n\t */\n\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) external;\n\tfunction givenCalldataReturnBool(bytes calldata call, bool response) external;\n\tfunction givenCalldataReturnUint(bytes calldata call, uint response) external;\n\tfunction givenCalldataReturnAddress(bytes calldata call, address response) external;\n\n\tfunction givenCalldataRevert(bytes calldata call) external;\n\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) external;\n\tfunction givenCalldataRunOutOfGas(bytes calldata call) external;\n\n\t/**\n\t * @dev Returns the number of times anything has been called on this mock since last reset\n\t */\n\tfunction invocationCount() external returns (uint);\n\n\t/**\n\t * @dev Returns the number of times the given method has been called on this mock since last reset\n\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\n\t */\n\tfunction invocationCountForMethod(bytes calldata method) external returns (uint);\n\n\t/**\n\t * @dev Returns the number of times this mock has been called with the exact calldata since last reset.\n\t * @param call ABI encoded calldata (methodId and arguments)\n\t */\n\tfunction invocationCountForCalldata(bytes calldata call) external returns (uint);\n\n\t/**\n\t * @dev Resets all mocked methods and invocation counts.\n\t */\n\t function reset() external;\n}\n\n/**\n * Implementation of the MockInterface.\n */\ncontract MockContract is MockInterface {\n\tenum MockType { Return, Revert, OutOfGas }\n\t\n\tbytes32 public constant MOCKS_LIST_START = hex\"01\";\n\tbytes public constant MOCKS_LIST_END = \"0xff\";\n\tbytes32 public constant MOCKS_LIST_END_HASH = keccak256(MOCKS_LIST_END);\n\tbytes4 public constant SENTINEL_ANY_MOCKS = hex\"01\";\n\tbytes public constant DEFAULT_FALLBACK_VALUE = abi.encode(false);\n\n\t// A linked list allows easy iteration and inclusion checks\n\tmapping(bytes32 => bytes) calldataMocks;\n\tmapping(bytes => MockType) calldataMockTypes;\n\tmapping(bytes => bytes) calldataExpectations;\n\tmapping(bytes => string) calldataRevertMessage;\n\tmapping(bytes32 => uint) calldataInvocations;\n\n\tmapping(bytes4 => bytes4) methodIdMocks;\n\tmapping(bytes4 => MockType) methodIdMockTypes;\n\tmapping(bytes4 => bytes) methodIdExpectations;\n\tmapping(bytes4 => string) methodIdRevertMessages;\n\tmapping(bytes32 => uint) methodIdInvocations;\n\n\tMockType fallbackMockType;\n\tbytes fallbackExpectation = DEFAULT_FALLBACK_VALUE;\n\tstring fallbackRevertMessage;\n\tuint invocations;\n\tuint resetCount;\n\n\tconstructor() public {\n\t\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\n\t\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\n\t}\n\n\tfunction trackCalldataMock(bytes memory call) private {\n\t\tbytes32 callHash = keccak256(call);\n\t\tif (calldataMocks[callHash].length == 0) {\n\t\t\tcalldataMocks[callHash] = calldataMocks[MOCKS_LIST_START];\n\t\t\tcalldataMocks[MOCKS_LIST_START] = call;\n\t\t}\n\t}\n\n\tfunction trackMethodIdMock(bytes4 methodId) private {\n\t\tif (methodIdMocks[methodId] == 0x0) {\n\t\t\tmethodIdMocks[methodId] = methodIdMocks[SENTINEL_ANY_MOCKS];\n\t\t\tmethodIdMocks[SENTINEL_ANY_MOCKS] = methodId;\n\t\t}\n\t}\n\n\tfunction _givenAnyReturn(bytes memory response) internal {\n\t\tfallbackMockType = MockType.Return;\n\t\tfallbackExpectation = response;\n\t}\n\n\tfunction givenAnyReturn(bytes calldata response) override external {\n\t\t_givenAnyReturn(response);\n\t}\n\n\tfunction givenAnyReturnBool(bool response) override external {\n\t\tuint flag = response ? 1 : 0;\n\t\t_givenAnyReturn(uintToBytes(flag));\n\t}\n\n\tfunction givenAnyReturnUint(uint response) override external {\n\t\t_givenAnyReturn(uintToBytes(response));\t\n\t}\n\n\tfunction givenAnyReturnAddress(address response) override external {\n\t\t_givenAnyReturn(uintToBytes(uint(response)));\n\t}\n\n\tfunction givenAnyRevert() override external {\n\t\tfallbackMockType = MockType.Revert;\n\t\tfallbackRevertMessage = \"\";\n\t}\n\n\tfunction givenAnyRevertWithMessage(string calldata message) override external {\n\t\tfallbackMockType = MockType.Revert;\n\t\tfallbackRevertMessage = message;\n\t}\n\n\tfunction givenAnyRunOutOfGas() override external {\n\t\tfallbackMockType = MockType.OutOfGas;\n\t}\n\n\tfunction _givenCalldataReturn(bytes memory call, bytes memory response) private  {\n\t\tcalldataMockTypes[call] = MockType.Return;\n\t\tcalldataExpectations[call] = response;\n\t\ttrackCalldataMock(call);\n\t}\n\n\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) override external  {\n\t\t_givenCalldataReturn(call, response);\n\t}\n\n\tfunction givenCalldataReturnBool(bytes calldata call, bool response) override external {\n\t\tuint flag = response ? 1 : 0;\n\t\t_givenCalldataReturn(call, uintToBytes(flag));\n\t}\n\n\tfunction givenCalldataReturnUint(bytes calldata call, uint response) override external {\n\t\t_givenCalldataReturn(call, uintToBytes(response));\n\t}\n\n\tfunction givenCalldataReturnAddress(bytes calldata call, address response) override external {\n\t\t_givenCalldataReturn(call, uintToBytes(uint(response)));\n\t}\n\n\tfunction _givenMethodReturn(bytes memory call, bytes memory response) private {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\tmethodIdMockTypes[method] = MockType.Return;\n\t\tmethodIdExpectations[method] = response;\n\t\ttrackMethodIdMock(method);\t\t\n\t}\n\n\tfunction givenMethodReturn(bytes calldata call, bytes calldata response) override external {\n\t\t_givenMethodReturn(call, response);\n\t}\n\n\tfunction givenMethodReturnBool(bytes calldata call, bool response) override external {\n\t\tuint flag = response ? 1 : 0;\n\t\t_givenMethodReturn(call, uintToBytes(flag));\n\t}\n\n\tfunction givenMethodReturnUint(bytes calldata call, uint response) override external {\n\t\t_givenMethodReturn(call, uintToBytes(response));\n\t}\n\n\tfunction givenMethodReturnAddress(bytes calldata call, address response) override external {\n\t\t_givenMethodReturn(call, uintToBytes(uint(response)));\n\t}\n\n\tfunction givenCalldataRevert(bytes calldata call) override external {\n\t\tcalldataMockTypes[call] = MockType.Revert;\n\t\tcalldataRevertMessage[call] = \"\";\n\t\ttrackCalldataMock(call);\n\t}\n\n\tfunction givenMethodRevert(bytes calldata call) override external {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\tmethodIdMockTypes[method] = MockType.Revert;\n\t\ttrackMethodIdMock(method);\t\t\n\t}\n\n\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) override external {\n\t\tcalldataMockTypes[call] = MockType.Revert;\n\t\tcalldataRevertMessage[call] = message;\n\t\ttrackCalldataMock(call);\n\t}\n\n\tfunction givenMethodRevertWithMessage(bytes calldata call, string calldata message) override external {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\tmethodIdMockTypes[method] = MockType.Revert;\n\t\tmethodIdRevertMessages[method] = message;\n\t\ttrackMethodIdMock(method);\t\t\n\t}\n\n\tfunction givenCalldataRunOutOfGas(bytes calldata call) override external {\n\t\tcalldataMockTypes[call] = MockType.OutOfGas;\n\t\ttrackCalldataMock(call);\n\t}\n\n\tfunction givenMethodRunOutOfGas(bytes calldata call) override external {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\tmethodIdMockTypes[method] = MockType.OutOfGas;\n\t\ttrackMethodIdMock(method);\t\n\t}\n\n\tfunction invocationCount() override external returns (uint) {\n\t\treturn invocations;\n\t}\n\n\tfunction invocationCountForMethod(bytes calldata call) override external returns (uint) {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\treturn methodIdInvocations[keccak256(abi.encodePacked(resetCount, method))];\n\t}\n\n\tfunction invocationCountForCalldata(bytes calldata call) override external returns (uint) {\n\t\treturn calldataInvocations[keccak256(abi.encodePacked(resetCount, call))];\n\t}\n\n\tfunction reset() override external {\n\t\t// Reset all exact calldataMocks\n\t\tbytes memory nextMock = calldataMocks[MOCKS_LIST_START];\n\t\tbytes32 mockHash = keccak256(nextMock);\n\t\t// We cannot compary bytes\n\t\twhile(mockHash != MOCKS_LIST_END_HASH) {\n\t\t\t// Reset all mock maps\n\t\t\tcalldataMockTypes[nextMock] = MockType.Return;\n\t\t\tcalldataExpectations[nextMock] = hex\"\";\n\t\t\tcalldataRevertMessage[nextMock] = \"\";\n\t\t\t// Set next mock to remove\n\t\t\tnextMock = calldataMocks[mockHash];\n\t\t\t// Remove from linked list\n\t\t\tcalldataMocks[mockHash] = \"\";\n\t\t\t// Update mock hash\n\t\t\tmockHash = keccak256(nextMock);\n\t\t}\n\t\t// Clear list\n\t\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\n\n\t\t// Reset all any calldataMocks\n\t\tbytes4 nextAnyMock = methodIdMocks[SENTINEL_ANY_MOCKS];\n\t\twhile(nextAnyMock != SENTINEL_ANY_MOCKS) {\n\t\t\tbytes4 currentAnyMock = nextAnyMock;\n\t\t\tmethodIdMockTypes[currentAnyMock] = MockType.Return;\n\t\t\tmethodIdExpectations[currentAnyMock] = hex\"\";\n\t\t\tmethodIdRevertMessages[currentAnyMock] = \"\";\n\t\t\tnextAnyMock = methodIdMocks[currentAnyMock];\n\t\t\t// Remove from linked list\n\t\t\tmethodIdMocks[currentAnyMock] = 0x0;\n\t\t}\n\t\t// Clear list\n\t\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\n\n\t\tfallbackExpectation = DEFAULT_FALLBACK_VALUE;\n\t\tfallbackMockType = MockType.Return;\n\t\tinvocations = 0;\n\t\tresetCount += 1;\n\t}\n\n\tfunction useAllGas() private {\n\t\twhile(true) {\n\t\t\tbool s;\n\t\t\tassembly {\n\t\t\t\t//expensive call to EC multiply contract\n\t\t\t\ts := call(sub(gas(), 2000), 6, 0, 0x0, 0xc0, 0x0, 0x60)\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction bytesToBytes4(bytes memory b) private pure returns (bytes4) {\n\t\tbytes4 out;\n\t\tfor (uint i = 0; i < 4; i++) {\n\t\t\tout |= bytes4(b[i] & 0xFF) >> (i * 8);\n\t\t}\n\t\treturn out;\n\t}\n\n\tfunction uintToBytes(uint256 x) private pure returns (bytes memory b) {\n\t\tb = new bytes(32);\n\t\tassembly { mstore(add(b, 32), x) }\n\t}\n\n\tfunction updateInvocationCount(bytes4 methodId, bytes memory originalMsgData) public {\n\t\trequire(msg.sender == address(this), \"Can only be called from the contract itself\");\n\t\tinvocations += 1;\n\t\tmethodIdInvocations[keccak256(abi.encodePacked(resetCount, methodId))] += 1;\n\t\tcalldataInvocations[keccak256(abi.encodePacked(resetCount, originalMsgData))] += 1;\n\t}\n\n\tfallback () payable external {\n\t\tbytes4 methodId;\n\t\tassembly {\n\t\t\tmethodId := calldataload(0)\n\t\t}\n\n\t\t// First, check exact matching overrides\n\t\tif (calldataMockTypes[msg.data] == MockType.Revert) {\n\t\t\trevert(calldataRevertMessage[msg.data]);\n\t\t}\n\t\tif (calldataMockTypes[msg.data] == MockType.OutOfGas) {\n\t\t\tuseAllGas();\n\t\t}\n\t\tbytes memory result = calldataExpectations[msg.data];\n\n\t\t// Then check method Id overrides\n\t\tif (result.length == 0) {\n\t\t\tif (methodIdMockTypes[methodId] == MockType.Revert) {\n\t\t\t\trevert(methodIdRevertMessages[methodId]);\n\t\t\t}\n\t\t\tif (methodIdMockTypes[methodId] == MockType.OutOfGas) {\n\t\t\t\tuseAllGas();\n\t\t\t}\n\t\t\tresult = methodIdExpectations[methodId];\n\t\t}\n\n\t\t// Last, use the fallback override\n\t\tif (result.length == 0) {\n\t\t\tif (fallbackMockType == MockType.Revert) {\n\t\t\t\trevert(fallbackRevertMessage);\n\t\t\t}\n\t\t\tif (fallbackMockType == MockType.OutOfGas) {\n\t\t\t\tuseAllGas();\n\t\t\t}\n\t\t\tresult = fallbackExpectation;\n\t\t}\n\n\t\t// Record invocation as separate call so we don't rollback in case we are called with STATICCALL\n\t\t(, bytes memory r) = address(this).call{gas: 100000}(abi.encodeWithSignature(\"updateInvocationCount(bytes4,bytes)\", methodId, msg.data));\n\t\tassert(r.length == 0);\n\t\t\n\t\tassembly {\n\t\t\treturn(add(0x20, result), mload(result))\n\t\t}\n\t}\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": false,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "totalSupply()": "18160ddd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://149f2f758deda74a5e855ff934fe93daadadb583d09440832e908365f9235d29\",\"dweb:/ipfs/QmUsZkg1zhehPbPBbf15Pv5BEnP4eaKMpJ1cBN9LGaZurC\"]}},\"version\":1}"
        }
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol": {
        "BoringERC20": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5ea426e9278bea9ccd9ad97167ed9aa1fee7fe7ca352e8269e3469fc3c7f64764736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 0xEA TIMESTAMP PUSH15 0x9278BEA9CCD9AD97167ED9AA1FEE7F 0xE7 0xCA CALLDATALOAD 0x2E DUP3 PUSH10 0xE3469FC3C7F64764736F PUSH13 0x634300060C0033000000000000 ",
              "sourceMap": "105:1493:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5ea426e9278bea9ccd9ad97167ed9aa1fee7fe7ca352e8269e3469fc3c7f64764736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 0xEA TIMESTAMP PUSH15 0x9278BEA9CCD9AD97167ED9AA1FEE7F 0xE7 0xCA CALLDATALOAD 0x2E DUP3 PUSH10 0xE3469FC3C7F64764736F PUSH13 0x634300060C0033000000000000 ",
              "sourceMap": "105:1493:1:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":\"BoringERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://149f2f758deda74a5e855ff934fe93daadadb583d09440832e908365f9235d29\",\"dweb:/ipfs/QmUsZkg1zhehPbPBbf15Pv5BEnP4eaKMpJ1cBN9LGaZurC\"]},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b529d3c0ce62bf9fe78f919076e8bf6a1f06803a8977bcabfde79f1979129a6c\",\"dweb:/ipfs/QmbqHLBPKtSb9wDCrzxeRSRmZJpNdstKjCYXo5EcYEFL4e\"]}},\"version\":1}"
        }
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol": {
        "BoringMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091abdd95a0ea7137c80fa2010b0e8ce3c8f9b87663f60aa72c12df41688e742764736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 0xAB 0xDD SWAP6 LOG0 0xEA PUSH18 0x37C80FA2010B0E8CE3C8F9B87663F60AA72C SLT 0xDF COINBASE PUSH9 0x8E742764736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "185:916:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122091abdd95a0ea7137c80fa2010b0e8ce3c8f9b87663f60aa72c12df41688e742764736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 0xAB 0xDD SWAP6 LOG0 0xEA PUSH18 0x37C80FA2010B0E8CE3C8F9B87663F60AA72C SLT 0xDF COINBASE PUSH9 0x8E742764736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "185:916:2:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://455e6b5fc9912a2660e6c7a5ed664f89400cc80b3328e50134196d6e21773461\",\"dweb:/ipfs/QmUofeuCbKDdK9DMVo5A7AHys6MwqYmNQM6HaryLbr9g2g\"]}},\"version\":1}"
        },
        "BoringMath128": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c645959ecf63be62146472d92ad54434b7d7a570a3f8906999f0e4cf8f4846c764736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 GASLIMIT SWAP6 SWAP15 0xCF PUSH4 0xBE621464 PUSH19 0xD92AD54434B7D7A570A3F8906999F0E4CF8F48 CHAINID 0xC7 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1105:285:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c645959ecf63be62146472d92ad54434b7d7a570a3f8906999f0e4cf8f4846c764736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 GASLIMIT SWAP6 SWAP15 0xCF PUSH4 0xBE621464 PUSH19 0xD92AD54434B7D7A570A3F8906999F0E4CF8F48 CHAINID 0xC7 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1105:285:2:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath128\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://455e6b5fc9912a2660e6c7a5ed664f89400cc80b3328e50134196d6e21773461\",\"dweb:/ipfs/QmUofeuCbKDdK9DMVo5A7AHys6MwqYmNQM6HaryLbr9g2g\"]}},\"version\":1}"
        },
        "BoringMath32": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f4614703f156467fd3512cdaa422b09490b25d9c5d649597873664bc39c1333164736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL PUSH2 0x4703 CALL JUMP CHAINID PUSH32 0xD3512CDAA422B09490B25D9C5D649597873664BC39C1333164736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "1676:278:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f4614703f156467fd3512cdaa422b09490b25d9c5d649597873664bc39c1333164736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL PUSH2 0x4703 CALL JUMP CHAINID PUSH32 0xD3512CDAA422B09490B25D9C5D649597873664BC39C1333164736F6C63430006 0xC STOP CALLER ",
              "sourceMap": "1676:278:2:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath32\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://455e6b5fc9912a2660e6c7a5ed664f89400cc80b3328e50134196d6e21773461\",\"dweb:/ipfs/QmUofeuCbKDdK9DMVo5A7AHys6MwqYmNQM6HaryLbr9g2g\"]}},\"version\":1}"
        },
        "BoringMath64": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c56fc832c9d70bfadfb28c63b79be8508d44561dbd46493c121d5256b436224b64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 PUSH16 0xC832C9D70BFADFB28C63B79BE8508D44 JUMP SAR 0xBD CHAINID 0x49 EXTCODECOPY SLT SAR MSTORE JUMP 0xB4 CALLDATASIZE 0x22 0x4B PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1394:278:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c56fc832c9d70bfadfb28c63b79be8508d44561dbd46493c121d5256b436224b64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC5 PUSH16 0xC832C9D70BFADFB28C63B79BE8508D44 JUMP SAR 0xBD CHAINID 0x49 EXTCODECOPY SLT SAR MSTORE JUMP 0xB4 CALLDATASIZE 0x22 0x4B PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "1394:278:2:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":\"BoringMath64\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://455e6b5fc9912a2660e6c7a5ed664f89400cc80b3328e50134196d6e21773461\",\"dweb:/ipfs/QmUofeuCbKDdK9DMVo5A7AHys6MwqYmNQM6HaryLbr9g2g\"]}},\"version\":1}"
        }
      },
      "contracts/MiniChefV2.sol": {
        "IMigratorChef": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "migrate",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "migrate(address)": "ce5494bb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MiniChefV2.sol\":\"IMigratorChef\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://149f2f758deda74a5e855ff934fe93daadadb583d09440832e908365f9235d29\",\"dweb:/ipfs/QmUsZkg1zhehPbPBbf15Pv5BEnP4eaKMpJ1cBN9LGaZurC\"]},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b529d3c0ce62bf9fe78f919076e8bf6a1f06803a8977bcabfde79f1979129a6c\",\"dweb:/ipfs/QmbqHLBPKtSb9wDCrzxeRSRmZJpNdstKjCYXo5EcYEFL4e\"]},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://455e6b5fc9912a2660e6c7a5ed664f89400cc80b3328e50134196d6e21773461\",\"dweb:/ipfs/QmUofeuCbKDdK9DMVo5A7AHys6MwqYmNQM6HaryLbr9g2g\"]},\"contracts/MiniChefV2.sol\":{\"keccak256\":\"0x0f3f4b023258e33c317aafa1a6a076141a9dcf3b4fe7e46f7f1f223adc7e22a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99199574335411542ffb057fb1fc7064e2b44443ab40cc912083c3b816ec986b\",\"dweb:/ipfs/QmaVTW3h3K1fBusiUm7RFVJxPrcE6Tf2ULbVe1kP9wNSnN\"]},\"contracts/interfaces/IRewarder.sol\":{\"keccak256\":\"0x0129f57bda3731f913946adf54cdeafa96e342f5ba937f4d73e5b553da06aa9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0098f65878a449c2d96f5617020180c6f453cb618bccf58da436d68d3e355ecb\",\"dweb:/ipfs/QmaFVyYo6t5Z5Lh3mW5STrh6Da485Yh1PAsiSWpagVQ1jx\"]},\"contracts/libraries/SignedSafeMath.sol\":{\"keccak256\":\"0x74a05f6351e182cc589e99adaf3fecfc03f984c964c0c1e2fca3e59b9124a0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcb902caf112ebdc471a147f8e8459c9eeb3fd7980d4d112d561046d16a22a53\",\"dweb:/ipfs/QmfSxZKE3RP3gTPws1MEDWThhorQx4ApEr18FoBBdx9w2t\"]},\"openzeppelin-contracts-legacy/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-legacy/access/Ownable.sol\":{\"keccak256\":\"0xf7c39c7e6d06ed3bda90cfefbcbf2ddc32c599c3d6721746546ad64946efccaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb57a28e189cd8b05748db44bdd51d608e6f1364dd1b35ad921e1bc82c10631e\",\"dweb:/ipfs/QmaWWTBbVu2pRR9XUbE4iC159NoP59cRF9ZJwhf4ghFN9i\"]}},\"version\":1}"
        },
        "MiniChefV2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_rewardToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_firstOwner",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "EmergencyWithdraw",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "funder",
                  "type": "address"
                }
              ],
              "name": "FunderAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "funder",
                  "type": "address"
                }
              ],
              "name": "FunderRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Harvest",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "rewardPerSecond",
                  "type": "uint256"
                }
              ],
              "name": "LogRewardPerSecond",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "rewardsExpiration",
                  "type": "uint256"
                }
              ],
              "name": "LogRewardsExpiration",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "Migrate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "MigratorDisabled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "migrator",
                  "type": "address"
                }
              ],
              "name": "MigratorSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IERC20",
                  "name": "lpToken",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                }
              ],
              "name": "PoolAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "allocPoint",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "contract IRewarder",
                  "name": "rewarder",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "PoolSet",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "lpSupply",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "accRewardPerShare",
                  "type": "uint256"
                }
              ],
              "name": "PoolUpdate",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Withdraw",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "REWARD",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_funder",
                  "type": "address"
                }
              ],
              "name": "addFunder",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IERC20",
                  "name": "_lpToken",
                  "type": "address"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                }
              ],
              "name": "addPool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_allocPoints",
                  "type": "uint256[]"
                },
                {
                  "internalType": "contract IERC20[]",
                  "name": "_lpTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "contract IRewarder[]",
                  "name": "_rewarders",
                  "type": "address[]"
                }
              ],
              "name": "addPools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "addedTokens",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "depositWithPermit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "disableMigrator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "emergencyWithdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "extension",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxFunding",
                  "type": "uint256"
                }
              ],
              "name": "extendRewardsViaDuration",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "funding",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minExtension",
                  "type": "uint256"
                }
              ],
              "name": "extendRewardsViaFunding",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "funding",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "fundRewards",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "harvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_funder",
                  "type": "address"
                }
              ],
              "name": "isFunder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "allowed",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "lpToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "lpTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "massUpdateAllPools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                }
              ],
              "name": "massUpdatePools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "migrate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "migrationDisabled",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "migrator",
              "outputs": [
                {
                  "internalType": "contract IMigratorChef",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "pendingReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pending",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "poolInfo",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "accRewardPerShare",
                  "type": "uint128"
                },
                {
                  "internalType": "uint64",
                  "name": "lastRewardTime",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "allocPoint",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolInfos",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accRewardPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MiniChefV2.PoolInfo[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "pools",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_funder",
                  "type": "address"
                }
              ],
              "name": "removeFunder",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "resetRewardsDuration",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rewardPerSecond",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "rewarder",
              "outputs": [
                {
                  "internalType": "contract IRewarder",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "rewardsExpiration",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IMigratorChef",
                  "name": "_migrator",
                  "type": "address"
                }
              ],
              "name": "setMigrator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_allocPoint",
                  "type": "uint256"
                },
                {
                  "internalType": "contract IRewarder",
                  "name": "_rewarder",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "overwrite",
                  "type": "bool"
                }
              ],
              "name": "setPool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "pids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "allocPoints",
                  "type": "uint256[]"
                },
                {
                  "internalType": "contract IRewarder[]",
                  "name": "rewarders",
                  "type": "address[]"
                },
                {
                  "internalType": "bool[]",
                  "name": "overwrites",
                  "type": "bool[]"
                }
              ],
              "name": "setPools",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalAllocPoint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accRewardPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MiniChefV2.PoolInfo",
                  "name": "pool",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "int256",
                  "name": "rewardDebt",
                  "type": "int256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdrawAndHarvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60a06040523480156200001157600080fd5b506040516200660d3803806200660d8339818101604052810190620000379190620003d3565b600062000049620001e460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015620001525750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b62000194576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200018b9062000548565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050620001dc81620001ec60201b60201c565b5050620005eb565b600033905090565b620001fc620001e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200028c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000283906200056a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620002ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f69062000526565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050620003cd81620005d1565b92915050565b60008060408385031215620003e757600080fd5b6000620003f785828601620003bc565b92505060206200040a85828601620003bc565b9150509250929050565b6000620004236026836200058c565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006200048b602e836200058c565b91507f4d696e694368656656323a3a43616e6e6f7420636f6e7374727563742077697460008301527f68207a65726f20616464726573730000000000000000000000000000000000006020830152604082019050919050565b6000620004f36020836200058c565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006020820190508181036000830152620005418162000414565b9050919050565b6000602082019050818103600083015262000563816200047c565b9050919050565b600060208201905081810360008301526200058581620004e4565b9050919050565b600082825260208201905092915050565b6000620005aa82620005b1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620005dc816200059d565b8114620005e857600080fd5b50565b60805160601c615feb6200062260003980610b675280610da552806112e25280612b39528061308252806131e45250615feb6000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c8063715018a61161014657806398969e82116100c3578063cab34c0811610087578063cab34c08146106bd578063d1abb907146106db578063dcd18dd4146106f7578063f2fde38b14610713578063f624d2c51461072f578063f6d676be1461074b57610253565b806398969e8214610619578063b763e7c414610649578063b76f4aeb14610665578063c1bcb49314610683578063c346253d1461068d57610253565b80638da5cb5b1161010a5780638da5cb5b146105745780638dbdbe6d146105925780638f10369a146105ae578063933f084f146105cc57806393f1a40b146105e857610253565b8063715018a6146104d057806378ed5d1f146104da5780637973aa7b1461050a57806379d12ffb146105265780637cd07e471461055657610253565b806323cf3118116101d4578063454b060811610198578063454b06081461042e5780634b87e90f1461044a57806351eb05a61461046657806357a5b58c1461049657806361f8e66f146104b257610253565b806323cf3118146103a057806328662551146103bc5780632f940c70146103d857806334c0b46b146103f45780633ef6db911461041257610253565b806318fccc761161021b57806318fccc761461030057806319610b2b1461031c5780631bbe9d8c146103385780631ea48870146103545780632273ee6e1461038457610253565b8063081e3eda146102585780630ad58d2f146102765780630c812af3146102925780631526fe27146102b057806317caf6f1146102e2575b600080fd5b610260610755565b60405161026d9190615aff565b60405180910390f35b610290600480360381019061028b9190614a1e565b610762565b005b61029a6109f6565b6040516102a79190615741565b60405180910390f35b6102ca60048036038101906102c59190614905565b610a09565b6040516102d993929190615ac8565b60405180910390f35b6102ea610a80565b6040516102f79190615aff565b60405180910390f35b61031a60048036038101906103159190614957565b610a86565b005b610336600480360381019061033191906149e2565b610cec565b005b610352600480360381019061034d9190614628565b610e28565b005b61036e60048036038101906103699190614628565b610f4f565b60405161037b9190615741565b60405180910390f35b61039e60048036038101906103999190614a6d565b610fa5565b005b6103ba60048036038101906103b591906148b3565b611067565b005b6103d660048036038101906103d191906149e2565b6111c7565b005b6103f260048036038101906103ed9190614957565b6114c1565b005b6103fc611600565b60405161040991906156fd565b60405180910390f35b61042c6004803603810190610427919061473a565b61168e565b005b61044860048036038101906104439190614905565b61182f565b005b610464600480360381019061045f9190614905565b611d2d565b005b610480600480360381019061047b9190614905565b611ef3565b60405161048d9190615aad565b60405180910390f35b6104b060048036038101906104ab9190614651565b612319565b005b6104ba612359565b6040516104c7919061571f565b60405180910390f35b6104d8612462565b005b6104f460048036038101906104ef9190614905565b6125b5565b604051610501919061575c565b60405180910390f35b610524600480360381019061051f9190614696565b6125f1565b005b610540600480360381019061053b9190614628565b61276c565b60405161054d9190615741565b60405180910390f35b61055e61278c565b60405161056b9190615777565b60405180910390f35b61057c6127b2565b6040516105899190615613565b60405180910390f35b6105ac60048036038101906105a79190614a1e565b6127db565b005b6105b6612a71565b6040516105c39190615aff565b60405180910390f35b6105e660048036038101906105e191906149e2565b612a77565b005b61060260048036038101906105fd9190614957565b612bbc565b604051610610929190615c3c565b60405180910390f35b610633600480360381019061062e9190614957565b612bed565b6040516106409190615aff565b60405180910390f35b610663600480360381019061065e9190614b0b565b612f61565b005b61066d613010565b60405161067a9190615aff565b60405180910390f35b61068b613016565b005b6106a760048036038101906106a29190614905565b613044565b6040516106b49190615792565b60405180910390f35b6106c5613080565b6040516106d2919061575c565b60405180910390f35b6106f560048036038101906106f09190614a1e565b6130a4565b005b610711600480360381019061070c9190614628565b613431565b005b61072d60048036038101906107289190614628565b613558565b005b61074960048036038101906107449190614993565b61371a565b005b6107536137c7565b005b6000600280549050905090565b61076a6143d2565b61077384611ef3565b905060006005600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061081664e8d4a510006107fb84600001516fffffffffffffffffffffffffffffffff16876138a490919063ffffffff16565b8161080257fe5b04826001015461390690919063ffffffff16565b816001018190555061083584826000015461397e90919063ffffffff16565b816000018190555060006004868154811061084c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610926578073ffffffffffffffffffffffffffffffffffffffff166344af0fa7873387600087600001546040518663ffffffff1660e01b81526004016108f3959493929190615b1a565b600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050505b61098884866003898154811061093857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16863373ffffffffffffffffffffffffffffffffffffffff167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516109e69190615aff565b60405180910390a4505050505050565b600160149054906101000a900460ff1681565b60028181548110610a1657fe5b906000526020600020016000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a900467ffffffffffffffff16908060000160189054906101000a900467ffffffffffffffff16905083565b60085481565b610a8e6143d2565b610a9783611ef3565b905060006005600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600064e8d4a51000610b2284600001516fffffffffffffffffffffffffffffffff1684600001546138a490919063ffffffff16565b81610b2957fe5b0490506000610b4d610b4884600101548461390690919063ffffffff16565b613b05565b905081836001018190555060008114610bac57610bab85827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b5b600060048781548110610bbb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c94578073ffffffffffffffffffffffffffffffffffffffff166344af0fa78833898689600001546040518663ffffffff1660e01b8152600401610c61959493929190615b6d565b600060405180830381600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b505050505b863373ffffffffffffffffffffffffffffffffffffffff167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051610cdb9190615aff565b60405180910390a350505050505050565b60008211610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d269061590d565b60405180910390fd5b60006009548381610d3c57fe5b04905081811015610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d799061580d565b60405180910390fd5b610d9781600a54613b5290919063ffffffff16565b600a81905550610dea3330857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613ba2909392919063ffffffff16565b7f8f596a35f0cdefc7e1e1e80e73eced8bfdb8ca9e519ca4042ad0963f19bc239e600a54604051610e1b9190615aff565b60405180910390a1505050565b610e30613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb49061596d565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0c48d651d88968f843204baf13aa11cd1a590e611c6dcadc7ed4daab1f98462a81604051610f449190615613565b60405180910390a150565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60038781548110610fb257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf333089888888886040518863ffffffff1660e01b8152600401611021979695949392919061562e565b600060405180830381600087803b15801561103b57600080fd5b505af115801561104f573d6000803e3d6000fd5b5050505061105e8787876127db565b50505050505050565b61106f613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f39061596d565b60405180910390fd5b600160149054906101000a900460ff161561114c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611143906159ed565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ba4758949febc607e14523620298f8b5995b1848492ad7aa083372ac886ae07816040516111bc9190615613565b60405180910390a150565b6111cf6127b2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611258575060011515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90615a4d565b60405180910390fd5b600082116112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906157ed565b60405180910390fd5b6113273330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613ba2909392919063ffffffff16565b600a5442106113a95760008111611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a90615a8d565b60405180910390fd5b61137b613016565b61138e8142613b5290919063ffffffff16565b600a8190555080828161139d57fe5b0460098190555061144b565b60006113c042600a5461397e90919063ffffffff16565b905060006113d9600954836138a490919063ffffffff16565b905060006113f284600a54613b5290919063ffffffff16565b90506000611409428361397e90919063ffffffff16565b61141c8785613b5290919063ffffffff16565b8161142357fe5b049050600954811461143857611437613016565b5b81600a8190555080600981905550505050505b7fde89cb17ac7f58f94792b3e91e086ed85403819c24ceea882491f960ccb1a27860095460405161147c9190615aff565b60405180910390a17f8f596a35f0cdefc7e1e1e80e73eced8bfdb8ca9e519ca4042ad0963f19bc239e600a546040516114b59190615aff565b60405180910390a15050565b60006005600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001549050600082600001819055506000826001018190555061159483826003878154811061154457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff16843373ffffffffffffffffffffffffffffffffffffffff167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b846040516115f29190615aff565b60405180910390a450505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561168457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161163a575b5050505050905090565b611696613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a9061596d565b60405180910390fd5b858590508888905014801561173d57508383905086869050145b801561174e57508181905084849050145b61178d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117849061598d565b60405180910390fd5b611795613016565b600088889050905060005b81811015611823576118188a8a838181106117b757fe5b905060200201358989848181106117ca57fe5b905060200201358888858181106117dd57fe5b90506020020160208101906117f291906148dc565b8787868181106117fe57fe5b9050602002016020810190611813919061480f565b613ce4565b8060010190506117a0565b50505050505050505050565b611837613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb9061596d565b60405180910390fd5b600160149054906101000a900460ff1615611914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190b906159ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d906158ed565b60405180910390fd5b6000600382815481106119b557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a1d9190615613565b60206040518083038186803b158015611a3557600080fd5b505afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d919061492e565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611acc9291906156d4565b602060405180830381600087803b158015611ae657600080fd5b505af1158015611afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1e9190614838565b506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce5494bb846040518263ffffffff1660e01b8152600401611b7c919061575c565b602060405180830381600087803b158015611b9657600080fd5b505af1158015611baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bce919061488a565b90508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c099190615613565b60206040518083038186803b158015611c2157600080fd5b505afa158015611c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c59919061492e565b8214611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c919061588d565b60405180910390fd5b8060038581548110611ca857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd5837b673ffaac69230366d3f7eb7cb2ba2b9fd8f2d4e9d0f5e92d3756b1d54684604051611d1f9190615aff565b60405180910390a150505050565b611d35613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db99061596d565b60405180910390fd5b60008111611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90615a8d565b60405180910390fd5b611e0d613016565b6000611e2442600a5461397e90919063ffffffff16565b90506000611e3d600954836138a490919063ffffffff16565b9050611e528342613b5290919063ffffffff16565b600a81905550611e6d42600a5461397e90919063ffffffff16565b8181611e7557fe5b046009819055507fde89cb17ac7f58f94792b3e91e086ed85403819c24ceea882491f960ccb1a278600954604051611ead9190615aff565b60405180910390a17f8f596a35f0cdefc7e1e1e80e73eced8bfdb8ca9e519ca4042ad0963f19bc239e600a54604051611ee69190615aff565b60405180910390a1505050565b611efb6143d2565b60028281548110611f0857fe5b906000526020600020016040518060600160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050806020015167ffffffffffffffff1642111561231457600060038381548110611ff257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120559190615613565b60206040518083038186803b15801561206d57600080fd5b505afa158015612081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a5919061492e565b905060008111156121ee576000600a5442111561210357826020015167ffffffffffffffff16600a54116120da5760006120fe565b6120fd836020015167ffffffffffffffff16600a5461397e90919063ffffffff16565b5b612125565b612124836020015167ffffffffffffffff164261397e90919063ffffffff16565b5b90506000600854612161856040015167ffffffffffffffff16612153600954866138a490919063ffffffff16565b6138a490919063ffffffff16565b8161216857fe5b0490506121bc6121978461218a64e8d4a51000856138a490919063ffffffff16565b8161219157fe5b04613e89565b85600001516fffffffffffffffffffffffffffffffff16613f0890919063ffffffff16565b84600001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff168152505050505b6121f742613f7c565b826020019067ffffffffffffffff16908167ffffffffffffffff1681525050816002848154811061222457fe5b9060005260206000200160008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050827fb22162dac390356a083e49a03154a93d123f935f80aac3763ba0fa470c8fbe5e836020015183856000015160405161230a93929190615c65565b60405180910390a2505b919050565b600082829050905060005b818110156123535761234784848381811061233b57fe5b90506020020135611ef3565b50806001019050612324565b50505050565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015612459578382906000526020600020016040518060600160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152602001906001019061237d565b50505050905090565b61246a613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ee9061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600381815481106125c257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6125f9613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d9061596d565b60405180910390fd5b83839050868690501480156126a057508181905084849050145b6126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d69061598d565b60405180910390fd5b6126e7613016565b600086869050905060005b818110156127625761275788888381811061270957fe5b9050602002013587878481811061271c57fe5b90506020020160208101906127319190614861565b86868581811061273d57fe5b905060200201602081019061275291906148dc565b613ff3565b8060010190506126f2565b5050505050505050565b60066020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6127e36143d2565b6127ec84611ef3565b905060006005600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050612859848260000154613b5290919063ffffffff16565b81600001819055506128ae64e8d4a5100061289384600001516fffffffffffffffffffffffffffffffff16876138a490919063ffffffff16565b8161289a57fe5b04826001015461435a90919063ffffffff16565b81600101819055506000600486815481106128c557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461299f578073ffffffffffffffffffffffffffffffffffffffff166344af0fa7878687600087600001546040518663ffffffff1660e01b815260040161296c959493929190615bc0565b600060405180830381600087803b15801561298657600080fd5b505af115801561299a573d6000803e3d6000fd5b505050505b612a0333308760038a815481106129b257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613ba2909392919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16863373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b4788604051612a619190615aff565b60405180910390a4505050505050565b60095481565b60008211612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab19061584d565b60405180910390fd5b6000612ad1836009546138a490919063ffffffff16565b905081811115612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d906158ad565b60405180910390fd5b612b2b83600a54613b5290919063ffffffff16565b600a81905550612b7e3330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613ba2909392919063ffffffff16565b7f8f596a35f0cdefc7e1e1e80e73eced8bfdb8ca9e519ca4042ad0963f19bc239e600a54604051612baf9190615aff565b60405180910390a1505050565b6005602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b6000612bf76143d2565b60028481548110612c0457fe5b906000526020600020016040518060600160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050905060006005600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600082600001516fffffffffffffffffffffffffffffffff169050600060038781548110612d4757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612daa9190615613565b60206040518083038186803b158015612dc257600080fd5b505afa158015612dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dfa919061492e565b9050836020015167ffffffffffffffff1642118015612e1a575060008114155b15612f12576000600a54421115612e7257846020015167ffffffffffffffff16600a5411612e49576000612e6d565b612e6c856020015167ffffffffffffffff16600a5461397e90919063ffffffff16565b5b612e94565b612e93856020015167ffffffffffffffff164261397e90919063ffffffff16565b5b90506000600854612ed0876040015167ffffffffffffffff16612ec2600954866138a490919063ffffffff16565b6138a490919063ffffffff16565b81612ed757fe5b049050612f0d83612ef664e8d4a51000846138a490919063ffffffff16565b81612efd57fe5b0485613b5290919063ffffffff16565b935050505b612f55612f50846001015464e8d4a51000612f3a8688600001546138a490919063ffffffff16565b81612f4157fe5b0461390690919063ffffffff16565b613b05565b94505050505092915050565b612f69613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fed9061596d565b60405180910390fd5b612ffe613016565b61300a84848484613ce4565b50505050565b600a5481565b6000600280549050905060005b818110156130405761303481611ef3565b50806001019050613023565b5050565b6004818154811061305157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6130ac6143d2565b6130b584611ef3565b905060006005600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600064e8d4a5100061314084600001516fffffffffffffffffffffffffffffffff1684600001546138a490919063ffffffff16565b8161314757fe5b049050600061316b61316684600101548461390690919063ffffffff16565b613b05565b90506131b664e8d4a5100061319f86600001516fffffffffffffffffffffffffffffffff16896138a490919063ffffffff16565b816131a657fe5b048361390690919063ffffffff16565b83600101819055506131d586846000015461397e90919063ffffffff16565b836000018190555061322885827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b60006004888154811061323757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613310578073ffffffffffffffffffffffffffffffffffffffff166344af0fa78933898689600001546040518663ffffffff1660e01b81526004016132dd959493929190615b6d565b600060405180830381600087803b1580156132f757600080fd5b505af115801561330b573d6000803e3d6000fd5b505050505b613372868860038b8154811061332257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff16883373ffffffffffffffffffffffffffffffffffffffff167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a6040516133d09190615aff565b60405180910390a4873373ffffffffffffffffffffffffffffffffffffffff167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249548460405161341f9190615aff565b60405180910390a35050505050505050565b613439613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134bd9061596d565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f423b2da7eebe1997af6d3d8f0c00fd04de1d323a87cd69152dad613731eb23258160405161354d9190615613565b60405180910390a150565b613560613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146135ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e49061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561365d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136549061586d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613722613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146137af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a69061596d565b60405180910390fd5b6137b7613016565b6137c2838383613ff3565b505050565b6137cf613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461385c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138539061596d565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507ff460fd6afbbd82e0c22f24030b32f63befe14935b39a79bb3520220b21a0ed9460405160405180910390a1565b6000808214806138c157508282838502925082816138be57fe5b04145b613900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f790615a6d565b60405180910390fd5b92915050565b60008082840390506000831215801561391f5750838113155b80613935575060008312801561393457508381135b5b613974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161396b90615a0d565b60405180910390fd5b8091505092915050565b60008282840391508111156139c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139bf906157ad565b60405180910390fd5b92915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613a019291906156d4565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613a4f91906155fc565b6000604051808303816000865af19150503d8060008114613a8c576040519150601f19603f3d011682016040523d82523d6000602084013e613a91565b606091505b5091509150818015613abf5750600081511480613abe575080806020019051810190613abd9190614838565b5b5b613afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af59061582d565b60405180910390fd5b5050505050565b600080821215613b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b41906157cd565b60405180910390fd5b819050919050565b6000818284019150811015613b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b939061594d565b60405180910390fd5b92915050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401613bd79392919061569d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613c2591906155fc565b6000604051808303816000865af19150503d8060008114613c62576040519150601f19603f3d011682016040523d82523d6000602084013e613c67565b606091505b5091509150818015613c955750600081511480613c94575080806020019051810190613c939190614838565b5b5b613cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ccb90615a2d565b60405180910390fd5b505050505050565b600033905090565b613d4383613d3560028781548110613cf857fe5b9060005260206000200160000160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1660085461397e90919063ffffffff16565b613b5290919063ffffffff16565b600881905550613d5283613f7c565b60028581548110613d5f57fe5b9060005260206000200160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508015613def578160048581548110613da657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80613e315760048481548110613e0157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613e33565b815b73ffffffffffffffffffffffffffffffffffffffff16847f5766994790e89c27d9799092c4a6b179974a5b61a62663156d03d799cc8c01b88584604051613e7b929190615c13565b60405180910390a350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff16821115613f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ef79061592d565b60405180910390fd5b819050919050565b6000816fffffffffffffffffffffffffffffffff168284019150816fffffffffffffffffffffffffffffffff161015613f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f6d9061594d565b60405180910390fd5b92915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff16821115613feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fe2906159cd565b60405180910390fd5b819050919050565b60001515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514614086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161407d906159ad565b60405180910390fd5b61409b83600854613b5290919063ffffffff16565b6008819055506003829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002604051806060016040528060006fffffffffffffffffffffffffffffffff16815260200161419642613f7c565b67ffffffffffffffff1681526020016141ae86613f7c565b67ffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1661431e600160038054905061397e90919063ffffffff16565b7fe72dff05c5a9817b99753fffdec6b7800cc743c2f4b1fbc3eeb93983712a2a468660405161434d9190615aff565b60405180910390a4505050565b6000808284019050600083121580156143735750838112155b80614389575060008312801561438857508381125b5b6143c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143bf906158cd565b60405180910390fd5b8091505092915050565b604051806060016040528060006fffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b60008135905061442881615efd565b92915050565b60008083601f84011261444057600080fd5b8235905067ffffffffffffffff81111561445957600080fd5b60208301915083602082028301111561447157600080fd5b9250929050565b60008083601f84011261448a57600080fd5b8235905067ffffffffffffffff8111156144a357600080fd5b6020830191508360208202830111156144bb57600080fd5b9250929050565b60008083601f8401126144d457600080fd5b8235905067ffffffffffffffff8111156144ed57600080fd5b60208301915083602082028301111561450557600080fd5b9250929050565b60008083601f84011261451e57600080fd5b8235905067ffffffffffffffff81111561453757600080fd5b60208301915083602082028301111561454f57600080fd5b9250929050565b60008135905061456581615f14565b92915050565b60008151905061457a81615f14565b92915050565b60008135905061458f81615f2b565b92915050565b6000813590506145a481615f42565b92915050565b6000815190506145b981615f42565b92915050565b6000813590506145ce81615f59565b92915050565b6000813590506145e381615f70565b92915050565b6000813590506145f881615f87565b92915050565b60008151905061460d81615f87565b92915050565b60008135905061462281615f9e565b92915050565b60006020828403121561463a57600080fd5b600061464884828501614419565b91505092915050565b6000806020838503121561466457600080fd5b600083013567ffffffffffffffff81111561467e57600080fd5b61468a8582860161450c565b92509250509250929050565b600080600080600080606087890312156146af57600080fd5b600087013567ffffffffffffffff8111156146c957600080fd5b6146d589828a0161450c565b9650965050602087013567ffffffffffffffff8111156146f457600080fd5b61470089828a01614478565b9450945050604087013567ffffffffffffffff81111561471f57600080fd5b61472b89828a016144c2565b92509250509295509295509295565b6000806000806000806000806080898b03121561475657600080fd5b600089013567ffffffffffffffff81111561477057600080fd5b61477c8b828c0161450c565b9850985050602089013567ffffffffffffffff81111561479b57600080fd5b6147a78b828c0161450c565b9650965050604089013567ffffffffffffffff8111156147c657600080fd5b6147d28b828c016144c2565b9450945050606089013567ffffffffffffffff8111156147f157600080fd5b6147fd8b828c0161442e565b92509250509295985092959890939650565b60006020828403121561482157600080fd5b600061482f84828501614556565b91505092915050565b60006020828403121561484a57600080fd5b60006148588482850161456b565b91505092915050565b60006020828403121561487357600080fd5b600061488184828501614595565b91505092915050565b60006020828403121561489c57600080fd5b60006148aa848285016145aa565b91505092915050565b6000602082840312156148c557600080fd5b60006148d3848285016145bf565b91505092915050565b6000602082840312156148ee57600080fd5b60006148fc848285016145d4565b91505092915050565b60006020828403121561491757600080fd5b6000614925848285016145e9565b91505092915050565b60006020828403121561494057600080fd5b600061494e848285016145fe565b91505092915050565b6000806040838503121561496a57600080fd5b6000614978858286016145e9565b925050602061498985828601614419565b9150509250929050565b6000806000606084860312156149a857600080fd5b60006149b6868287016145e9565b93505060206149c786828701614595565b92505060406149d8868287016145d4565b9150509250925092565b600080604083850312156149f557600080fd5b6000614a03858286016145e9565b9250506020614a14858286016145e9565b9150509250929050565b600080600060608486031215614a3357600080fd5b6000614a41868287016145e9565b9350506020614a52868287016145e9565b9250506040614a6386828701614419565b9150509250925092565b600080600080600080600060e0888a031215614a8857600080fd5b6000614a968a828b016145e9565b9750506020614aa78a828b016145e9565b9650506040614ab88a828b01614419565b9550506060614ac98a828b016145e9565b9450506080614ada8a828b01614613565b93505060a0614aeb8a828b01614580565b92505060c0614afc8a828b01614580565b91505092959891949750929550565b60008060008060808587031215614b2157600080fd5b6000614b2f878288016145e9565b9450506020614b40878288016145e9565b9350506040614b51878288016145d4565b9250506060614b6287828801614556565b91505092959194509250565b6000614b7a8383614cc7565b60208301905092915050565b6000614b92838361550f565b60608301905092915050565b614ba781615e04565b82525050565b614bb681615d35565b82525050565b6000614bc782615cbc565b614bd18185615cf7565b9350614bdc83615c9c565b8060005b83811015614c0d578151614bf48882614b6e565b9750614bff83615cdd565b925050600181019050614be0565b5085935050505092915050565b6000614c2582615cc7565b614c2f8185615d08565b9350614c3a83615cac565b8060005b83811015614c6b578151614c528882614b86565b9750614c5d83615cea565b925050600181019050614c3e565b5085935050505092915050565b614c8181615d47565b82525050565b614c9081615d53565b82525050565b6000614ca182615cd2565b614cab8185615d19565b9350614cbb818560208601615eca565b80840191505092915050565b614cd081615e16565b82525050565b614cdf81615e16565b82525050565b614cee81615e3a565b82525050565b614cfd81615e5e565b82525050565b614d0c81615d93565b82525050565b614d1b81615e82565b82525050565b6000614d2e601583615d24565b91507f426f72696e674d6174683a20556e646572666c6f7700000000000000000000006000830152602082019050919050565b6000614d6e600b83615d24565b91507f496e7465676572203c20300000000000000000000000000000000000000000006000830152602082019050919050565b6000614dae602283615d24565b91507f4d696e694368656656323a2066756e64696e672063616e6e6f74206265207a6560008301527f726f0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614e14602883615d24565b91507f4d696e694368656656323a20696e73756666696369656e7420657874656e736960008301527f6f6e206c696d69740000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614e7a601c83615d24565b91507f426f72696e6745524332303a205472616e73666572206661696c6564000000006000830152602082019050919050565b6000614eba602d83615d24565b91507f4d696e694368656656323a20657874656e73696f6e206475726174696f6e206360008301527f616e6e6f74206265207a65726f000000000000000000000000000000000000006020830152604082019050919050565b6000614f20602683615d24565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f86602783615d24565b91507f4d696e694368656656323a206d696772617465642062616c616e6365206d757360008301527f74206d61746368000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614fec602683615d24565b91507f4d696e694368656656323a20696e73756666696369656e742066756e64696e6760008301527f206c696d697400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615052602183615d24565b91507f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006150b8601b83615d24565b91507f4d696e694368656656323a206e6f206d69677261746f722073657400000000006000830152602082019050919050565b60006150f8602983615d24565b91507f4d696e694368656656323a2066756e64696e6720616d6f756e742063616e6e6f60008301527f74206265207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b600061515e601c83615d24565b91507f426f72696e674d6174683a2075696e74313238204f766572666c6f77000000006000830152602082019050919050565b600061519e601883615d24565b91507f426f72696e674d6174683a20416464204f766572666c6f7700000000000000006000830152602082019050919050565b60006151de602083615d24565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061521e602583615d24565b91507f4d696e694368656656323a20696e76616c696420706172616d65746572206c6560008301527f6e677468730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615284601383615d24565b91507f546f6b656e20616c7265616479206164646564000000000000000000000000006000830152602082019050919050565b60006152c4601b83615d24565b91507f426f72696e674d6174683a2075696e743634204f766572666c6f7700000000006000830152602082019050919050565b6000615304602783615d24565b91507f4d696e694368656656323a206d6967726174696f6e20686173206265656e206460008301527f697361626c6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061536a602483615d24565b91507f5369676e6564536166654d6174683a207375627472616374696f6e206f76657260008301527f666c6f77000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006153d0602083615d24565b91507f426f72696e6745524332303a205472616e7366657246726f6d206661696c65646000830152602082019050919050565b6000615410602283615d24565b91507f4d696e694368656656323a2063616c6c6572206973206e6f7420612066756e6460008301527f65720000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615476601883615d24565b91507f426f72696e674d6174683a204d756c204f766572666c6f7700000000000000006000830152602082019050919050565b60006154b6602a83615d24565b91507f4d696e694368656656323a20726577617264206475726174696f6e2063616e6e60008301527f6f74206265207a65726f000000000000000000000000000000000000000000006020830152604082019050919050565b6060820160008201516155256000850182615593565b50602082015161553860208501826155cf565b50604082015161554b60408501826155cf565b50505050565b6060820160008201516155676000850182615593565b50602082015161557a60208501826155cf565b50604082015161558d60408501826155cf565b50505050565b61559c81615d9d565b82525050565b6155ab81615d9d565b82525050565b6155ba81615e94565b82525050565b6155c981615dd9565b82525050565b6155d881615de3565b82525050565b6155e781615de3565b82525050565b6155f681615df7565b82525050565b60006156088284614c96565b915081905092915050565b60006020820190506156286000830184614bad565b92915050565b600060e082019050615643600083018a614b9e565b6156506020830189614bad565b61565d60408301886155c0565b61566a60608301876155c0565b61567760808301866155ed565b61568460a0830185614c87565b61569160c0830184614c87565b98975050505050505050565b60006060820190506156b26000830186614bad565b6156bf6020830185614bad565b6156cc60408301846155c0565b949350505050565b60006040820190506156e96000830185614bad565b6156f660208301846155c0565b9392505050565b600060208201905081810360008301526157178184614bbc565b905092915050565b600060208201905081810360008301526157398184614c1a565b905092915050565b60006020820190506157566000830184614c78565b92915050565b60006020820190506157716000830184614cd6565b92915050565b600060208201905061578c6000830184614ce5565b92915050565b60006020820190506157a76000830184614cf4565b92915050565b600060208201905081810360008301526157c681614d21565b9050919050565b600060208201905081810360008301526157e681614d61565b9050919050565b6000602082019050818103600083015261580681614da1565b9050919050565b6000602082019050818103600083015261582681614e07565b9050919050565b6000602082019050818103600083015261584681614e6d565b9050919050565b6000602082019050818103600083015261586681614ead565b9050919050565b6000602082019050818103600083015261588681614f13565b9050919050565b600060208201905081810360008301526158a681614f79565b9050919050565b600060208201905081810360008301526158c681614fdf565b9050919050565b600060208201905081810360008301526158e681615045565b9050919050565b60006020820190508181036000830152615906816150ab565b9050919050565b60006020820190508181036000830152615926816150eb565b9050919050565b6000602082019050818103600083015261594681615151565b9050919050565b6000602082019050818103600083015261596681615191565b9050919050565b60006020820190508181036000830152615986816151d1565b9050919050565b600060208201905081810360008301526159a681615211565b9050919050565b600060208201905081810360008301526159c681615277565b9050919050565b600060208201905081810360008301526159e6816152b7565b9050919050565b60006020820190508181036000830152615a06816152f7565b9050919050565b60006020820190508181036000830152615a268161535d565b9050919050565b60006020820190508181036000830152615a46816153c3565b9050919050565b60006020820190508181036000830152615a6681615403565b9050919050565b60006020820190508181036000830152615a8681615469565b9050919050565b60006020820190508181036000830152615aa6816154a9565b9050919050565b6000606082019050615ac26000830184615551565b92915050565b6000606082019050615add60008301866155a2565b615aea60208301856155de565b615af760408301846155de565b949350505050565b6000602082019050615b1460008301846155c0565b92915050565b600060a082019050615b2f60008301886155c0565b615b3c6020830187614b9e565b615b496040830186614bad565b615b566060830185614d12565b615b6360808301846155c0565b9695505050505050565b600060a082019050615b8260008301886155c0565b615b8f6020830187614b9e565b615b9c6040830186614bad565b615ba960608301856155c0565b615bb660808301846155c0565b9695505050505050565b600060a082019050615bd560008301886155c0565b615be26020830187614bad565b615bef6040830186614bad565b615bfc6060830185614d12565b615c0960808301846155c0565b9695505050505050565b6000604082019050615c2860008301856155c0565b615c356020830184614c78565b9392505050565b6000604082019050615c5160008301856155c0565b615c5e6020830184614d03565b9392505050565b6000606082019050615c7a60008301866155de565b615c8760208301856155c0565b615c9460408301846155b1565b949350505050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615d4082615db9565b9050919050565b60008115159050919050565b6000819050919050565b6000615d6882615d35565b9050919050565b6000615d7a82615d35565b9050919050565b6000615d8c82615d35565b9050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b6000615e0f82615ea6565b9050919050565b6000615e2182615e28565b9050919050565b6000615e3382615db9565b9050919050565b6000615e4582615e4c565b9050919050565b6000615e5782615db9565b9050919050565b6000615e6982615e70565b9050919050565b6000615e7b82615db9565b9050919050565b6000615e8d82615dd9565b9050919050565b6000615e9f82615d9d565b9050919050565b6000615eb182615eb8565b9050919050565b6000615ec382615db9565b9050919050565b60005b83811015615ee8578082015181840152602081019050615ecd565b83811115615ef7576000848401525b50505050565b615f0681615d35565b8114615f1157600080fd5b50565b615f1d81615d47565b8114615f2857600080fd5b50565b615f3481615d53565b8114615f3f57600080fd5b50565b615f4b81615d5d565b8114615f5657600080fd5b50565b615f6281615d6f565b8114615f6d57600080fd5b50565b615f7981615d81565b8114615f8457600080fd5b50565b615f9081615dd9565b8114615f9b57600080fd5b50565b615fa781615df7565b8114615fb257600080fd5b5056fea26469706673582212207e126b0ffefe9fa82508c02f85d6626154c2099bd7776e21990ddee978477ed564736f6c634300060c0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x660D CODESIZE SUB DUP1 PUSH3 0x660D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x3D3 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x49 PUSH3 0x1E4 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH3 0x152 JUMPI POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH3 0x194 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x18B SWAP1 PUSH3 0x548 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE POP POP PUSH3 0x1DC DUP2 PUSH3 0x1EC PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP PUSH3 0x5EB JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH3 0x1FC PUSH3 0x1E4 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x28C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x283 SWAP1 PUSH3 0x56A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH3 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2F6 SWAP1 PUSH3 0x526 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x3CD DUP2 PUSH3 0x5D1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x3F7 DUP6 DUP3 DUP7 ADD PUSH3 0x3BC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x40A DUP6 DUP3 DUP7 ADD PUSH3 0x3BC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x423 PUSH1 0x26 DUP4 PUSH3 0x58C JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x48B PUSH1 0x2E DUP4 PUSH3 0x58C JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A3A43616E6E6F7420636F6E73747275637420776974 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x68207A65726F2061646472657373000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4F3 PUSH1 0x20 DUP4 PUSH3 0x58C JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x541 DUP2 PUSH3 0x414 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x563 DUP2 PUSH3 0x47C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x585 DUP2 PUSH3 0x4E4 JUMP JUMPDEST 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 PUSH3 0x5AA DUP3 PUSH3 0x5B1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x5DC DUP2 PUSH3 0x59D JUMP JUMPDEST DUP2 EQ PUSH3 0x5E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x5FEB PUSH3 0x622 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB67 MSTORE DUP1 PUSH2 0xDA5 MSTORE DUP1 PUSH2 0x12E2 MSTORE DUP1 PUSH2 0x2B39 MSTORE DUP1 PUSH2 0x3082 MSTORE DUP1 PUSH2 0x31E4 MSTORE POP PUSH2 0x5FEB 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 0x253 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x146 JUMPI DUP1 PUSH4 0x98969E82 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xCAB34C08 GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xCAB34C08 EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x6DB JUMPI DUP1 PUSH4 0xDCD18DD4 EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x713 JUMPI DUP1 PUSH4 0xF624D2C5 EQ PUSH2 0x72F JUMPI DUP1 PUSH4 0xF6D676BE EQ PUSH2 0x74B JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x98969E82 EQ PUSH2 0x619 JUMPI DUP1 PUSH4 0xB763E7C4 EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0xB76F4AEB EQ PUSH2 0x665 JUMPI DUP1 PUSH4 0xC1BCB493 EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x68D JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x574 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0x8F10369A EQ PUSH2 0x5AE JUMPI DUP1 PUSH4 0x933F084F EQ PUSH2 0x5CC JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x5E8 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x4DA JUMPI DUP1 PUSH4 0x7973AA7B EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x79D12FFB EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x556 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 GT PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x454B0608 GT PUSH2 0x198 JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x42E JUMPI DUP1 PUSH4 0x4B87E90F EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x61F8E66F EQ PUSH2 0x4B2 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x28662551 EQ PUSH2 0x3BC JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0x34C0B46B EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0x3EF6DB91 EQ PUSH2 0x412 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x18FCCC76 GT PUSH2 0x21B JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x19610B2B EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0x1BBE9D8C EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x1EA48870 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x2273EE6E EQ PUSH2 0x384 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xC812AF3 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x2B0 JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x2E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x260 PUSH2 0x755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26D SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x28B SWAP2 SWAP1 PUSH2 0x4A1E JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29A PUSH2 0x9F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x5741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C5 SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AC8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2EA PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F7 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x336 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x49E2 JUMP JUMPDEST PUSH2 0xCEC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x352 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x34D SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0xE28 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x36E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x369 SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37B SWAP2 SWAP1 PUSH2 0x5741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x399 SWAP2 SWAP1 PUSH2 0x4A6D JUMP JUMPDEST PUSH2 0xFA5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3B5 SWAP2 SWAP1 PUSH2 0x48B3 JUMP JUMPDEST PUSH2 0x1067 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3D1 SWAP2 SWAP1 PUSH2 0x49E2 JUMP JUMPDEST PUSH2 0x11C7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3ED SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0x14C1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3FC PUSH2 0x1600 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x409 SWAP2 SWAP1 PUSH2 0x56FD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x42C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x427 SWAP2 SWAP1 PUSH2 0x473A JUMP JUMPDEST PUSH2 0x168E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x448 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x443 SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x182F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x464 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45F SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x1D2D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x480 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x47B SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x1EF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x48D SWAP2 SWAP1 PUSH2 0x5AAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4AB SWAP2 SWAP1 PUSH2 0x4651 JUMP JUMPDEST PUSH2 0x2319 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4BA PUSH2 0x2359 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4C7 SWAP2 SWAP1 PUSH2 0x571F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4D8 PUSH2 0x2462 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4EF SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x25B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x501 SWAP2 SWAP1 PUSH2 0x575C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x524 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x51F SWAP2 SWAP1 PUSH2 0x4696 JUMP JUMPDEST PUSH2 0x25F1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x540 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x53B SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0x276C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x5741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x55E PUSH2 0x278C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x56B SWAP2 SWAP1 PUSH2 0x5777 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x57C PUSH2 0x27B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x589 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5A7 SWAP2 SWAP1 PUSH2 0x4A1E JUMP JUMPDEST PUSH2 0x27DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5B6 PUSH2 0x2A71 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C3 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5E1 SWAP2 SWAP1 PUSH2 0x49E2 JUMP JUMPDEST PUSH2 0x2A77 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x602 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5FD SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0x2BBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x610 SWAP3 SWAP2 SWAP1 PUSH2 0x5C3C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x633 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62E SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0x2BED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x640 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x663 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x65E SWAP2 SWAP1 PUSH2 0x4B0B JUMP JUMPDEST PUSH2 0x2F61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x66D PUSH2 0x3010 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x67A SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x68B PUSH2 0x3016 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6A2 SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x3044 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6B4 SWAP2 SWAP1 PUSH2 0x5792 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C5 PUSH2 0x3080 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6D2 SWAP2 SWAP1 PUSH2 0x575C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6F0 SWAP2 SWAP1 PUSH2 0x4A1E JUMP JUMPDEST PUSH2 0x30A4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x711 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x70C SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0x3431 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x72D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x728 SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0x3558 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x749 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x744 SWAP2 SWAP1 PUSH2 0x4993 JUMP JUMPDEST PUSH2 0x371A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x753 PUSH2 0x37C7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x76A PUSH2 0x43D2 JUMP JUMPDEST PUSH2 0x773 DUP5 PUSH2 0x1EF3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH2 0x816 PUSH5 0xE8D4A51000 PUSH2 0x7FB DUP5 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x802 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x835 DUP5 DUP3 PUSH1 0x0 ADD SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x4 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x84C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x926 JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x44AF0FA7 DUP8 CALLER DUP8 PUSH1 0x0 DUP8 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8F3 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x921 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x988 DUP5 DUP7 PUSH1 0x3 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x938 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x9E6 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xA16 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x0 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP4 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA8E PUSH2 0x43D2 JUMP JUMPDEST PUSH2 0xA97 DUP4 PUSH2 0x1EF3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH5 0xE8D4A51000 PUSH2 0xB22 DUP5 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0xB29 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0xB4D PUSH2 0xB48 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3B05 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 EQ PUSH2 0xBAC JUMPI PUSH2 0xBAB DUP6 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xBBB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC94 JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x44AF0FA7 DUP9 CALLER DUP10 DUP7 DUP10 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC61 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B6D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0xCDB SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xD2F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD26 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD DUP4 DUP2 PUSH2 0xD3C JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xD82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD79 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD97 DUP2 PUSH1 0xA SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH2 0xDEA CALLER ADDRESS DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BA2 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x8F596A35F0CDEFC7E1E1E80E73ECED8BFDB8CA9E519CA4042AD0963F19BC239E PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0xE1B SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0xE30 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xEBD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEB4 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC48D651D88968F843204BAF13AA11CD1A590E611C6DCADC7ED4DAAB1F98462A DUP2 PUSH1 0x40 MLOAD PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD505ACCF CALLER ADDRESS DUP10 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1021 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x562E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x104F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x105E DUP8 DUP8 DUP8 PUSH2 0x27DB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x106F PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F3 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x114C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1143 SWAP1 PUSH2 0x59ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x3BA4758949FEBC607E14523620298F8B5995B1848492AD7AA083372AC886AE07 DUP2 PUSH1 0x40 MLOAD PUSH2 0x11BC SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x11CF PUSH2 0x27B2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x1258 JUMPI POP PUSH1 0x1 ISZERO ISZERO PUSH1 0x7 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 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ JUMPDEST PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x128E SWAP1 PUSH2 0x5A4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x12DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12D1 SWAP1 PUSH2 0x57ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1327 CALLER ADDRESS DUP5 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BA2 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA SLOAD TIMESTAMP LT PUSH2 0x13A9 JUMPI PUSH1 0x0 DUP2 GT PUSH2 0x1373 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x136A SWAP1 PUSH2 0x5A8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x137B PUSH2 0x3016 JUMP JUMPDEST PUSH2 0x138E DUP2 TIMESTAMP PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP DUP1 DUP3 DUP2 PUSH2 0x139D JUMPI INVALID JUMPDEST DIV PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH2 0x144B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C0 TIMESTAMP PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13D9 PUSH1 0x9 SLOAD DUP4 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13F2 DUP5 PUSH1 0xA SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1409 TIMESTAMP DUP4 PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x141C DUP8 DUP6 PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x1423 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x9 SLOAD DUP2 EQ PUSH2 0x1438 JUMPI PUSH2 0x1437 PUSH2 0x3016 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0xA DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x9 DUP2 SWAP1 SSTORE POP POP POP POP POP JUMPDEST PUSH32 0xDE89CB17AC7F58F94792B3E91E086ED85403819C24CEEA882491F960CCB1A278 PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH2 0x147C SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x8F596A35F0CDEFC7E1E1E80E73ECED8BFDB8CA9E519CA4042AD0963F19BC239E PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x14B5 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x1594 DUP4 DUP3 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1544 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP5 PUSH1 0x40 MLOAD PUSH2 0x15F2 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD DUP1 PUSH1 0x20 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 DUP1 ISZERO PUSH2 0x1684 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x163A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1696 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1723 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x171A SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP6 SWAP1 POP DUP9 DUP9 SWAP1 POP EQ DUP1 ISZERO PUSH2 0x173D JUMPI POP DUP4 DUP4 SWAP1 POP DUP7 DUP7 SWAP1 POP EQ JUMPDEST DUP1 ISZERO PUSH2 0x174E JUMPI POP DUP2 DUP2 SWAP1 POP DUP5 DUP5 SWAP1 POP EQ JUMPDEST PUSH2 0x178D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1784 SWAP1 PUSH2 0x598D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1795 PUSH2 0x3016 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP9 SWAP1 POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1823 JUMPI PUSH2 0x1818 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x17B7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x17CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x17DD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x17F2 SWAP2 SWAP1 PUSH2 0x48DC JUMP JUMPDEST DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x17FE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1813 SWAP2 SWAP1 PUSH2 0x480F JUMP JUMPDEST PUSH2 0x3CE4 JUMP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x17A0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1837 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x18C4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18BB SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1914 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x190B SWAP1 PUSH2 0x59ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x19A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x199D SWAP1 PUSH2 0x58ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x19B5 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A1D SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A6D SWAP2 SWAP1 PUSH2 0x492E JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1ACC SWAP3 SWAP2 SWAP1 PUSH2 0x56D4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B1E SWAP2 SWAP1 PUSH2 0x4838 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE5494BB DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B7C SWAP2 SWAP1 PUSH2 0x575C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BAA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCE SWAP2 SWAP1 PUSH2 0x488A JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C09 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C59 SWAP2 SWAP1 PUSH2 0x492E JUMP JUMPDEST DUP3 EQ PUSH2 0x1C9A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C91 SWAP1 PUSH2 0x588D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1CA8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xD5837B673FFAAC69230366D3F7EB7CB2BA2B9FD8F2D4E9D0F5E92D3756B1D546 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1D1F SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x1D35 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1DC2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DB9 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x1E05 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DFC SWAP1 PUSH2 0x5A8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E0D PUSH2 0x3016 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E24 TIMESTAMP PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E3D PUSH1 0x9 SLOAD DUP4 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1E52 DUP4 TIMESTAMP PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH2 0x1E6D TIMESTAMP PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 DUP2 PUSH2 0x1E75 JUMPI INVALID JUMPDEST DIV PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH32 0xDE89CB17AC7F58F94792B3E91E086ED85403819C24CEEA882491F960CCB1A278 PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH2 0x1EAD SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x8F596A35F0CDEFC7E1E1E80E73ECED8BFDB8CA9E519CA4042AD0963F19BC239E PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x1EE6 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x1EFB PUSH2 0x43D2 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1F08 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP GT ISZERO PUSH2 0x2314 JUMPI PUSH1 0x0 PUSH1 0x3 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1FF2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2055 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2081 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20A5 SWAP2 SWAP1 PUSH2 0x492E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x21EE JUMPI PUSH1 0x0 PUSH1 0xA SLOAD TIMESTAMP GT ISZERO PUSH2 0x2103 JUMPI DUP3 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA SLOAD GT PUSH2 0x20DA JUMPI PUSH1 0x0 PUSH2 0x20FE JUMP JUMPDEST PUSH2 0x20FD DUP4 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST PUSH2 0x2125 JUMP JUMPDEST PUSH2 0x2124 DUP4 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 SLOAD PUSH2 0x2161 DUP6 PUSH1 0x40 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2153 PUSH1 0x9 SLOAD DUP7 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2168 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x21BC PUSH2 0x2197 DUP5 PUSH2 0x218A PUSH5 0xE8D4A51000 DUP6 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2191 JUMPI INVALID JUMPDEST DIV PUSH2 0x3E89 JUMP JUMPDEST DUP6 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3F08 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 PUSH1 0x0 ADD SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP JUMPDEST PUSH2 0x21F7 TIMESTAMP PUSH2 0x3F7C JUMP JUMPDEST DUP3 PUSH1 0x20 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 PUSH1 0x2 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2224 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP3 PUSH32 0xB22162DAC390356A083E49A03154A93D123F935F80AAC3763BA0FA470C8FBE5E DUP4 PUSH1 0x20 ADD MLOAD DUP4 DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x230A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C65 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SWAP1 POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2353 JUMPI PUSH2 0x2347 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x233B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1EF3 JUMP JUMPDEST POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2324 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2459 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x237D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x246A PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x24F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24EE SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x25C2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x25F9 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2686 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x267D SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP4 SWAP1 POP DUP7 DUP7 SWAP1 POP EQ DUP1 ISZERO PUSH2 0x26A0 JUMPI POP DUP2 DUP2 SWAP1 POP DUP5 DUP5 SWAP1 POP EQ JUMPDEST PUSH2 0x26DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26D6 SWAP1 PUSH2 0x598D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x26E7 PUSH2 0x3016 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP7 SWAP1 POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2762 JUMPI PUSH2 0x2757 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x2709 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x271C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2731 SWAP2 SWAP1 PUSH2 0x4861 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x273D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2752 SWAP2 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x3FF3 JUMP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x26F2 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x27E3 PUSH2 0x43D2 JUMP JUMPDEST PUSH2 0x27EC DUP5 PUSH2 0x1EF3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH2 0x2859 DUP5 DUP3 PUSH1 0x0 ADD SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x28AE PUSH5 0xE8D4A51000 PUSH2 0x2893 DUP5 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x289A JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x435A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x4 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x28C5 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x299F JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x44AF0FA7 DUP8 DUP7 DUP8 PUSH1 0x0 DUP8 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x296C SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x299A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2A03 CALLER ADDRESS DUP8 PUSH1 0x3 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x29B2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BA2 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2A61 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x2ABA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AB1 SWAP1 PUSH2 0x584D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2AD1 DUP4 PUSH1 0x9 SLOAD PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x2B16 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B0D SWAP1 PUSH2 0x58AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B2B DUP4 PUSH1 0xA SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH2 0x2B7E CALLER ADDRESS DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BA2 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x8F596A35F0CDEFC7E1E1E80E73ECED8BFDB8CA9E519CA4042AD0963F19BC239E PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x2BAF SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP2 POP POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BF7 PUSH2 0x43D2 JUMP JUMPDEST PUSH1 0x2 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2C04 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP7 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 SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x2D47 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2DAA SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DFA SWAP2 SWAP1 PUSH2 0x492E JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x2E1A JUMPI POP PUSH1 0x0 DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0x2F12 JUMPI PUSH1 0x0 PUSH1 0xA SLOAD TIMESTAMP GT ISZERO PUSH2 0x2E72 JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA SLOAD GT PUSH2 0x2E49 JUMPI PUSH1 0x0 PUSH2 0x2E6D JUMP JUMPDEST PUSH2 0x2E6C DUP6 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST PUSH2 0x2E94 JUMP JUMPDEST PUSH2 0x2E93 DUP6 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 SLOAD PUSH2 0x2ED0 DUP8 PUSH1 0x40 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2EC2 PUSH1 0x9 SLOAD DUP7 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2ED7 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2F0D DUP4 PUSH2 0x2EF6 PUSH5 0xE8D4A51000 DUP5 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2EFD JUMPI INVALID JUMPDEST DIV DUP6 PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x2F55 PUSH2 0x2F50 DUP5 PUSH1 0x1 ADD SLOAD PUSH5 0xE8D4A51000 PUSH2 0x2F3A DUP7 DUP9 PUSH1 0x0 ADD SLOAD PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2F41 JUMPI INVALID JUMPDEST DIV PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3B05 JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2F69 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FED SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2FFE PUSH2 0x3016 JUMP JUMPDEST PUSH2 0x300A DUP5 DUP5 DUP5 DUP5 PUSH2 0x3CE4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3040 JUMPI PUSH2 0x3034 DUP2 PUSH2 0x1EF3 JUMP JUMPDEST POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3023 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3051 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x30AC PUSH2 0x43D2 JUMP JUMPDEST PUSH2 0x30B5 DUP5 PUSH2 0x1EF3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH5 0xE8D4A51000 PUSH2 0x3140 DUP5 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x3147 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x316B PUSH2 0x3166 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3B05 JUMP JUMPDEST SWAP1 POP PUSH2 0x31B6 PUSH5 0xE8D4A51000 PUSH2 0x319F DUP7 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x31A6 JUMPI INVALID JUMPDEST DIV DUP4 PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x31D5 DUP7 DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x3228 DUP6 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x3237 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3310 JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x44AF0FA7 DUP10 CALLER DUP10 DUP7 DUP10 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32DD SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B6D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x3372 DUP7 DUP9 PUSH1 0x3 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x3322 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x33D0 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x341F SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3439 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x34C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34BD SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x423B2DA7EEBE1997AF6D3D8F0C00FD04DE1D323A87CD69152DAD613731EB2325 DUP2 PUSH1 0x40 MLOAD PUSH2 0x354D SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x3560 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x35ED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E4 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x365D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3654 SWAP1 PUSH2 0x586D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x3722 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x37AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37A6 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x37B7 PUSH2 0x3016 JUMP JUMPDEST PUSH2 0x37C2 DUP4 DUP4 DUP4 PUSH2 0x3FF3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x37CF PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x385C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3853 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xF460FD6AFBBD82E0C22F24030B32F63BEFE14935B39A79BB3520220B21A0ED94 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ DUP1 PUSH2 0x38C1 JUMPI POP DUP3 DUP3 DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 PUSH2 0x38BE JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x3900 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x38F7 SWAP1 PUSH2 0x5A6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB SWAP1 POP PUSH1 0x0 DUP4 SLT ISZERO DUP1 ISZERO PUSH2 0x391F JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3935 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3934 JUMPI POP DUP4 DUP2 SGT JUMPDEST JUMPDEST PUSH2 0x3974 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396B SWAP1 PUSH2 0x5A0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP5 SUB SWAP2 POP DUP2 GT ISZERO PUSH2 0x39C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39BF SWAP1 PUSH2 0x57AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3A01 SWAP3 SWAP2 SWAP1 PUSH2 0x56D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x3A4F SWAP2 SWAP1 PUSH2 0x55FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3A8C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A91 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3ABF JUMPI POP PUSH1 0x0 DUP2 MLOAD EQ DUP1 PUSH2 0x3ABE JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3ABD SWAP2 SWAP1 PUSH2 0x4838 JUMP JUMPDEST JUMPDEST JUMPDEST PUSH2 0x3AFE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AF5 SWAP1 PUSH2 0x582D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x3B4A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B41 SWAP1 PUSH2 0x57CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 DUP5 ADD SWAP2 POP DUP2 LT ISZERO PUSH2 0x3B9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B93 SWAP1 PUSH2 0x594D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3BD7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x569D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x3C25 SWAP2 SWAP1 PUSH2 0x55FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C62 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C67 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3C95 JUMPI POP PUSH1 0x0 DUP2 MLOAD EQ DUP1 PUSH2 0x3C94 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3C93 SWAP2 SWAP1 PUSH2 0x4838 JUMP JUMPDEST JUMPDEST JUMPDEST PUSH2 0x3CD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CCB SWAP1 PUSH2 0x5A2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3D43 DUP4 PUSH2 0x3D35 PUSH1 0x2 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x3CF8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x8 SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH2 0x3D52 DUP4 PUSH2 0x3F7C JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x3D5F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x3DEF JUMPI DUP2 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x3DA6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x3E31 JUMPI PUSH1 0x4 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3E01 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3E33 JUMP JUMPDEST DUP2 JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0x5766994790E89C27D9799092C4A6B179974A5B61A62663156D03D799CC8C01B8 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x3E7B SWAP3 SWAP2 SWAP1 PUSH2 0x5C13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 GT ISZERO PUSH2 0x3F00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3EF7 SWAP1 PUSH2 0x592D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3F76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F6D SWAP1 PUSH2 0x594D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 GT ISZERO PUSH2 0x3FEB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3FE2 SWAP1 PUSH2 0x59CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0x6 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 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x4086 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x407D SWAP1 PUSH2 0x59AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x409B DUP4 PUSH1 0x8 SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH1 0x3 DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x4 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4196 TIMESTAMP PUSH2 0x3F7C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41AE DUP7 PUSH2 0x3F7C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x431E PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0xE72DFF05C5A9817B99753FFFDEC6B7800CC743C2F4B1FBC3EEB93983712A2A46 DUP7 PUSH1 0x40 MLOAD PUSH2 0x434D SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP PUSH1 0x0 DUP4 SLT ISZERO DUP1 ISZERO PUSH2 0x4373 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x4389 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x4388 JUMPI POP DUP4 DUP2 SLT JUMPDEST JUMPDEST PUSH2 0x43C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43BF SWAP1 PUSH2 0x58CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4428 DUP2 PUSH2 0x5EFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x448A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x44A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x44BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x44D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x44ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x451E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x454F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4565 DUP2 PUSH2 0x5F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x457A DUP2 PUSH2 0x5F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x458F DUP2 PUSH2 0x5F2B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x45A4 DUP2 PUSH2 0x5F42 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x45B9 DUP2 PUSH2 0x5F42 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x45CE DUP2 PUSH2 0x5F59 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x45E3 DUP2 PUSH2 0x5F70 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x45F8 DUP2 PUSH2 0x5F87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x460D DUP2 PUSH2 0x5F87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4622 DUP2 PUSH2 0x5F9E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x463A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4648 DUP5 DUP3 DUP6 ADD PUSH2 0x4419 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x467E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x468A DUP6 DUP3 DUP7 ADD PUSH2 0x450C JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x46AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x46C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46D5 DUP10 DUP3 DUP11 ADD PUSH2 0x450C JUMP JUMPDEST SWAP7 POP SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x46F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4700 DUP10 DUP3 DUP11 ADD PUSH2 0x4478 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x471F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472B DUP10 DUP3 DUP11 ADD PUSH2 0x44C2 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4770 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x477C DUP12 DUP3 DUP13 ADD PUSH2 0x450C JUMP JUMPDEST SWAP9 POP SWAP9 POP POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x479B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47A7 DUP12 DUP3 DUP13 ADD PUSH2 0x450C JUMP JUMPDEST SWAP7 POP SWAP7 POP POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x47C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47D2 DUP12 DUP3 DUP13 ADD PUSH2 0x44C2 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x47F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47FD DUP12 DUP3 DUP13 ADD PUSH2 0x442E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x482F DUP5 DUP3 DUP6 ADD PUSH2 0x4556 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x484A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4858 DUP5 DUP3 DUP6 ADD PUSH2 0x456B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4881 DUP5 DUP3 DUP6 ADD PUSH2 0x4595 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x489C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x48AA DUP5 DUP3 DUP6 ADD PUSH2 0x45AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x48D3 DUP5 DUP3 DUP6 ADD PUSH2 0x45BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x48FC DUP5 DUP3 DUP6 ADD PUSH2 0x45D4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4917 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4925 DUP5 DUP3 DUP6 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x494E DUP5 DUP3 DUP6 ADD PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x496A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4978 DUP6 DUP3 DUP7 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4989 DUP6 DUP3 DUP7 ADD PUSH2 0x4419 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x49A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x49B6 DUP7 DUP3 DUP8 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x49C7 DUP7 DUP3 DUP8 ADD PUSH2 0x4595 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x49D8 DUP7 DUP3 DUP8 ADD PUSH2 0x45D4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A03 DUP6 DUP3 DUP7 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4A14 DUP6 DUP3 DUP7 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A41 DUP7 DUP3 DUP8 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4A52 DUP7 DUP3 DUP8 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4A63 DUP7 DUP3 DUP8 ADD PUSH2 0x4419 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4A88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A96 DUP11 DUP3 DUP12 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4AA7 DUP11 DUP3 DUP12 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4AB8 DUP11 DUP3 DUP12 ADD PUSH2 0x4419 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4AC9 DUP11 DUP3 DUP12 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4ADA DUP11 DUP3 DUP12 ADD PUSH2 0x4613 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4AEB DUP11 DUP3 DUP12 ADD PUSH2 0x4580 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4AFC DUP11 DUP3 DUP12 ADD PUSH2 0x4580 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B2F DUP8 DUP3 DUP9 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4B40 DUP8 DUP3 DUP9 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4B51 DUP8 DUP3 DUP9 ADD PUSH2 0x45D4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B62 DUP8 DUP3 DUP9 ADD PUSH2 0x4556 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B7A DUP4 DUP4 PUSH2 0x4CC7 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B92 DUP4 DUP4 PUSH2 0x550F JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4BA7 DUP2 PUSH2 0x5E04 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4BB6 DUP2 PUSH2 0x5D35 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BC7 DUP3 PUSH2 0x5CBC JUMP JUMPDEST PUSH2 0x4BD1 DUP2 DUP6 PUSH2 0x5CF7 JUMP JUMPDEST SWAP4 POP PUSH2 0x4BDC DUP4 PUSH2 0x5C9C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4C0D JUMPI DUP2 MLOAD PUSH2 0x4BF4 DUP9 DUP3 PUSH2 0x4B6E JUMP JUMPDEST SWAP8 POP PUSH2 0x4BFF DUP4 PUSH2 0x5CDD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x4BE0 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C25 DUP3 PUSH2 0x5CC7 JUMP JUMPDEST PUSH2 0x4C2F DUP2 DUP6 PUSH2 0x5D08 JUMP JUMPDEST SWAP4 POP PUSH2 0x4C3A DUP4 PUSH2 0x5CAC JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4C6B JUMPI DUP2 MLOAD PUSH2 0x4C52 DUP9 DUP3 PUSH2 0x4B86 JUMP JUMPDEST SWAP8 POP PUSH2 0x4C5D DUP4 PUSH2 0x5CEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x4C3E JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4C81 DUP2 PUSH2 0x5D47 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4C90 DUP2 PUSH2 0x5D53 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CA1 DUP3 PUSH2 0x5CD2 JUMP JUMPDEST PUSH2 0x4CAB DUP2 DUP6 PUSH2 0x5D19 JUMP JUMPDEST SWAP4 POP PUSH2 0x4CBB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5ECA JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4CD0 DUP2 PUSH2 0x5E16 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4CDF DUP2 PUSH2 0x5E16 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4CEE DUP2 PUSH2 0x5E3A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4CFD DUP2 PUSH2 0x5E5E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4D0C DUP2 PUSH2 0x5D93 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4D1B DUP2 PUSH2 0x5E82 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2E PUSH1 0x15 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A20556E646572666C6F770000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D6E PUSH1 0xB DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x496E7465676572203C2030000000000000000000000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DAE PUSH1 0x22 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A2066756E64696E672063616E6E6F74206265207A65 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x726F000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E14 PUSH1 0x28 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20696E73756666696369656E7420657874656E7369 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6F6E206C696D6974000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E7A PUSH1 0x1C DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EBA PUSH1 0x2D DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20657874656E73696F6E206475726174696F6E2063 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x616E6E6F74206265207A65726F00000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F20 PUSH1 0x26 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F86 PUSH1 0x27 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A206D696772617465642062616C616E6365206D7573 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x74206D6174636800000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FEC PUSH1 0x26 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20696E73756666696369656E742066756E64696E67 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x206C696D69740000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5052 PUSH1 0x21 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B8 PUSH1 0x1B DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A206E6F206D69677261746F72207365740000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F8 PUSH1 0x29 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A2066756E64696E6720616D6F756E742063616E6E6F PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x74206265207A65726F0000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x515E PUSH1 0x1C DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519E PUSH1 0x18 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51DE PUSH1 0x20 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x521E PUSH1 0x25 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20696E76616C696420706172616D65746572206C65 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6E67746873000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5284 PUSH1 0x13 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x546F6B656E20616C726561647920616464656400000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52C4 PUSH1 0x1B DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5304 PUSH1 0x27 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A206D6967726174696F6E20686173206265656E2064 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x697361626C656400000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x536A PUSH1 0x24 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x666C6F7700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53D0 PUSH1 0x20 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5410 PUSH1 0x22 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A2063616C6C6572206973206E6F7420612066756E64 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6572000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5476 PUSH1 0x18 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54B6 PUSH1 0x2A DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20726577617264206475726174696F6E2063616E6E PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6F74206265207A65726F00000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x5525 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x5593 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x5538 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x55CF JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x554B PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x55CF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x5567 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x5593 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x557A PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x55CF JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x558D PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x55CF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x559C DUP2 PUSH2 0x5D9D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55AB DUP2 PUSH2 0x5D9D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55BA DUP2 PUSH2 0x5E94 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55C9 DUP2 PUSH2 0x5DD9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55D8 DUP2 PUSH2 0x5DE3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55E7 DUP2 PUSH2 0x5DE3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55F6 DUP2 PUSH2 0x5DF7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5608 DUP3 DUP5 PUSH2 0x4C96 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5628 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4BAD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH2 0x5643 PUSH1 0x0 DUP4 ADD DUP11 PUSH2 0x4B9E JUMP JUMPDEST PUSH2 0x5650 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x565D PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x566A PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5677 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x55ED JUMP JUMPDEST PUSH2 0x5684 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4C87 JUMP JUMPDEST PUSH2 0x5691 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4C87 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x56B2 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x56BF PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x56CC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x56E9 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x56F6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5717 DUP2 DUP5 PUSH2 0x4BBC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5739 DUP2 DUP5 PUSH2 0x4C1A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5756 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4C78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5771 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4CD6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x578C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4CE5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x57A7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4CF4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x57C6 DUP2 PUSH2 0x4D21 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x57E6 DUP2 PUSH2 0x4D61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5806 DUP2 PUSH2 0x4DA1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5826 DUP2 PUSH2 0x4E07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5846 DUP2 PUSH2 0x4E6D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5866 DUP2 PUSH2 0x4EAD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5886 DUP2 PUSH2 0x4F13 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x58A6 DUP2 PUSH2 0x4F79 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x58C6 DUP2 PUSH2 0x4FDF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x58E6 DUP2 PUSH2 0x5045 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5906 DUP2 PUSH2 0x50AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5926 DUP2 PUSH2 0x50EB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5946 DUP2 PUSH2 0x5151 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5966 DUP2 PUSH2 0x5191 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5986 DUP2 PUSH2 0x51D1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x59A6 DUP2 PUSH2 0x5211 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x59C6 DUP2 PUSH2 0x5277 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x59E6 DUP2 PUSH2 0x52B7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A06 DUP2 PUSH2 0x52F7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A26 DUP2 PUSH2 0x535D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A46 DUP2 PUSH2 0x53C3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A66 DUP2 PUSH2 0x5403 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A86 DUP2 PUSH2 0x5469 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5AA6 DUP2 PUSH2 0x54A9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5AC2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x5551 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5ADD PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x55A2 JUMP JUMPDEST PUSH2 0x5AEA PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x55DE JUMP JUMPDEST PUSH2 0x5AF7 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x55DE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5B14 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x5B2F PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5B3C PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4B9E JUMP JUMPDEST PUSH2 0x5B49 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x5B56 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4D12 JUMP JUMPDEST PUSH2 0x5B63 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x5B82 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5B8F PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4B9E JUMP JUMPDEST PUSH2 0x5B9C PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x5BA9 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5BB6 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x5BD5 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5BE2 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x5BEF PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x5BFC PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4D12 JUMP JUMPDEST PUSH2 0x5C09 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5C28 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5C35 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4C78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5C51 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5C5E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D03 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5C7A PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x55DE JUMP JUMPDEST PUSH2 0x5C87 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5C94 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x55B1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD 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 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D40 DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D68 DUP3 PUSH2 0x5D35 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D7A DUP3 PUSH2 0x5D35 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D8C DUP3 PUSH2 0x5D35 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E0F DUP3 PUSH2 0x5EA6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E21 DUP3 PUSH2 0x5E28 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E33 DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E45 DUP3 PUSH2 0x5E4C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E57 DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E69 DUP3 PUSH2 0x5E70 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E7B DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E8D DUP3 PUSH2 0x5DD9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E9F DUP3 PUSH2 0x5D9D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5EB1 DUP3 PUSH2 0x5EB8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5EC3 DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5EE8 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5ECD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x5EF7 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x5F06 DUP2 PUSH2 0x5D35 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F1D DUP2 PUSH2 0x5D47 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F34 DUP2 PUSH2 0x5D53 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F4B DUP2 PUSH2 0x5D5D JUMP JUMPDEST DUP2 EQ PUSH2 0x5F56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F62 DUP2 PUSH2 0x5D6F JUMP JUMPDEST DUP2 EQ PUSH2 0x5F6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F79 DUP2 PUSH2 0x5D81 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F90 DUP2 PUSH2 0x5DD9 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5FA7 DUP2 PUSH2 0x5DF7 JUMP JUMPDEST DUP2 EQ PUSH2 0x5FB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x126B0FFEFE9FA82508C02F85D6626154C2099BD7776E21990DDEE978477ED5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "825:21845:3:-:0;;;3915:328;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;882:17:11;902:12;:10;;;:12;;:::i;:::-;882:32;;933:9;924:6;;:18;;;;;;;;;;;;;;;;;;990:9;957:43;;986:1;957:43;;;;;;;;;;;;848:159;4034:1:3;4010:26;;:12;:26;;;;:68;;;;;4076:1;4053:25;;:11;:25;;;;4010:68;3988:164;;;;;;;;;;;;:::i;:::-;;;;;;;;;4181:12;4165:29;;;;;;;;;;;;4205:30;4223:11;4205:17;;;:30;;:::i;:::-;3915:328;;825:21845;;598:104:10;651:15;685:10;678:17;;598:104;:::o;2000:240:11:-;1297:12;:10;;;:12;;:::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2108:1:::1;2088:22;;:8;:22;;;;2080:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2197:8;2168:38;;2189:6;::::0;::::1;;;;;;;;2168:38;;;;;;;;;;;;2225:8;2216:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2000:240:::0;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;146:399::-;;;278:2;266:9;257:7;253:23;249:32;246:2;;;294:1;291;284:12;246:2;329:1;346:64;402:7;393:6;382:9;378:22;346:64;:::i;:::-;336:74;;308:108;447:2;465:64;521:7;512:6;501:9;497:22;465:64;:::i;:::-;455:74;;426:109;240:305;;;;;:::o;553:375::-;;713:67;777:2;772:3;713:67;:::i;:::-;706:74;;813:34;809:1;804:3;800:11;793:55;882:8;877:2;872:3;868:12;861:30;919:2;914:3;910:12;903:19;;699:229;;;:::o;937:383::-;;1097:67;1161:2;1156:3;1097:67;:::i;:::-;1090:74;;1197:34;1193:1;1188:3;1184:11;1177:55;1266:16;1261:2;1256:3;1252:12;1245:38;1311:2;1306:3;1302:12;1295:19;;1083:237;;;:::o;1329:332::-;;1489:67;1553:2;1548:3;1489:67;:::i;:::-;1482:74;;1589:34;1585:1;1580:3;1576:11;1569:55;1652:2;1647:3;1643:12;1636:19;;1475:186;;;:::o;1669:416::-;;1869:2;1858:9;1854:18;1846:26;;1919:9;1913:4;1909:20;1905:1;1894:9;1890:17;1883:47;1944:131;2070:4;1944:131;:::i;:::-;1936:139;;1840:245;;;:::o;2092:416::-;;2292:2;2281:9;2277:18;2269:26;;2342:9;2336:4;2332:20;2328:1;2317:9;2313:17;2306:47;2367:131;2493:4;2367:131;:::i;:::-;2359:139;;2263:245;;;:::o;2515:416::-;;2715:2;2704:9;2700:18;2692:26;;2765:9;2759:4;2755:20;2751:1;2740:9;2736:17;2729:47;2790:131;2916:4;2790:131;:::i;:::-;2782:139;;2686:245;;;:::o;2939:163::-;;3054:6;3049:3;3042:19;3091:4;3086:3;3082:14;3067:29;;3035:67;;;;:::o;3110:91::-;;3172:24;3190:5;3172:24;:::i;:::-;3161:35;;3155:46;;;:::o;3208:121::-;;3281:42;3274:5;3270:54;3259:65;;3253:76;;;:::o;3336:117::-;3405:24;3423:5;3405:24;:::i;:::-;3398:5;3395:35;3385:2;;3444:1;3441;3434:12;3385:2;3379:74;:::o;825:21845:3:-;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "614": [
                  {
                    "length": 32,
                    "start": 2919
                  },
                  {
                    "length": 32,
                    "start": 3493
                  },
                  {
                    "length": 32,
                    "start": 4834
                  },
                  {
                    "length": 32,
                    "start": 11065
                  },
                  {
                    "length": 32,
                    "start": 12418
                  },
                  {
                    "length": 32,
                    "start": 12772
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102535760003560e01c8063715018a61161014657806398969e82116100c3578063cab34c0811610087578063cab34c08146106bd578063d1abb907146106db578063dcd18dd4146106f7578063f2fde38b14610713578063f624d2c51461072f578063f6d676be1461074b57610253565b806398969e8214610619578063b763e7c414610649578063b76f4aeb14610665578063c1bcb49314610683578063c346253d1461068d57610253565b80638da5cb5b1161010a5780638da5cb5b146105745780638dbdbe6d146105925780638f10369a146105ae578063933f084f146105cc57806393f1a40b146105e857610253565b8063715018a6146104d057806378ed5d1f146104da5780637973aa7b1461050a57806379d12ffb146105265780637cd07e471461055657610253565b806323cf3118116101d4578063454b060811610198578063454b06081461042e5780634b87e90f1461044a57806351eb05a61461046657806357a5b58c1461049657806361f8e66f146104b257610253565b806323cf3118146103a057806328662551146103bc5780632f940c70146103d857806334c0b46b146103f45780633ef6db911461041257610253565b806318fccc761161021b57806318fccc761461030057806319610b2b1461031c5780631bbe9d8c146103385780631ea48870146103545780632273ee6e1461038457610253565b8063081e3eda146102585780630ad58d2f146102765780630c812af3146102925780631526fe27146102b057806317caf6f1146102e2575b600080fd5b610260610755565b60405161026d9190615aff565b60405180910390f35b610290600480360381019061028b9190614a1e565b610762565b005b61029a6109f6565b6040516102a79190615741565b60405180910390f35b6102ca60048036038101906102c59190614905565b610a09565b6040516102d993929190615ac8565b60405180910390f35b6102ea610a80565b6040516102f79190615aff565b60405180910390f35b61031a60048036038101906103159190614957565b610a86565b005b610336600480360381019061033191906149e2565b610cec565b005b610352600480360381019061034d9190614628565b610e28565b005b61036e60048036038101906103699190614628565b610f4f565b60405161037b9190615741565b60405180910390f35b61039e60048036038101906103999190614a6d565b610fa5565b005b6103ba60048036038101906103b591906148b3565b611067565b005b6103d660048036038101906103d191906149e2565b6111c7565b005b6103f260048036038101906103ed9190614957565b6114c1565b005b6103fc611600565b60405161040991906156fd565b60405180910390f35b61042c6004803603810190610427919061473a565b61168e565b005b61044860048036038101906104439190614905565b61182f565b005b610464600480360381019061045f9190614905565b611d2d565b005b610480600480360381019061047b9190614905565b611ef3565b60405161048d9190615aad565b60405180910390f35b6104b060048036038101906104ab9190614651565b612319565b005b6104ba612359565b6040516104c7919061571f565b60405180910390f35b6104d8612462565b005b6104f460048036038101906104ef9190614905565b6125b5565b604051610501919061575c565b60405180910390f35b610524600480360381019061051f9190614696565b6125f1565b005b610540600480360381019061053b9190614628565b61276c565b60405161054d9190615741565b60405180910390f35b61055e61278c565b60405161056b9190615777565b60405180910390f35b61057c6127b2565b6040516105899190615613565b60405180910390f35b6105ac60048036038101906105a79190614a1e565b6127db565b005b6105b6612a71565b6040516105c39190615aff565b60405180910390f35b6105e660048036038101906105e191906149e2565b612a77565b005b61060260048036038101906105fd9190614957565b612bbc565b604051610610929190615c3c565b60405180910390f35b610633600480360381019061062e9190614957565b612bed565b6040516106409190615aff565b60405180910390f35b610663600480360381019061065e9190614b0b565b612f61565b005b61066d613010565b60405161067a9190615aff565b60405180910390f35b61068b613016565b005b6106a760048036038101906106a29190614905565b613044565b6040516106b49190615792565b60405180910390f35b6106c5613080565b6040516106d2919061575c565b60405180910390f35b6106f560048036038101906106f09190614a1e565b6130a4565b005b610711600480360381019061070c9190614628565b613431565b005b61072d60048036038101906107289190614628565b613558565b005b61074960048036038101906107449190614993565b61371a565b005b6107536137c7565b005b6000600280549050905090565b61076a6143d2565b61077384611ef3565b905060006005600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061081664e8d4a510006107fb84600001516fffffffffffffffffffffffffffffffff16876138a490919063ffffffff16565b8161080257fe5b04826001015461390690919063ffffffff16565b816001018190555061083584826000015461397e90919063ffffffff16565b816000018190555060006004868154811061084c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610926578073ffffffffffffffffffffffffffffffffffffffff166344af0fa7873387600087600001546040518663ffffffff1660e01b81526004016108f3959493929190615b1a565b600060405180830381600087803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b505050505b61098884866003898154811061093857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16863373ffffffffffffffffffffffffffffffffffffffff167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516109e69190615aff565b60405180910390a4505050505050565b600160149054906101000a900460ff1681565b60028181548110610a1657fe5b906000526020600020016000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a900467ffffffffffffffff16908060000160189054906101000a900467ffffffffffffffff16905083565b60085481565b610a8e6143d2565b610a9783611ef3565b905060006005600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600064e8d4a51000610b2284600001516fffffffffffffffffffffffffffffffff1684600001546138a490919063ffffffff16565b81610b2957fe5b0490506000610b4d610b4884600101548461390690919063ffffffff16565b613b05565b905081836001018190555060008114610bac57610bab85827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b5b600060048781548110610bbb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c94578073ffffffffffffffffffffffffffffffffffffffff166344af0fa78833898689600001546040518663ffffffff1660e01b8152600401610c61959493929190615b6d565b600060405180830381600087803b158015610c7b57600080fd5b505af1158015610c8f573d6000803e3d6000fd5b505050505b863373ffffffffffffffffffffffffffffffffffffffff167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051610cdb9190615aff565b60405180910390a350505050505050565b60008211610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d269061590d565b60405180910390fd5b60006009548381610d3c57fe5b04905081811015610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d799061580d565b60405180910390fd5b610d9781600a54613b5290919063ffffffff16565b600a81905550610dea3330857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613ba2909392919063ffffffff16565b7f8f596a35f0cdefc7e1e1e80e73eced8bfdb8ca9e519ca4042ad0963f19bc239e600a54604051610e1b9190615aff565b60405180910390a1505050565b610e30613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb49061596d565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0c48d651d88968f843204baf13aa11cd1a590e611c6dcadc7ed4daab1f98462a81604051610f449190615613565b60405180910390a150565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60038781548110610fb257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf333089888888886040518863ffffffff1660e01b8152600401611021979695949392919061562e565b600060405180830381600087803b15801561103b57600080fd5b505af115801561104f573d6000803e3d6000fd5b5050505061105e8787876127db565b50505050505050565b61106f613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f39061596d565b60405180910390fd5b600160149054906101000a900460ff161561114c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611143906159ed565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ba4758949febc607e14523620298f8b5995b1848492ad7aa083372ac886ae07816040516111bc9190615613565b60405180910390a150565b6111cf6127b2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611258575060011515600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90615a4d565b60405180910390fd5b600082116112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906157ed565b60405180910390fd5b6113273330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613ba2909392919063ffffffff16565b600a5442106113a95760008111611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a90615a8d565b60405180910390fd5b61137b613016565b61138e8142613b5290919063ffffffff16565b600a8190555080828161139d57fe5b0460098190555061144b565b60006113c042600a5461397e90919063ffffffff16565b905060006113d9600954836138a490919063ffffffff16565b905060006113f284600a54613b5290919063ffffffff16565b90506000611409428361397e90919063ffffffff16565b61141c8785613b5290919063ffffffff16565b8161142357fe5b049050600954811461143857611437613016565b5b81600a8190555080600981905550505050505b7fde89cb17ac7f58f94792b3e91e086ed85403819c24ceea882491f960ccb1a27860095460405161147c9190615aff565b60405180910390a17f8f596a35f0cdefc7e1e1e80e73eced8bfdb8ca9e519ca4042ad0963f19bc239e600a546040516114b59190615aff565b60405180910390a15050565b60006005600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001549050600082600001819055506000826001018190555061159483826003878154811061154457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff16843373ffffffffffffffffffffffffffffffffffffffff167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b846040516115f29190615aff565b60405180910390a450505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561168457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161163a575b5050505050905090565b611696613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a9061596d565b60405180910390fd5b858590508888905014801561173d57508383905086869050145b801561174e57508181905084849050145b61178d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117849061598d565b60405180910390fd5b611795613016565b600088889050905060005b81811015611823576118188a8a838181106117b757fe5b905060200201358989848181106117ca57fe5b905060200201358888858181106117dd57fe5b90506020020160208101906117f291906148dc565b8787868181106117fe57fe5b9050602002016020810190611813919061480f565b613ce4565b8060010190506117a0565b50505050505050505050565b611837613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb9061596d565b60405180910390fd5b600160149054906101000a900460ff1615611914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190b906159ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d906158ed565b60405180910390fd5b6000600382815481106119b557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a1d9190615613565b60206040518083038186803b158015611a3557600080fd5b505afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d919061492e565b90508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611acc9291906156d4565b602060405180830381600087803b158015611ae657600080fd5b505af1158015611afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1e9190614838565b506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce5494bb846040518263ffffffff1660e01b8152600401611b7c919061575c565b602060405180830381600087803b158015611b9657600080fd5b505af1158015611baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bce919061488a565b90508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c099190615613565b60206040518083038186803b158015611c2157600080fd5b505afa158015611c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c59919061492e565b8214611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c919061588d565b60405180910390fd5b8060038581548110611ca857fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd5837b673ffaac69230366d3f7eb7cb2ba2b9fd8f2d4e9d0f5e92d3756b1d54684604051611d1f9190615aff565b60405180910390a150505050565b611d35613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db99061596d565b60405180910390fd5b60008111611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90615a8d565b60405180910390fd5b611e0d613016565b6000611e2442600a5461397e90919063ffffffff16565b90506000611e3d600954836138a490919063ffffffff16565b9050611e528342613b5290919063ffffffff16565b600a81905550611e6d42600a5461397e90919063ffffffff16565b8181611e7557fe5b046009819055507fde89cb17ac7f58f94792b3e91e086ed85403819c24ceea882491f960ccb1a278600954604051611ead9190615aff565b60405180910390a17f8f596a35f0cdefc7e1e1e80e73eced8bfdb8ca9e519ca4042ad0963f19bc239e600a54604051611ee69190615aff565b60405180910390a1505050565b611efb6143d2565b60028281548110611f0857fe5b906000526020600020016040518060600160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050806020015167ffffffffffffffff1642111561231457600060038381548110611ff257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120559190615613565b60206040518083038186803b15801561206d57600080fd5b505afa158015612081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a5919061492e565b905060008111156121ee576000600a5442111561210357826020015167ffffffffffffffff16600a54116120da5760006120fe565b6120fd836020015167ffffffffffffffff16600a5461397e90919063ffffffff16565b5b612125565b612124836020015167ffffffffffffffff164261397e90919063ffffffff16565b5b90506000600854612161856040015167ffffffffffffffff16612153600954866138a490919063ffffffff16565b6138a490919063ffffffff16565b8161216857fe5b0490506121bc6121978461218a64e8d4a51000856138a490919063ffffffff16565b8161219157fe5b04613e89565b85600001516fffffffffffffffffffffffffffffffff16613f0890919063ffffffff16565b84600001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff168152505050505b6121f742613f7c565b826020019067ffffffffffffffff16908167ffffffffffffffff1681525050816002848154811061222457fe5b9060005260206000200160008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050827fb22162dac390356a083e49a03154a93d123f935f80aac3763ba0fa470c8fbe5e836020015183856000015160405161230a93929190615c65565b60405180910390a2505b919050565b600082829050905060005b818110156123535761234784848381811061233b57fe5b90506020020135611ef3565b50806001019050612324565b50505050565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015612459578382906000526020600020016040518060600160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250508152602001906001019061237d565b50505050905090565b61246a613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ee9061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600381815481106125c257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6125f9613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d9061596d565b60405180910390fd5b83839050868690501480156126a057508181905084849050145b6126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d69061598d565b60405180910390fd5b6126e7613016565b600086869050905060005b818110156127625761275788888381811061270957fe5b9050602002013587878481811061271c57fe5b90506020020160208101906127319190614861565b86868581811061273d57fe5b905060200201602081019061275291906148dc565b613ff3565b8060010190506126f2565b5050505050505050565b60066020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6127e36143d2565b6127ec84611ef3565b905060006005600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050612859848260000154613b5290919063ffffffff16565b81600001819055506128ae64e8d4a5100061289384600001516fffffffffffffffffffffffffffffffff16876138a490919063ffffffff16565b8161289a57fe5b04826001015461435a90919063ffffffff16565b81600101819055506000600486815481106128c557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461299f578073ffffffffffffffffffffffffffffffffffffffff166344af0fa7878687600087600001546040518663ffffffff1660e01b815260040161296c959493929190615bc0565b600060405180830381600087803b15801561298657600080fd5b505af115801561299a573d6000803e3d6000fd5b505050505b612a0333308760038a815481106129b257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613ba2909392919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff16863373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b4788604051612a619190615aff565b60405180910390a4505050505050565b60095481565b60008211612aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab19061584d565b60405180910390fd5b6000612ad1836009546138a490919063ffffffff16565b905081811115612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d906158ad565b60405180910390fd5b612b2b83600a54613b5290919063ffffffff16565b600a81905550612b7e3330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16613ba2909392919063ffffffff16565b7f8f596a35f0cdefc7e1e1e80e73eced8bfdb8ca9e519ca4042ad0963f19bc239e600a54604051612baf9190615aff565b60405180910390a1505050565b6005602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b6000612bf76143d2565b60028481548110612c0457fe5b906000526020600020016040518060600160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016000820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050905060006005600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600082600001516fffffffffffffffffffffffffffffffff169050600060038781548110612d4757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612daa9190615613565b60206040518083038186803b158015612dc257600080fd5b505afa158015612dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dfa919061492e565b9050836020015167ffffffffffffffff1642118015612e1a575060008114155b15612f12576000600a54421115612e7257846020015167ffffffffffffffff16600a5411612e49576000612e6d565b612e6c856020015167ffffffffffffffff16600a5461397e90919063ffffffff16565b5b612e94565b612e93856020015167ffffffffffffffff164261397e90919063ffffffff16565b5b90506000600854612ed0876040015167ffffffffffffffff16612ec2600954866138a490919063ffffffff16565b6138a490919063ffffffff16565b81612ed757fe5b049050612f0d83612ef664e8d4a51000846138a490919063ffffffff16565b81612efd57fe5b0485613b5290919063ffffffff16565b935050505b612f55612f50846001015464e8d4a51000612f3a8688600001546138a490919063ffffffff16565b81612f4157fe5b0461390690919063ffffffff16565b613b05565b94505050505092915050565b612f69613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fed9061596d565b60405180910390fd5b612ffe613016565b61300a84848484613ce4565b50505050565b600a5481565b6000600280549050905060005b818110156130405761303481611ef3565b50806001019050613023565b5050565b6004818154811061305157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6130ac6143d2565b6130b584611ef3565b905060006005600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600064e8d4a5100061314084600001516fffffffffffffffffffffffffffffffff1684600001546138a490919063ffffffff16565b8161314757fe5b049050600061316b61316684600101548461390690919063ffffffff16565b613b05565b90506131b664e8d4a5100061319f86600001516fffffffffffffffffffffffffffffffff16896138a490919063ffffffff16565b816131a657fe5b048361390690919063ffffffff16565b83600101819055506131d586846000015461397e90919063ffffffff16565b836000018190555061322885827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b60006004888154811061323757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613310578073ffffffffffffffffffffffffffffffffffffffff166344af0fa78933898689600001546040518663ffffffff1660e01b81526004016132dd959493929190615b6d565b600060405180830381600087803b1580156132f757600080fd5b505af115801561330b573d6000803e3d6000fd5b505050505b613372868860038b8154811061332257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166139ce9092919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff16883373ffffffffffffffffffffffffffffffffffffffff167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a6040516133d09190615aff565b60405180910390a4873373ffffffffffffffffffffffffffffffffffffffff167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249548460405161341f9190615aff565b60405180910390a35050505050505050565b613439613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134bd9061596d565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f423b2da7eebe1997af6d3d8f0c00fd04de1d323a87cd69152dad613731eb23258160405161354d9190615613565b60405180910390a150565b613560613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146135ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e49061596d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561365d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136549061586d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613722613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146137af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a69061596d565b60405180910390fd5b6137b7613016565b6137c2838383613ff3565b505050565b6137cf613cdc565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461385c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138539061596d565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507ff460fd6afbbd82e0c22f24030b32f63befe14935b39a79bb3520220b21a0ed9460405160405180910390a1565b6000808214806138c157508282838502925082816138be57fe5b04145b613900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f790615a6d565b60405180910390fd5b92915050565b60008082840390506000831215801561391f5750838113155b80613935575060008312801561393457508381135b5b613974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161396b90615a0d565b60405180910390fd5b8091505092915050565b60008282840391508111156139c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139bf906157ad565b60405180910390fd5b92915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613a019291906156d4565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613a4f91906155fc565b6000604051808303816000865af19150503d8060008114613a8c576040519150601f19603f3d011682016040523d82523d6000602084013e613a91565b606091505b5091509150818015613abf5750600081511480613abe575080806020019051810190613abd9190614838565b5b5b613afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af59061582d565b60405180910390fd5b5050505050565b600080821215613b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b41906157cd565b60405180910390fd5b819050919050565b6000818284019150811015613b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b939061594d565b60405180910390fd5b92915050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401613bd79392919061569d565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613c2591906155fc565b6000604051808303816000865af19150503d8060008114613c62576040519150601f19603f3d011682016040523d82523d6000602084013e613c67565b606091505b5091509150818015613c955750600081511480613c94575080806020019051810190613c939190614838565b5b5b613cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ccb90615a2d565b60405180910390fd5b505050505050565b600033905090565b613d4383613d3560028781548110613cf857fe5b9060005260206000200160000160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1660085461397e90919063ffffffff16565b613b5290919063ffffffff16565b600881905550613d5283613f7c565b60028581548110613d5f57fe5b9060005260206000200160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508015613def578160048581548110613da657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80613e315760048481548110613e0157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613e33565b815b73ffffffffffffffffffffffffffffffffffffffff16847f5766994790e89c27d9799092c4a6b179974a5b61a62663156d03d799cc8c01b88584604051613e7b929190615c13565b60405180910390a350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff16821115613f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ef79061592d565b60405180910390fd5b819050919050565b6000816fffffffffffffffffffffffffffffffff168284019150816fffffffffffffffffffffffffffffffff161015613f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f6d9061594d565b60405180910390fd5b92915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff16821115613feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fe2906159cd565b60405180910390fd5b819050919050565b60001515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514614086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161407d906159ad565b60405180910390fd5b61409b83600854613b5290919063ffffffff16565b6008819055506003829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002604051806060016040528060006fffffffffffffffffffffffffffffffff16815260200161419642613f7c565b67ffffffffffffffff1681526020016141ae86613f7c565b67ffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1661431e600160038054905061397e90919063ffffffff16565b7fe72dff05c5a9817b99753fffdec6b7800cc743c2f4b1fbc3eeb93983712a2a468660405161434d9190615aff565b60405180910390a4505050565b6000808284019050600083121580156143735750838112155b80614389575060008312801561438857508381125b5b6143c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143bf906158cd565b60405180910390fd5b8091505092915050565b604051806060016040528060006fffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b60008135905061442881615efd565b92915050565b60008083601f84011261444057600080fd5b8235905067ffffffffffffffff81111561445957600080fd5b60208301915083602082028301111561447157600080fd5b9250929050565b60008083601f84011261448a57600080fd5b8235905067ffffffffffffffff8111156144a357600080fd5b6020830191508360208202830111156144bb57600080fd5b9250929050565b60008083601f8401126144d457600080fd5b8235905067ffffffffffffffff8111156144ed57600080fd5b60208301915083602082028301111561450557600080fd5b9250929050565b60008083601f84011261451e57600080fd5b8235905067ffffffffffffffff81111561453757600080fd5b60208301915083602082028301111561454f57600080fd5b9250929050565b60008135905061456581615f14565b92915050565b60008151905061457a81615f14565b92915050565b60008135905061458f81615f2b565b92915050565b6000813590506145a481615f42565b92915050565b6000815190506145b981615f42565b92915050565b6000813590506145ce81615f59565b92915050565b6000813590506145e381615f70565b92915050565b6000813590506145f881615f87565b92915050565b60008151905061460d81615f87565b92915050565b60008135905061462281615f9e565b92915050565b60006020828403121561463a57600080fd5b600061464884828501614419565b91505092915050565b6000806020838503121561466457600080fd5b600083013567ffffffffffffffff81111561467e57600080fd5b61468a8582860161450c565b92509250509250929050565b600080600080600080606087890312156146af57600080fd5b600087013567ffffffffffffffff8111156146c957600080fd5b6146d589828a0161450c565b9650965050602087013567ffffffffffffffff8111156146f457600080fd5b61470089828a01614478565b9450945050604087013567ffffffffffffffff81111561471f57600080fd5b61472b89828a016144c2565b92509250509295509295509295565b6000806000806000806000806080898b03121561475657600080fd5b600089013567ffffffffffffffff81111561477057600080fd5b61477c8b828c0161450c565b9850985050602089013567ffffffffffffffff81111561479b57600080fd5b6147a78b828c0161450c565b9650965050604089013567ffffffffffffffff8111156147c657600080fd5b6147d28b828c016144c2565b9450945050606089013567ffffffffffffffff8111156147f157600080fd5b6147fd8b828c0161442e565b92509250509295985092959890939650565b60006020828403121561482157600080fd5b600061482f84828501614556565b91505092915050565b60006020828403121561484a57600080fd5b60006148588482850161456b565b91505092915050565b60006020828403121561487357600080fd5b600061488184828501614595565b91505092915050565b60006020828403121561489c57600080fd5b60006148aa848285016145aa565b91505092915050565b6000602082840312156148c557600080fd5b60006148d3848285016145bf565b91505092915050565b6000602082840312156148ee57600080fd5b60006148fc848285016145d4565b91505092915050565b60006020828403121561491757600080fd5b6000614925848285016145e9565b91505092915050565b60006020828403121561494057600080fd5b600061494e848285016145fe565b91505092915050565b6000806040838503121561496a57600080fd5b6000614978858286016145e9565b925050602061498985828601614419565b9150509250929050565b6000806000606084860312156149a857600080fd5b60006149b6868287016145e9565b93505060206149c786828701614595565b92505060406149d8868287016145d4565b9150509250925092565b600080604083850312156149f557600080fd5b6000614a03858286016145e9565b9250506020614a14858286016145e9565b9150509250929050565b600080600060608486031215614a3357600080fd5b6000614a41868287016145e9565b9350506020614a52868287016145e9565b9250506040614a6386828701614419565b9150509250925092565b600080600080600080600060e0888a031215614a8857600080fd5b6000614a968a828b016145e9565b9750506020614aa78a828b016145e9565b9650506040614ab88a828b01614419565b9550506060614ac98a828b016145e9565b9450506080614ada8a828b01614613565b93505060a0614aeb8a828b01614580565b92505060c0614afc8a828b01614580565b91505092959891949750929550565b60008060008060808587031215614b2157600080fd5b6000614b2f878288016145e9565b9450506020614b40878288016145e9565b9350506040614b51878288016145d4565b9250506060614b6287828801614556565b91505092959194509250565b6000614b7a8383614cc7565b60208301905092915050565b6000614b92838361550f565b60608301905092915050565b614ba781615e04565b82525050565b614bb681615d35565b82525050565b6000614bc782615cbc565b614bd18185615cf7565b9350614bdc83615c9c565b8060005b83811015614c0d578151614bf48882614b6e565b9750614bff83615cdd565b925050600181019050614be0565b5085935050505092915050565b6000614c2582615cc7565b614c2f8185615d08565b9350614c3a83615cac565b8060005b83811015614c6b578151614c528882614b86565b9750614c5d83615cea565b925050600181019050614c3e565b5085935050505092915050565b614c8181615d47565b82525050565b614c9081615d53565b82525050565b6000614ca182615cd2565b614cab8185615d19565b9350614cbb818560208601615eca565b80840191505092915050565b614cd081615e16565b82525050565b614cdf81615e16565b82525050565b614cee81615e3a565b82525050565b614cfd81615e5e565b82525050565b614d0c81615d93565b82525050565b614d1b81615e82565b82525050565b6000614d2e601583615d24565b91507f426f72696e674d6174683a20556e646572666c6f7700000000000000000000006000830152602082019050919050565b6000614d6e600b83615d24565b91507f496e7465676572203c20300000000000000000000000000000000000000000006000830152602082019050919050565b6000614dae602283615d24565b91507f4d696e694368656656323a2066756e64696e672063616e6e6f74206265207a6560008301527f726f0000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614e14602883615d24565b91507f4d696e694368656656323a20696e73756666696369656e7420657874656e736960008301527f6f6e206c696d69740000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614e7a601c83615d24565b91507f426f72696e6745524332303a205472616e73666572206661696c6564000000006000830152602082019050919050565b6000614eba602d83615d24565b91507f4d696e694368656656323a20657874656e73696f6e206475726174696f6e206360008301527f616e6e6f74206265207a65726f000000000000000000000000000000000000006020830152604082019050919050565b6000614f20602683615d24565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f86602783615d24565b91507f4d696e694368656656323a206d696772617465642062616c616e6365206d757360008301527f74206d61746368000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614fec602683615d24565b91507f4d696e694368656656323a20696e73756666696369656e742066756e64696e6760008301527f206c696d697400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615052602183615d24565b91507f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006150b8601b83615d24565b91507f4d696e694368656656323a206e6f206d69677261746f722073657400000000006000830152602082019050919050565b60006150f8602983615d24565b91507f4d696e694368656656323a2066756e64696e6720616d6f756e742063616e6e6f60008301527f74206265207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b600061515e601c83615d24565b91507f426f72696e674d6174683a2075696e74313238204f766572666c6f77000000006000830152602082019050919050565b600061519e601883615d24565b91507f426f72696e674d6174683a20416464204f766572666c6f7700000000000000006000830152602082019050919050565b60006151de602083615d24565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061521e602583615d24565b91507f4d696e694368656656323a20696e76616c696420706172616d65746572206c6560008301527f6e677468730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615284601383615d24565b91507f546f6b656e20616c7265616479206164646564000000000000000000000000006000830152602082019050919050565b60006152c4601b83615d24565b91507f426f72696e674d6174683a2075696e743634204f766572666c6f7700000000006000830152602082019050919050565b6000615304602783615d24565b91507f4d696e694368656656323a206d6967726174696f6e20686173206265656e206460008301527f697361626c6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061536a602483615d24565b91507f5369676e6564536166654d6174683a207375627472616374696f6e206f76657260008301527f666c6f77000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006153d0602083615d24565b91507f426f72696e6745524332303a205472616e7366657246726f6d206661696c65646000830152602082019050919050565b6000615410602283615d24565b91507f4d696e694368656656323a2063616c6c6572206973206e6f7420612066756e6460008301527f65720000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615476601883615d24565b91507f426f72696e674d6174683a204d756c204f766572666c6f7700000000000000006000830152602082019050919050565b60006154b6602a83615d24565b91507f4d696e694368656656323a20726577617264206475726174696f6e2063616e6e60008301527f6f74206265207a65726f000000000000000000000000000000000000000000006020830152604082019050919050565b6060820160008201516155256000850182615593565b50602082015161553860208501826155cf565b50604082015161554b60408501826155cf565b50505050565b6060820160008201516155676000850182615593565b50602082015161557a60208501826155cf565b50604082015161558d60408501826155cf565b50505050565b61559c81615d9d565b82525050565b6155ab81615d9d565b82525050565b6155ba81615e94565b82525050565b6155c981615dd9565b82525050565b6155d881615de3565b82525050565b6155e781615de3565b82525050565b6155f681615df7565b82525050565b60006156088284614c96565b915081905092915050565b60006020820190506156286000830184614bad565b92915050565b600060e082019050615643600083018a614b9e565b6156506020830189614bad565b61565d60408301886155c0565b61566a60608301876155c0565b61567760808301866155ed565b61568460a0830185614c87565b61569160c0830184614c87565b98975050505050505050565b60006060820190506156b26000830186614bad565b6156bf6020830185614bad565b6156cc60408301846155c0565b949350505050565b60006040820190506156e96000830185614bad565b6156f660208301846155c0565b9392505050565b600060208201905081810360008301526157178184614bbc565b905092915050565b600060208201905081810360008301526157398184614c1a565b905092915050565b60006020820190506157566000830184614c78565b92915050565b60006020820190506157716000830184614cd6565b92915050565b600060208201905061578c6000830184614ce5565b92915050565b60006020820190506157a76000830184614cf4565b92915050565b600060208201905081810360008301526157c681614d21565b9050919050565b600060208201905081810360008301526157e681614d61565b9050919050565b6000602082019050818103600083015261580681614da1565b9050919050565b6000602082019050818103600083015261582681614e07565b9050919050565b6000602082019050818103600083015261584681614e6d565b9050919050565b6000602082019050818103600083015261586681614ead565b9050919050565b6000602082019050818103600083015261588681614f13565b9050919050565b600060208201905081810360008301526158a681614f79565b9050919050565b600060208201905081810360008301526158c681614fdf565b9050919050565b600060208201905081810360008301526158e681615045565b9050919050565b60006020820190508181036000830152615906816150ab565b9050919050565b60006020820190508181036000830152615926816150eb565b9050919050565b6000602082019050818103600083015261594681615151565b9050919050565b6000602082019050818103600083015261596681615191565b9050919050565b60006020820190508181036000830152615986816151d1565b9050919050565b600060208201905081810360008301526159a681615211565b9050919050565b600060208201905081810360008301526159c681615277565b9050919050565b600060208201905081810360008301526159e6816152b7565b9050919050565b60006020820190508181036000830152615a06816152f7565b9050919050565b60006020820190508181036000830152615a268161535d565b9050919050565b60006020820190508181036000830152615a46816153c3565b9050919050565b60006020820190508181036000830152615a6681615403565b9050919050565b60006020820190508181036000830152615a8681615469565b9050919050565b60006020820190508181036000830152615aa6816154a9565b9050919050565b6000606082019050615ac26000830184615551565b92915050565b6000606082019050615add60008301866155a2565b615aea60208301856155de565b615af760408301846155de565b949350505050565b6000602082019050615b1460008301846155c0565b92915050565b600060a082019050615b2f60008301886155c0565b615b3c6020830187614b9e565b615b496040830186614bad565b615b566060830185614d12565b615b6360808301846155c0565b9695505050505050565b600060a082019050615b8260008301886155c0565b615b8f6020830187614b9e565b615b9c6040830186614bad565b615ba960608301856155c0565b615bb660808301846155c0565b9695505050505050565b600060a082019050615bd560008301886155c0565b615be26020830187614bad565b615bef6040830186614bad565b615bfc6060830185614d12565b615c0960808301846155c0565b9695505050505050565b6000604082019050615c2860008301856155c0565b615c356020830184614c78565b9392505050565b6000604082019050615c5160008301856155c0565b615c5e6020830184614d03565b9392505050565b6000606082019050615c7a60008301866155de565b615c8760208301856155c0565b615c9460408301846155b1565b949350505050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615d4082615db9565b9050919050565b60008115159050919050565b6000819050919050565b6000615d6882615d35565b9050919050565b6000615d7a82615d35565b9050919050565b6000615d8c82615d35565b9050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b6000615e0f82615ea6565b9050919050565b6000615e2182615e28565b9050919050565b6000615e3382615db9565b9050919050565b6000615e4582615e4c565b9050919050565b6000615e5782615db9565b9050919050565b6000615e6982615e70565b9050919050565b6000615e7b82615db9565b9050919050565b6000615e8d82615dd9565b9050919050565b6000615e9f82615d9d565b9050919050565b6000615eb182615eb8565b9050919050565b6000615ec382615db9565b9050919050565b60005b83811015615ee8578082015181840152602081019050615ecd565b83811115615ef7576000848401525b50505050565b615f0681615d35565b8114615f1157600080fd5b50565b615f1d81615d47565b8114615f2857600080fd5b50565b615f3481615d53565b8114615f3f57600080fd5b50565b615f4b81615d5d565b8114615f5657600080fd5b50565b615f6281615d6f565b8114615f6d57600080fd5b50565b615f7981615d81565b8114615f8457600080fd5b50565b615f9081615dd9565b8114615f9b57600080fd5b50565b615fa781615df7565b8114615fb257600080fd5b5056fea26469706673582212207e126b0ffefe9fa82508c02f85d6626154c2099bd7776e21990ddee978477ed564736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x253 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x146 JUMPI DUP1 PUSH4 0x98969E82 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xCAB34C08 GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xCAB34C08 EQ PUSH2 0x6BD JUMPI DUP1 PUSH4 0xD1ABB907 EQ PUSH2 0x6DB JUMPI DUP1 PUSH4 0xDCD18DD4 EQ PUSH2 0x6F7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x713 JUMPI DUP1 PUSH4 0xF624D2C5 EQ PUSH2 0x72F JUMPI DUP1 PUSH4 0xF6D676BE EQ PUSH2 0x74B JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x98969E82 EQ PUSH2 0x619 JUMPI DUP1 PUSH4 0xB763E7C4 EQ PUSH2 0x649 JUMPI DUP1 PUSH4 0xB76F4AEB EQ PUSH2 0x665 JUMPI DUP1 PUSH4 0xC1BCB493 EQ PUSH2 0x683 JUMPI DUP1 PUSH4 0xC346253D EQ PUSH2 0x68D JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x10A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x574 JUMPI DUP1 PUSH4 0x8DBDBE6D EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0x8F10369A EQ PUSH2 0x5AE JUMPI DUP1 PUSH4 0x933F084F EQ PUSH2 0x5CC JUMPI DUP1 PUSH4 0x93F1A40B EQ PUSH2 0x5E8 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0x78ED5D1F EQ PUSH2 0x4DA JUMPI DUP1 PUSH4 0x7973AA7B EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x79D12FFB EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0x7CD07E47 EQ PUSH2 0x556 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 GT PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x454B0608 GT PUSH2 0x198 JUMPI DUP1 PUSH4 0x454B0608 EQ PUSH2 0x42E JUMPI DUP1 PUSH4 0x4B87E90F EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x51EB05A6 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x57A5B58C EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x61F8E66F EQ PUSH2 0x4B2 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x23CF3118 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x28662551 EQ PUSH2 0x3BC JUMPI DUP1 PUSH4 0x2F940C70 EQ PUSH2 0x3D8 JUMPI DUP1 PUSH4 0x34C0B46B EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0x3EF6DB91 EQ PUSH2 0x412 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x18FCCC76 GT PUSH2 0x21B JUMPI DUP1 PUSH4 0x18FCCC76 EQ PUSH2 0x300 JUMPI DUP1 PUSH4 0x19610B2B EQ PUSH2 0x31C JUMPI DUP1 PUSH4 0x1BBE9D8C EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x1EA48870 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x2273EE6E EQ PUSH2 0x384 JUMPI PUSH2 0x253 JUMP JUMPDEST DUP1 PUSH4 0x81E3EDA EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0xAD58D2F EQ PUSH2 0x276 JUMPI DUP1 PUSH4 0xC812AF3 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0x1526FE27 EQ PUSH2 0x2B0 JUMPI DUP1 PUSH4 0x17CAF6F1 EQ PUSH2 0x2E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x260 PUSH2 0x755 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26D SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x28B SWAP2 SWAP1 PUSH2 0x4A1E JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29A PUSH2 0x9F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x5741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C5 SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5AC8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2EA PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F7 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x315 SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x336 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x331 SWAP2 SWAP1 PUSH2 0x49E2 JUMP JUMPDEST PUSH2 0xCEC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x352 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x34D SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0xE28 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x36E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x369 SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0xF4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37B SWAP2 SWAP1 PUSH2 0x5741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x399 SWAP2 SWAP1 PUSH2 0x4A6D JUMP JUMPDEST PUSH2 0xFA5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3BA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3B5 SWAP2 SWAP1 PUSH2 0x48B3 JUMP JUMPDEST PUSH2 0x1067 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3D6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3D1 SWAP2 SWAP1 PUSH2 0x49E2 JUMP JUMPDEST PUSH2 0x11C7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3ED SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0x14C1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3FC PUSH2 0x1600 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x409 SWAP2 SWAP1 PUSH2 0x56FD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x42C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x427 SWAP2 SWAP1 PUSH2 0x473A JUMP JUMPDEST PUSH2 0x168E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x448 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x443 SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x182F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x464 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45F SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x1D2D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x480 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x47B SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x1EF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x48D SWAP2 SWAP1 PUSH2 0x5AAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4AB SWAP2 SWAP1 PUSH2 0x4651 JUMP JUMPDEST PUSH2 0x2319 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4BA PUSH2 0x2359 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4C7 SWAP2 SWAP1 PUSH2 0x571F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4D8 PUSH2 0x2462 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4EF SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x25B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x501 SWAP2 SWAP1 PUSH2 0x575C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x524 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x51F SWAP2 SWAP1 PUSH2 0x4696 JUMP JUMPDEST PUSH2 0x25F1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x540 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x53B SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0x276C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x5741 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x55E PUSH2 0x278C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x56B SWAP2 SWAP1 PUSH2 0x5777 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x57C PUSH2 0x27B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x589 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5A7 SWAP2 SWAP1 PUSH2 0x4A1E JUMP JUMPDEST PUSH2 0x27DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5B6 PUSH2 0x2A71 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C3 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5E1 SWAP2 SWAP1 PUSH2 0x49E2 JUMP JUMPDEST PUSH2 0x2A77 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x602 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5FD SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0x2BBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x610 SWAP3 SWAP2 SWAP1 PUSH2 0x5C3C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x633 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x62E SWAP2 SWAP1 PUSH2 0x4957 JUMP JUMPDEST PUSH2 0x2BED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x640 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x663 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x65E SWAP2 SWAP1 PUSH2 0x4B0B JUMP JUMPDEST PUSH2 0x2F61 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x66D PUSH2 0x3010 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x67A SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x68B PUSH2 0x3016 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6A2 SWAP2 SWAP1 PUSH2 0x4905 JUMP JUMPDEST PUSH2 0x3044 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6B4 SWAP2 SWAP1 PUSH2 0x5792 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C5 PUSH2 0x3080 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6D2 SWAP2 SWAP1 PUSH2 0x575C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6F0 SWAP2 SWAP1 PUSH2 0x4A1E JUMP JUMPDEST PUSH2 0x30A4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x711 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x70C SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0x3431 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x72D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x728 SWAP2 SWAP1 PUSH2 0x4628 JUMP JUMPDEST PUSH2 0x3558 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x749 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x744 SWAP2 SWAP1 PUSH2 0x4993 JUMP JUMPDEST PUSH2 0x371A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x753 PUSH2 0x37C7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x76A PUSH2 0x43D2 JUMP JUMPDEST PUSH2 0x773 DUP5 PUSH2 0x1EF3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH2 0x816 PUSH5 0xE8D4A51000 PUSH2 0x7FB DUP5 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x802 JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x835 DUP5 DUP3 PUSH1 0x0 ADD SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x4 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x84C JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x926 JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x44AF0FA7 DUP8 CALLER DUP8 PUSH1 0x0 DUP8 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8F3 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x90D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x921 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x988 DUP5 DUP7 PUSH1 0x3 DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x938 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP9 PUSH1 0x40 MLOAD PUSH2 0x9E6 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xA16 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x0 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x0 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP4 JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xA8E PUSH2 0x43D2 JUMP JUMPDEST PUSH2 0xA97 DUP4 PUSH2 0x1EF3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH5 0xE8D4A51000 PUSH2 0xB22 DUP5 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0xB29 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0xB4D PUSH2 0xB48 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3B05 JUMP JUMPDEST SWAP1 POP DUP2 DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP2 EQ PUSH2 0xBAC JUMPI PUSH2 0xBAB DUP6 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xBBB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC94 JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x44AF0FA7 DUP9 CALLER DUP10 DUP7 DUP10 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC61 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B6D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP7 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0xCDB SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xD2F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD26 SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD DUP4 DUP2 PUSH2 0xD3C JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xD82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD79 SWAP1 PUSH2 0x580D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD97 DUP2 PUSH1 0xA SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH2 0xDEA CALLER ADDRESS DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BA2 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x8F596A35F0CDEFC7E1E1E80E73ECED8BFDB8CA9E519CA4042AD0963F19BC239E PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0xE1B SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0xE30 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xEBD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEB4 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC48D651D88968F843204BAF13AA11CD1A590E611C6DCADC7ED4DAAB1F98462A DUP2 PUSH1 0x40 MLOAD PUSH2 0xF44 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD505ACCF CALLER ADDRESS DUP10 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1021 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x562E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x104F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x105E DUP8 DUP8 DUP8 PUSH2 0x27DB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x106F PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10FC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F3 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x114C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1143 SWAP1 PUSH2 0x59ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x3BA4758949FEBC607E14523620298F8B5995B1848492AD7AA083372AC886AE07 DUP2 PUSH1 0x40 MLOAD PUSH2 0x11BC SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x11CF PUSH2 0x27B2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x1258 JUMPI POP PUSH1 0x1 ISZERO ISZERO PUSH1 0x7 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 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ JUMPDEST PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x128E SWAP1 PUSH2 0x5A4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x12DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12D1 SWAP1 PUSH2 0x57ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1327 CALLER ADDRESS DUP5 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BA2 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA SLOAD TIMESTAMP LT PUSH2 0x13A9 JUMPI PUSH1 0x0 DUP2 GT PUSH2 0x1373 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x136A SWAP1 PUSH2 0x5A8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x137B PUSH2 0x3016 JUMP JUMPDEST PUSH2 0x138E DUP2 TIMESTAMP PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP DUP1 DUP3 DUP2 PUSH2 0x139D JUMPI INVALID JUMPDEST DIV PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH2 0x144B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13C0 TIMESTAMP PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13D9 PUSH1 0x9 SLOAD DUP4 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x13F2 DUP5 PUSH1 0xA SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1409 TIMESTAMP DUP4 PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x141C DUP8 DUP6 PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x1423 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x9 SLOAD DUP2 EQ PUSH2 0x1438 JUMPI PUSH2 0x1437 PUSH2 0x3016 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0xA DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x9 DUP2 SWAP1 SSTORE POP POP POP POP POP JUMPDEST PUSH32 0xDE89CB17AC7F58F94792B3E91E086ED85403819C24CEEA882491F960CCB1A278 PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH2 0x147C SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x8F596A35F0CDEFC7E1E1E80E73ECED8BFDB8CA9E519CA4042AD0963F19BC239E PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x14B5 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x1594 DUP4 DUP3 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1544 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2CAC5E20E1541D836381527A43F651851E302817B71DC8E810284E69210C1C6B DUP5 PUSH1 0x40 MLOAD PUSH2 0x15F2 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD DUP1 PUSH1 0x20 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 DUP1 ISZERO PUSH2 0x1684 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x163A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1696 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1723 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x171A SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP6 SWAP1 POP DUP9 DUP9 SWAP1 POP EQ DUP1 ISZERO PUSH2 0x173D JUMPI POP DUP4 DUP4 SWAP1 POP DUP7 DUP7 SWAP1 POP EQ JUMPDEST DUP1 ISZERO PUSH2 0x174E JUMPI POP DUP2 DUP2 SWAP1 POP DUP5 DUP5 SWAP1 POP EQ JUMPDEST PUSH2 0x178D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1784 SWAP1 PUSH2 0x598D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1795 PUSH2 0x3016 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP9 SWAP1 POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1823 JUMPI PUSH2 0x1818 DUP11 DUP11 DUP4 DUP2 DUP2 LT PUSH2 0x17B7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 DUP10 DUP5 DUP2 DUP2 LT PUSH2 0x17CA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x17DD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x17F2 SWAP2 SWAP1 PUSH2 0x48DC JUMP JUMPDEST DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x17FE JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1813 SWAP2 SWAP1 PUSH2 0x480F JUMP JUMPDEST PUSH2 0x3CE4 JUMP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x17A0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1837 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x18C4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x18BB SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1914 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x190B SWAP1 PUSH2 0x59ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x19A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x199D SWAP1 PUSH2 0x58ED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x19B5 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A1D SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A6D SWAP2 SWAP1 PUSH2 0x492E JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1ACC SWAP3 SWAP2 SWAP1 PUSH2 0x56D4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B1E SWAP2 SWAP1 PUSH2 0x4838 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCE5494BB DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B7C SWAP2 SWAP1 PUSH2 0x575C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BAA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BCE SWAP2 SWAP1 PUSH2 0x488A JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C09 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C59 SWAP2 SWAP1 PUSH2 0x492E JUMP JUMPDEST DUP3 EQ PUSH2 0x1C9A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C91 SWAP1 PUSH2 0x588D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1CA8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xD5837B673FFAAC69230366D3F7EB7CB2BA2B9FD8F2D4E9D0F5E92D3756B1D546 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1D1F SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x1D35 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1DC2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DB9 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x1E05 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DFC SWAP1 PUSH2 0x5A8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E0D PUSH2 0x3016 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E24 TIMESTAMP PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E3D PUSH1 0x9 SLOAD DUP4 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1E52 DUP4 TIMESTAMP PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH2 0x1E6D TIMESTAMP PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 DUP2 PUSH2 0x1E75 JUMPI INVALID JUMPDEST DIV PUSH1 0x9 DUP2 SWAP1 SSTORE POP PUSH32 0xDE89CB17AC7F58F94792B3E91E086ED85403819C24CEEA882491F960CCB1A278 PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD PUSH2 0x1EAD SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x8F596A35F0CDEFC7E1E1E80E73ECED8BFDB8CA9E519CA4042AD0963F19BC239E PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x1EE6 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH2 0x1EFB PUSH2 0x43D2 JUMP JUMPDEST PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1F08 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP GT ISZERO PUSH2 0x2314 JUMPI PUSH1 0x0 PUSH1 0x3 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1FF2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2055 SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2081 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20A5 SWAP2 SWAP1 PUSH2 0x492E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x21EE JUMPI PUSH1 0x0 PUSH1 0xA SLOAD TIMESTAMP GT ISZERO PUSH2 0x2103 JUMPI DUP3 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA SLOAD GT PUSH2 0x20DA JUMPI PUSH1 0x0 PUSH2 0x20FE JUMP JUMPDEST PUSH2 0x20FD DUP4 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST PUSH2 0x2125 JUMP JUMPDEST PUSH2 0x2124 DUP4 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 SLOAD PUSH2 0x2161 DUP6 PUSH1 0x40 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2153 PUSH1 0x9 SLOAD DUP7 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2168 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x21BC PUSH2 0x2197 DUP5 PUSH2 0x218A PUSH5 0xE8D4A51000 DUP6 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2191 JUMPI INVALID JUMPDEST DIV PUSH2 0x3E89 JUMP JUMPDEST DUP6 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3F08 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP5 PUSH1 0x0 ADD SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP POP POP JUMPDEST PUSH2 0x21F7 TIMESTAMP PUSH2 0x3F7C JUMP JUMPDEST DUP3 PUSH1 0x20 ADD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 PUSH1 0x2 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2224 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP DUP3 PUSH32 0xB22162DAC390356A083E49A03154A93D123F935F80AAC3763BA0FA470C8FBE5E DUP4 PUSH1 0x20 ADD MLOAD DUP4 DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x230A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5C65 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SWAP1 POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2353 JUMPI PUSH2 0x2347 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x233B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH2 0x1EF3 JUMP JUMPDEST POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x2324 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2459 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x237D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x246A PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x24F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24EE SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x3 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x25C2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x25F9 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2686 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x267D SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP4 SWAP1 POP DUP7 DUP7 SWAP1 POP EQ DUP1 ISZERO PUSH2 0x26A0 JUMPI POP DUP2 DUP2 SWAP1 POP DUP5 DUP5 SWAP1 POP EQ JUMPDEST PUSH2 0x26DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26D6 SWAP1 PUSH2 0x598D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x26E7 PUSH2 0x3016 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP7 SWAP1 POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2762 JUMPI PUSH2 0x2757 DUP9 DUP9 DUP4 DUP2 DUP2 LT PUSH2 0x2709 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x271C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2731 SWAP2 SWAP1 PUSH2 0x4861 JUMP JUMPDEST DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x273D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2752 SWAP2 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x3FF3 JUMP JUMPDEST DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x26F2 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x27E3 PUSH2 0x43D2 JUMP JUMPDEST PUSH2 0x27EC DUP5 PUSH2 0x1EF3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH2 0x2859 DUP5 DUP3 PUSH1 0x0 ADD SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x28AE PUSH5 0xE8D4A51000 PUSH2 0x2893 DUP5 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x289A JUMPI INVALID JUMPDEST DIV DUP3 PUSH1 0x1 ADD SLOAD PUSH2 0x435A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x4 DUP7 DUP2 SLOAD DUP2 LT PUSH2 0x28C5 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x299F JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x44AF0FA7 DUP8 DUP7 DUP8 PUSH1 0x0 DUP8 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x296C SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5BC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x299A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2A03 CALLER ADDRESS DUP8 PUSH1 0x3 DUP11 DUP2 SLOAD DUP2 LT PUSH2 0x29B2 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BA2 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2D7E648DD130FC184D383E55BB126AC4C9C60E8F94BF05ACDF557BA2D540B47 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2A61 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x2ABA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AB1 SWAP1 PUSH2 0x584D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2AD1 DUP4 PUSH1 0x9 SLOAD PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x2B16 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B0D SWAP1 PUSH2 0x58AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2B2B DUP4 PUSH1 0xA SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH2 0x2B7E CALLER ADDRESS DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3BA2 SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x8F596A35F0CDEFC7E1E1E80E73ECED8BFDB8CA9E519CA4042AD0963F19BC239E PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x2BAF SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP2 POP POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BF7 PUSH2 0x43D2 JUMP JUMPDEST PUSH1 0x2 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x2C04 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x10 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP7 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 SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x3 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x2D47 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2DAA SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DFA SWAP2 SWAP1 PUSH2 0x492E JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP GT DUP1 ISZERO PUSH2 0x2E1A JUMPI POP PUSH1 0x0 DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0x2F12 JUMPI PUSH1 0x0 PUSH1 0xA SLOAD TIMESTAMP GT ISZERO PUSH2 0x2E72 JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA SLOAD GT PUSH2 0x2E49 JUMPI PUSH1 0x0 PUSH2 0x2E6D JUMP JUMPDEST PUSH2 0x2E6C DUP6 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0xA SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST PUSH2 0x2E94 JUMP JUMPDEST PUSH2 0x2E93 DUP6 PUSH1 0x20 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 SLOAD PUSH2 0x2ED0 DUP8 PUSH1 0x40 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2EC2 PUSH1 0x9 SLOAD DUP7 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2ED7 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2F0D DUP4 PUSH2 0x2EF6 PUSH5 0xE8D4A51000 DUP5 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2EFD JUMPI INVALID JUMPDEST DIV DUP6 PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x2F55 PUSH2 0x2F50 DUP5 PUSH1 0x1 ADD SLOAD PUSH5 0xE8D4A51000 PUSH2 0x2F3A DUP7 DUP9 PUSH1 0x0 ADD SLOAD PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2F41 JUMPI INVALID JUMPDEST DIV PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3B05 JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2F69 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FED SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2FFE PUSH2 0x3016 JUMP JUMPDEST PUSH2 0x300A DUP5 DUP5 DUP5 DUP5 PUSH2 0x3CE4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3040 JUMPI PUSH2 0x3034 DUP2 PUSH2 0x1EF3 JUMP JUMPDEST POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x3023 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3051 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x30AC PUSH2 0x43D2 JUMP JUMPDEST PUSH2 0x30B5 DUP5 PUSH2 0x1EF3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH5 0xE8D4A51000 PUSH2 0x3140 DUP5 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x3147 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH2 0x316B PUSH2 0x3166 DUP5 PUSH1 0x1 ADD SLOAD DUP5 PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3B05 JUMP JUMPDEST SWAP1 POP PUSH2 0x31B6 PUSH5 0xE8D4A51000 PUSH2 0x319F DUP7 PUSH1 0x0 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH2 0x38A4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x31A6 JUMPI INVALID JUMPDEST DIV DUP4 PUSH2 0x3906 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x31D5 DUP7 DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x3228 DUP6 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 DUP9 DUP2 SLOAD DUP2 LT PUSH2 0x3237 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3310 JUMPI DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x44AF0FA7 DUP10 CALLER DUP10 DUP7 DUP10 PUSH1 0x0 ADD SLOAD PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32DD SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5B6D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x3372 DUP7 DUP9 PUSH1 0x3 DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x3322 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x39CE SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8166BF25F8A2B7ED3C85049207DA4358D16EDBED977D23FA2EE6F0DDE3EC2132 DUP11 PUSH1 0x40 MLOAD PUSH2 0x33D0 SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 DUP8 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x71BAB65CED2E5750775A0613BE067DF48EF06CF92A496EBF7663AE0660924954 DUP5 PUSH1 0x40 MLOAD PUSH2 0x341F SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3439 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x34C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34BD SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x423B2DA7EEBE1997AF6D3D8F0C00FD04DE1D323A87CD69152DAD613731EB2325 DUP2 PUSH1 0x40 MLOAD PUSH2 0x354D SWAP2 SWAP1 PUSH2 0x5613 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x3560 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x35ED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E4 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x365D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3654 SWAP1 PUSH2 0x586D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x3722 PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x37AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37A6 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x37B7 PUSH2 0x3016 JUMP JUMPDEST PUSH2 0x37C2 DUP4 DUP4 DUP4 PUSH2 0x3FF3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x37CF PUSH2 0x3CDC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x385C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3853 SWAP1 PUSH2 0x596D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xF460FD6AFBBD82E0C22F24030B32F63BEFE14935B39A79BB3520220B21A0ED94 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ DUP1 PUSH2 0x38C1 JUMPI POP DUP3 DUP3 DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 PUSH2 0x38BE JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x3900 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x38F7 SWAP1 PUSH2 0x5A6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB SWAP1 POP PUSH1 0x0 DUP4 SLT ISZERO DUP1 ISZERO PUSH2 0x391F JUMPI POP DUP4 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x3935 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x3934 JUMPI POP DUP4 DUP2 SGT JUMPDEST JUMPDEST PUSH2 0x3974 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x396B SWAP1 PUSH2 0x5A0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 DUP5 SUB SWAP2 POP DUP2 GT ISZERO PUSH2 0x39C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39BF SWAP1 PUSH2 0x57AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3A01 SWAP3 SWAP2 SWAP1 PUSH2 0x56D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x3A4F SWAP2 SWAP1 PUSH2 0x55FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3A8C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3A91 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3ABF JUMPI POP PUSH1 0x0 DUP2 MLOAD EQ DUP1 PUSH2 0x3ABE JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3ABD SWAP2 SWAP1 PUSH2 0x4838 JUMP JUMPDEST JUMPDEST JUMPDEST PUSH2 0x3AFE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AF5 SWAP1 PUSH2 0x582D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT ISZERO PUSH2 0x3B4A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B41 SWAP1 PUSH2 0x57CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP3 DUP5 ADD SWAP2 POP DUP2 LT ISZERO PUSH2 0x3B9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3B93 SWAP1 PUSH2 0x594D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3BD7 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x569D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x3C25 SWAP2 SWAP1 PUSH2 0x55FC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C62 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C67 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3C95 JUMPI POP PUSH1 0x0 DUP2 MLOAD EQ DUP1 PUSH2 0x3C94 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3C93 SWAP2 SWAP1 PUSH2 0x4838 JUMP JUMPDEST JUMPDEST JUMPDEST PUSH2 0x3CD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3CCB SWAP1 PUSH2 0x5A2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3D43 DUP4 PUSH2 0x3D35 PUSH1 0x2 DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x3CF8 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x8 SLOAD PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH2 0x3D52 DUP4 PUSH2 0x3F7C JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x3D5F JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0x3DEF JUMPI DUP2 PUSH1 0x4 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x3DA6 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP1 PUSH2 0x3E31 JUMPI PUSH1 0x4 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x3E01 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3E33 JUMP JUMPDEST DUP2 JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH32 0x5766994790E89C27D9799092C4A6B179974A5B61A62663156D03D799CC8C01B8 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x3E7B SWAP3 SWAP2 SWAP1 PUSH2 0x5C13 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 GT ISZERO PUSH2 0x3F00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3EF7 SWAP1 PUSH2 0x592D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3F76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F6D SWAP1 PUSH2 0x594D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 GT ISZERO PUSH2 0x3FEB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3FE2 SWAP1 PUSH2 0x59CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 ISZERO ISZERO PUSH1 0x6 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 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO EQ PUSH2 0x4086 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x407D SWAP1 PUSH2 0x59AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x409B DUP4 PUSH1 0x8 SLOAD PUSH2 0x3B52 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH1 0x3 DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x4 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x4196 TIMESTAMP PUSH2 0x3F7C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x41AE DUP7 PUSH2 0x3F7C JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x10 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x431E PUSH1 0x1 PUSH1 0x3 DUP1 SLOAD SWAP1 POP PUSH2 0x397E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0xE72DFF05C5A9817B99753FFFDEC6B7800CC743C2F4B1FBC3EEB93983712A2A46 DUP7 PUSH1 0x40 MLOAD PUSH2 0x434D SWAP2 SWAP1 PUSH2 0x5AFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP PUSH1 0x0 DUP4 SLT ISZERO DUP1 ISZERO PUSH2 0x4373 JUMPI POP DUP4 DUP2 SLT ISZERO JUMPDEST DUP1 PUSH2 0x4389 JUMPI POP PUSH1 0x0 DUP4 SLT DUP1 ISZERO PUSH2 0x4388 JUMPI POP DUP4 DUP2 SLT JUMPDEST JUMPDEST PUSH2 0x43C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43BF SWAP1 PUSH2 0x58CD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4428 DUP2 PUSH2 0x5EFD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x4440 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x448A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x44A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x44BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x44D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x44ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x4505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x451E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x454F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4565 DUP2 PUSH2 0x5F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x457A DUP2 PUSH2 0x5F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x458F DUP2 PUSH2 0x5F2B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x45A4 DUP2 PUSH2 0x5F42 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x45B9 DUP2 PUSH2 0x5F42 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x45CE DUP2 PUSH2 0x5F59 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x45E3 DUP2 PUSH2 0x5F70 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x45F8 DUP2 PUSH2 0x5F87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x460D DUP2 PUSH2 0x5F87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x4622 DUP2 PUSH2 0x5F9E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x463A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4648 DUP5 DUP3 DUP6 ADD PUSH2 0x4419 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x467E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x468A DUP6 DUP3 DUP7 ADD PUSH2 0x450C JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x46AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x46C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x46D5 DUP10 DUP3 DUP11 ADD PUSH2 0x450C JUMP JUMPDEST SWAP7 POP SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x46F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4700 DUP10 DUP3 DUP11 ADD PUSH2 0x4478 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x471F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x472B DUP10 DUP3 DUP11 ADD PUSH2 0x44C2 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4770 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x477C DUP12 DUP3 DUP13 ADD PUSH2 0x450C JUMP JUMPDEST SWAP9 POP SWAP9 POP POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x479B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47A7 DUP12 DUP3 DUP13 ADD PUSH2 0x450C JUMP JUMPDEST SWAP7 POP SWAP7 POP POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x47C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47D2 DUP12 DUP3 DUP13 ADD PUSH2 0x44C2 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x47F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47FD DUP12 DUP3 DUP13 ADD PUSH2 0x442E JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4821 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x482F DUP5 DUP3 DUP6 ADD PUSH2 0x4556 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x484A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4858 DUP5 DUP3 DUP6 ADD PUSH2 0x456B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4873 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4881 DUP5 DUP3 DUP6 ADD PUSH2 0x4595 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x489C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x48AA DUP5 DUP3 DUP6 ADD PUSH2 0x45AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x48D3 DUP5 DUP3 DUP6 ADD PUSH2 0x45BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x48FC DUP5 DUP3 DUP6 ADD PUSH2 0x45D4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4917 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4925 DUP5 DUP3 DUP6 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x494E DUP5 DUP3 DUP6 ADD PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x496A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4978 DUP6 DUP3 DUP7 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4989 DUP6 DUP3 DUP7 ADD PUSH2 0x4419 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x49A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x49B6 DUP7 DUP3 DUP8 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x49C7 DUP7 DUP3 DUP8 ADD PUSH2 0x4595 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x49D8 DUP7 DUP3 DUP8 ADD PUSH2 0x45D4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A03 DUP6 DUP3 DUP7 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x4A14 DUP6 DUP3 DUP7 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A41 DUP7 DUP3 DUP8 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x4A52 DUP7 DUP3 DUP8 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4A63 DUP7 DUP3 DUP8 ADD PUSH2 0x4419 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4A88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4A96 DUP11 DUP3 DUP12 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 PUSH2 0x4AA7 DUP11 DUP3 DUP12 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH2 0x4AB8 DUP11 DUP3 DUP12 ADD PUSH2 0x4419 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 PUSH2 0x4AC9 DUP11 DUP3 DUP12 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 PUSH2 0x4ADA DUP11 DUP3 DUP12 ADD PUSH2 0x4613 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH2 0x4AEB DUP11 DUP3 DUP12 ADD PUSH2 0x4580 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x4AFC DUP11 DUP3 DUP12 ADD PUSH2 0x4580 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4B2F DUP8 DUP3 DUP9 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4B40 DUP8 DUP3 DUP9 ADD PUSH2 0x45E9 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4B51 DUP8 DUP3 DUP9 ADD PUSH2 0x45D4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B62 DUP8 DUP3 DUP9 ADD PUSH2 0x4556 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B7A DUP4 DUP4 PUSH2 0x4CC7 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B92 DUP4 DUP4 PUSH2 0x550F JUMP JUMPDEST PUSH1 0x60 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4BA7 DUP2 PUSH2 0x5E04 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4BB6 DUP2 PUSH2 0x5D35 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4BC7 DUP3 PUSH2 0x5CBC JUMP JUMPDEST PUSH2 0x4BD1 DUP2 DUP6 PUSH2 0x5CF7 JUMP JUMPDEST SWAP4 POP PUSH2 0x4BDC DUP4 PUSH2 0x5C9C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4C0D JUMPI DUP2 MLOAD PUSH2 0x4BF4 DUP9 DUP3 PUSH2 0x4B6E JUMP JUMPDEST SWAP8 POP PUSH2 0x4BFF DUP4 PUSH2 0x5CDD JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x4BE0 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C25 DUP3 PUSH2 0x5CC7 JUMP JUMPDEST PUSH2 0x4C2F DUP2 DUP6 PUSH2 0x5D08 JUMP JUMPDEST SWAP4 POP PUSH2 0x4C3A DUP4 PUSH2 0x5CAC JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4C6B JUMPI DUP2 MLOAD PUSH2 0x4C52 DUP9 DUP3 PUSH2 0x4B86 JUMP JUMPDEST SWAP8 POP PUSH2 0x4C5D DUP4 PUSH2 0x5CEA JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x4C3E JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4C81 DUP2 PUSH2 0x5D47 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4C90 DUP2 PUSH2 0x5D53 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4CA1 DUP3 PUSH2 0x5CD2 JUMP JUMPDEST PUSH2 0x4CAB DUP2 DUP6 PUSH2 0x5D19 JUMP JUMPDEST SWAP4 POP PUSH2 0x4CBB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x5ECA JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4CD0 DUP2 PUSH2 0x5E16 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4CDF DUP2 PUSH2 0x5E16 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4CEE DUP2 PUSH2 0x5E3A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4CFD DUP2 PUSH2 0x5E5E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4D0C DUP2 PUSH2 0x5D93 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x4D1B DUP2 PUSH2 0x5E82 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2E PUSH1 0x15 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A20556E646572666C6F770000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D6E PUSH1 0xB DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x496E7465676572203C2030000000000000000000000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4DAE PUSH1 0x22 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A2066756E64696E672063616E6E6F74206265207A65 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x726F000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E14 PUSH1 0x28 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20696E73756666696369656E7420657874656E7369 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6F6E206C696D6974000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E7A PUSH1 0x1C DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4EBA PUSH1 0x2D DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20657874656E73696F6E206475726174696F6E2063 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x616E6E6F74206265207A65726F00000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F20 PUSH1 0x26 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4F86 PUSH1 0x27 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A206D696772617465642062616C616E6365206D7573 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x74206D6174636800000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FEC PUSH1 0x26 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20696E73756666696369656E742066756E64696E67 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x206C696D69740000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5052 PUSH1 0x21 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x5369676E6564536166654D6174683A206164646974696F6E206F766572666C6F PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B8 PUSH1 0x1B DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A206E6F206D69677261746F72207365740000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50F8 PUSH1 0x29 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A2066756E64696E6720616D6F756E742063616E6E6F PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x74206265207A65726F0000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x515E PUSH1 0x1C DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A2075696E74313238204F766572666C6F7700000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x519E PUSH1 0x18 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A20416464204F766572666C6F770000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51DE PUSH1 0x20 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x521E PUSH1 0x25 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20696E76616C696420706172616D65746572206C65 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6E67746873000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5284 PUSH1 0x13 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x546F6B656E20616C726561647920616464656400000000000000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52C4 PUSH1 0x1B DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A2075696E743634204F766572666C6F770000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5304 PUSH1 0x27 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A206D6967726174696F6E20686173206265656E2064 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x697361626C656400000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x536A PUSH1 0x24 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x5369676E6564536166654D6174683A207375627472616374696F6E206F766572 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x666C6F7700000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53D0 PUSH1 0x20 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E6745524332303A205472616E7366657246726F6D206661696C6564 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5410 PUSH1 0x22 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A2063616C6C6572206973206E6F7420612066756E64 PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6572000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5476 PUSH1 0x18 DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x54B6 PUSH1 0x2A DUP4 PUSH2 0x5D24 JUMP JUMPDEST SWAP2 POP PUSH32 0x4D696E694368656656323A20726577617264206475726174696F6E2063616E6E PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x6F74206265207A65726F00000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x5525 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x5593 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x5538 PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x55CF JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x554B PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x55CF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 ADD PUSH1 0x0 DUP3 ADD MLOAD PUSH2 0x5567 PUSH1 0x0 DUP6 ADD DUP3 PUSH2 0x5593 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH2 0x557A PUSH1 0x20 DUP6 ADD DUP3 PUSH2 0x55CF JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0x558D PUSH1 0x40 DUP6 ADD DUP3 PUSH2 0x55CF JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x559C DUP2 PUSH2 0x5D9D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55AB DUP2 PUSH2 0x5D9D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55BA DUP2 PUSH2 0x5E94 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55C9 DUP2 PUSH2 0x5DD9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55D8 DUP2 PUSH2 0x5DE3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55E7 DUP2 PUSH2 0x5DE3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x55F6 DUP2 PUSH2 0x5DF7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5608 DUP3 DUP5 PUSH2 0x4C96 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5628 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4BAD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD SWAP1 POP PUSH2 0x5643 PUSH1 0x0 DUP4 ADD DUP11 PUSH2 0x4B9E JUMP JUMPDEST PUSH2 0x5650 PUSH1 0x20 DUP4 ADD DUP10 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x565D PUSH1 0x40 DUP4 ADD DUP9 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x566A PUSH1 0x60 DUP4 ADD DUP8 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5677 PUSH1 0x80 DUP4 ADD DUP7 PUSH2 0x55ED JUMP JUMPDEST PUSH2 0x5684 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x4C87 JUMP JUMPDEST PUSH2 0x5691 PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x4C87 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x56B2 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x56BF PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x56CC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x56E9 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x56F6 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5717 DUP2 DUP5 PUSH2 0x4BBC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5739 DUP2 DUP5 PUSH2 0x4C1A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5756 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4C78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5771 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4CD6 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x578C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4CE5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x57A7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4CF4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x57C6 DUP2 PUSH2 0x4D21 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x57E6 DUP2 PUSH2 0x4D61 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5806 DUP2 PUSH2 0x4DA1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5826 DUP2 PUSH2 0x4E07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5846 DUP2 PUSH2 0x4E6D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5866 DUP2 PUSH2 0x4EAD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5886 DUP2 PUSH2 0x4F13 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x58A6 DUP2 PUSH2 0x4F79 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x58C6 DUP2 PUSH2 0x4FDF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x58E6 DUP2 PUSH2 0x5045 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5906 DUP2 PUSH2 0x50AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5926 DUP2 PUSH2 0x50EB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5946 DUP2 PUSH2 0x5151 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5966 DUP2 PUSH2 0x5191 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5986 DUP2 PUSH2 0x51D1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x59A6 DUP2 PUSH2 0x5211 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x59C6 DUP2 PUSH2 0x5277 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x59E6 DUP2 PUSH2 0x52B7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A06 DUP2 PUSH2 0x52F7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A26 DUP2 PUSH2 0x535D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A46 DUP2 PUSH2 0x53C3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A66 DUP2 PUSH2 0x5403 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5A86 DUP2 PUSH2 0x5469 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x5AA6 DUP2 PUSH2 0x54A9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5AC2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x5551 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5ADD PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x55A2 JUMP JUMPDEST PUSH2 0x5AEA PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x55DE JUMP JUMPDEST PUSH2 0x5AF7 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x55DE JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x5B14 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x5B2F PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5B3C PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4B9E JUMP JUMPDEST PUSH2 0x5B49 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x5B56 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4D12 JUMP JUMPDEST PUSH2 0x5B63 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x5B82 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5B8F PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4B9E JUMP JUMPDEST PUSH2 0x5B9C PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x5BA9 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5BB6 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x5BD5 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5BE2 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x5BEF PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x4BAD JUMP JUMPDEST PUSH2 0x5BFC PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x4D12 JUMP JUMPDEST PUSH2 0x5C09 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x55C0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5C28 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5C35 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4C78 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x5C51 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5C5E PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4D03 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x5C7A PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x55DE JUMP JUMPDEST PUSH2 0x5C87 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x55C0 JUMP JUMPDEST PUSH2 0x5C94 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x55B1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD 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 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D40 DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D68 DUP3 PUSH2 0x5D35 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D7A DUP3 PUSH2 0x5D35 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5D8C DUP3 PUSH2 0x5D35 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E0F DUP3 PUSH2 0x5EA6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E21 DUP3 PUSH2 0x5E28 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E33 DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E45 DUP3 PUSH2 0x5E4C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E57 DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E69 DUP3 PUSH2 0x5E70 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E7B DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E8D DUP3 PUSH2 0x5DD9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E9F DUP3 PUSH2 0x5D9D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5EB1 DUP3 PUSH2 0x5EB8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5EC3 DUP3 PUSH2 0x5DB9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5EE8 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5ECD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x5EF7 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x5F06 DUP2 PUSH2 0x5D35 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F1D DUP2 PUSH2 0x5D47 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F34 DUP2 PUSH2 0x5D53 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F4B DUP2 PUSH2 0x5D5D JUMP JUMPDEST DUP2 EQ PUSH2 0x5F56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F62 DUP2 PUSH2 0x5D6F JUMP JUMPDEST DUP2 EQ PUSH2 0x5F6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F79 DUP2 PUSH2 0x5D81 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5F90 DUP2 PUSH2 0x5DD9 JUMP JUMPDEST DUP2 EQ PUSH2 0x5F9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x5FA7 DUP2 PUSH2 0x5DF7 JUMP JUMPDEST DUP2 EQ PUSH2 0x5FB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x126B0FFEFE9FA82508C02F85D6626154C2099BD7776E21990DDEE978477ED5 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "825:21845:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4302:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14619:676;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1803:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1882:26;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2530:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15468:806;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21342:530;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18275:132;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4820:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14116:291;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8714:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19091:1216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17738:402;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4480:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7176:601;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9349:598;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20495:589;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12092:1086;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11446:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4653:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1706:145:11;;;:::i;:::-;;1976:23:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5299:530;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2265:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1767:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1083:77:11;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13423:685:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2569:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22133:534;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2163:66;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10170:1094;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6872:202;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2726:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11731:177;;;:::i;:::-;;2069:27;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1624:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16550:1003;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18546:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2000:240:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5025:182:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9070:121;;;:::i;:::-;;4302:100;4345:13;4379:8;:15;;;;4371:23;;4302:100;:::o;14619:676::-;14696:20;;:::i;:::-;14719:15;14730:3;14719:10;:15::i;:::-;14696:38;;14745:21;14769:8;:13;14778:3;14769:13;;;;;;;;;;;:25;14783:10;14769:25;;;;;;;;;;;;;;;14745:49;;14845:86;2654:4;14872:34;14883:4;:22;;;14872:34;;:6;:10;;:34;;;;:::i;:::-;:57;;;;;;14845:4;:15;;;:19;;:86;;;;:::i;:::-;14827:4;:15;;:104;;;;14956:23;14972:6;14956:4;:11;;;:15;;:23;;;;:::i;:::-;14942:4;:11;;:37;;;;15017:19;15039:8;15048:3;15039:13;;;;;;;;;;;;;;;;;;;;;;;;;15017:35;;15097:1;15067:32;;15075:9;15067:32;;;15063:120;;15116:9;:18;;;15135:3;15140:10;15152:2;15156:1;15159:4;:11;;;15116:55;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15063:120;15195:37;15221:2;15225:6;15195:7;15203:3;15195:12;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;:37;;;;;:::i;:::-;15284:2;15250:37;;15271:3;15259:10;15250:37;;;15276:6;15250:37;;;;;;:::i;:::-;;;;;;;;14619:676;;;;;;:::o;1803:29::-;;;;;;;;;;;;;:::o;1882:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2530:30::-;;;;:::o;15468:806::-;15528:20;;:::i;:::-;15551:15;15562:3;15551:10;:15::i;:::-;15528:38;;15577:21;15601:8;:13;15610:3;15601:13;;;;;;;;;;;:25;15615:10;15601:25;;;;;;;;;;;;;;;15577:49;;15637:24;2654:4;15671:39;15687:4;:22;;;15671:39;;:4;:11;;;:15;;:39;;;;:::i;:::-;:62;;;;;;15637:97;;15745:22;15770:50;:38;15792:4;:15;;;15770:17;:21;;:38;;;;:::i;:::-;:48;:50::i;:::-;15745:75;;15871:17;15853:4;:15;;:35;;;;15948:1;15930:14;:19;15926:91;;15966:39;15986:2;15990:14;15966:6;:19;;;;:39;;;;;:::i;:::-;15926:91;16029:19;16051:8;16060:3;16051:13;;;;;;;;;;;;;;;;;;;;;;;;;16029:35;;16109:1;16079:32;;16087:9;16079:32;;;16075:134;;16128:9;:18;;;16148:3;16153:10;16165:2;16169:14;16185:4;:11;;;16128:69;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16075:134;16246:3;16234:10;16226:40;;;16251:14;16226:40;;;;;;:::i;:::-;;;;;;;;15468:806;;;;;;;:::o;21342:530::-;21452:1;21442:7;:11;21434:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;21512:25;21550:15;;21540:7;:25;;;;;;21512:53;;21605:12;21584:17;:33;;21576:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;21695:40;21717:17;21695;;:21;;:40;;;;:::i;:::-;21675:17;:60;;;;21748:59;21772:10;21792:4;21799:7;21748:6;:23;;;;:59;;;;;;:::i;:::-;21825:39;21846:17;;21825:39;;;;;;:::i;:::-;;;;;;;;21342:530;;;:::o;18275:132::-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18359:4:3::1;18341:6;:15;18348:7;18341:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18379:20;18391:7;18379:20;;;;;;:::i;:::-;;;;;;;;18275:132:::0;:::o;4820:116::-;4878:12;4913:6;:15;4920:7;4913:15;;;;;;;;;;;;;;;;;;;;;;;;;4903:25;;4820:116;;;:::o;14116:291::-;14269:7;14277:3;14269:12;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;14289:10;14309:4;14316:6;14324:8;14334:1;14337;14340;14269:73;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14375:24;14383:3;14388:6;14396:2;14375:7;:24::i;:::-;14116:291;;;;;;;:::o;8714:230::-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8797:17:3::1;;;;;;;;;;;8796:18;8788:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8880:9;8869:8;;:20;;;;;;;;;;;;;;;;;;8905:31;8925:9;8905:31;;;;;;:::i;:::-;;;;;;;;8714:230:::0;:::o;19091:1216::-;18747:7;:5;:7::i;:::-;18733:21;;:10;:21;;;:51;;;;18780:4;18758:26;;:6;:18;18765:10;18758:18;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;18733:51;18725:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;19196:1:::1;19186:7;:11;19178:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19249:59;19273:10;19293:4;19300:7;19249:6;:23;;;;:59;;;;;;:::i;:::-;19344:17;;19325:15;:36;19321:871;;19397:1;19386:8;:12;19378:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19460:20;:18;:20::i;:::-;19515:29;19535:8;19515:15;:19;;:29;;;;:::i;:::-;19495:17;:49;;;;19587:8;19577:7;:18;;;;;;19559:15;:36;;;;19321:871;;;19628:21;19652:38;19674:15;19652:17;;:21;;:38;;;;:::i;:::-;19628:62;;19705:24;19732:34;19750:15;;19732:13;:17;;:34;;;;:::i;:::-;19705:61;;19781:28;19812:31;19834:8;19812:17;;:21;;:31;;;;:::i;:::-;19781:62;;19858:26;19920:41;19945:15;19920:20;:24;;:41;;;;:::i;:::-;19887:29;19908:7;19887:16;:20;;:29;;;;:::i;:::-;:75;;;;;;19858:104;;20003:15;;19981:18;:37;19977:98;;20039:20;:18;:20::i;:::-;19977:98;20109:20;20089:17;:40;;;;20162:18;20144:15;:36;;;;19321:871;;;;;20209:35;20228:15;;20209:35;;;;;;:::i;:::-;;;;;;;;20260:39;20281:17;;20260:39;;;;;;:::i;:::-;;;;;;;;19091:1216:::0;;:::o;17738:402::-;17808:21;17832:8;:13;17841:3;17832:13;;;;;;;;;;;:25;17846:10;17832:25;;;;;;;;;;;;;;;17808:49;;17868:14;17885:4;:11;;;17868:28;;17921:1;17907:4;:11;;:15;;;;17951:1;17933:4;:15;;:19;;;;18033:37;18059:2;18063:6;18033:7;18041:3;18033:12;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;:37;;;;;:::i;:::-;18129:2;18086:46;;18116:3;18104:10;18086:46;;;18121:6;18086:46;;;;;;:::i;:::-;;;;;;;;17738:402;;;;:::o;4480:93::-;4523:15;4558:7;4551:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4480:93;:::o;7176:601::-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7378:11:3::1;;:18;;7363:4;;:11;;:33;:88;;;;;7435:9;;:16;;7413:11;;:18;;:38;7363:88;:142;;;;;7488:10;;:17;;7468:9;;:16;;:37;7363:142;7341:229;;;;;;;;;;;;:::i;:::-;;;;;;;;;7583:20;:18;:20::i;:::-;7616:11;7630:4;;:11;;7616:25;;7657:9;7652:118;7676:3;7672:1;:7;7652:118;;;7701:57;7705:4;;7710:1;7705:7;;;;;;;;;;;;;7714:11;;7726:1;7714:14;;;;;;;;;;;;;7730:9;;7740:1;7730:12;;;;;;;;;;;;;;;;;;;;:::i;:::-;7744:10;;7755:1;7744:13;;;;;;;;;;;;;;;;;;;;:::i;:::-;7701:3;:57::i;:::-;7681:3;;;;;7652:118;;;;1356:1:11;7176:601:3::0;;;;;;;;:::o;9349:598::-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9417:17:3::1;;;;;;;;;;;9416:18;9408:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9526:1;9497:31;;9505:8;;;;;;;;;;;9497:31;;;;9489:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9571:15;9589:7;9597:4;9589:13;;;;;;;;;;;;;;;;;;;;;;;;;9571:31;;9613:11;9627:8;:18;;;9654:4;9627:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9613:47;;9671:8;:16;;;9696:8;;;;;;;;;;;9707:3;9671:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9722:17;9742:8;;;;;;;;;;;:16;;;9759:8;9742:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9722:46;;9794:10;:20;;;9823:4;9794:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9787:3;:42;9779:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;9900:10;9884:7;9892:4;9884:13;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;9926:13;9934:4;9926:13;;;;;;:::i;:::-;;;;;;;;1356:1:11;;;9349:598:3::0;:::o;20495:589::-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20592:1:3::1;20581:8;:12;20573:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20653:20;:18;:20::i;:::-;20686:21;20710:38;20732:15;20710:17;;:21;;:38;;;;:::i;:::-;20686:62;;20759:24;20786:34;20804:15;;20786:13;:17;;:34;;;;:::i;:::-;20759:61;;20851:29;20871:8;20851:15;:19;;:29;;;;:::i;:::-;20831:17;:49;;;;20929:38;20951:15;20929:17;;:21;;:38;;;;:::i;:::-;20909:16;:59;;;;;;20891:15;:77;;;;20986:35;21005:15;;20986:35;;;;;;:::i;:::-;;;;;;;;21037:39;21058:17;;21037:39;;;;;;:::i;:::-;;;;;;;;1356:1:11;;20495:589:3::0;:::o;12092:1086::-;12141:20;;:::i;:::-;12181:8;12190:3;12181:13;;;;;;;;;;;;;;;12174:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12227:4;:19;;;12209:37;;:15;:37;12205:966;;;12263:16;12282:7;12290:3;12282:12;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;12313:4;12282:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12263:56;;12349:1;12338:8;:12;12334:642;;;12371:12;12405:17;;12386:15;:36;;:325;;12558:4;:19;;;12538:39;;:17;;:39;:173;;12710:1;12538:173;;;12605:42;12627:4;:19;;;12605:42;;:17;;:21;;:42;;;;:::i;:::-;12538:173;12386:325;;;12446:40;12466:4;:19;;;12446:40;;:15;:19;;:40;;;;:::i;:::-;12386:325;12371:340;;12754:14;12820:15;;12771:46;12801:4;:15;;;12771:46;;:25;12780:15;;12771:4;:8;;:25;;;;:::i;:::-;:29;;:46;;;;:::i;:::-;:64;;;;;;12754:81;;12879;12906:53;12942:8;12907:32;2654:4;12907:6;:10;;:32;;;;:::i;:::-;:43;;;;;;12906:51;:53::i;:::-;12879:4;:22;;;:26;;;;:81;;;;:::i;:::-;12854:4;:22;;:106;;;;;;;;;;;12334:642;;;13012:22;:15;:20;:22::i;:::-;12990:4;:19;;:44;;;;;;;;;;;13065:4;13049:8;13058:3;13049:13;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13100:3;13089:70;13105:4;:19;;;13126:8;13136:4;:22;;;13089:70;;;;;;;;:::i;:::-;;;;;;;;12205:966;;12092:1086;;;:::o;11446:193::-;11516:11;11530:4;;:11;;11516:25;;11557:9;11552:80;11576:3;11572:1;:7;11552:80;;;11601:19;11612:4;;11617:1;11612:7;;;;;;;;;;;;;11601:10;:19::i;:::-;;11581:3;;;;;11552:80;;;;11446:193;;;:::o;4653:97::-;4697:17;4734:8;4727:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4653:97;:::o;1706:145:11:-;1297:12;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1812:1:::1;1775:40;;1796:6;::::0;::::1;;;;;;;;1775:40;;;;;;;;;;;;1842:1;1825:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1706:145::o:0;1976:23:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5299:530::-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5487:9:3::1;;:16;;5464:12;;:19;;:39;:93;;;;;5540:10;;:17;;5520:9;;:16;;:37;5464:93;5442:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;5635:20;:18;:20::i;:::-;5668:11;5682:12;;:19;;5668:33;;5717:9;5712:110;5736:3;5732:1;:7;5712:110;;;5761:49;5765:12;;5778:1;5765:15;;;;;;;;;;;;;5782:9;;5792:1;5782:12;;;;;;;;;;;;;;;;;;;;:::i;:::-;5796:10;;5807:1;5796:13;;;;;;;;;;;;;;;;;;;;:::i;:::-;5761:3;:49::i;:::-;5741:3;;;;;5712:110;;;;1356:1:11;5299:530:3::0;;;;;;:::o;2265:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;1767:29::-;;;;;;;;;;;;;:::o;1083:77:11:-;1121:7;1147:6;;;;;;;;;;;1140:13;;1083:77;:::o;13423:685:3:-;13499:20;;:::i;:::-;13522:15;13533:3;13522:10;:15::i;:::-;13499:38;;13548:21;13572:8;:13;13581:3;13572:13;;;;;;;;;;;:17;13586:2;13572:17;;;;;;;;;;;;;;;13548:41;;13636:23;13652:6;13636:4;:11;;;:15;;:23;;;;:::i;:::-;13622:4;:11;;:37;;;;13688:86;2654:4;13715:34;13726:4;:22;;;13715:34;;:6;:10;;:34;;;;:::i;:::-;:57;;;;;;13688:4;:15;;;:19;;:86;;;;:::i;:::-;13670:4;:15;;:104;;;;13812:19;13834:8;13843:3;13834:13;;;;;;;;;;;;;;;;;;;;;;;;;13812:35;;13892:1;13862:32;;13870:9;13862:32;;;13858:112;;13911:9;:18;;;13930:3;13935:2;13939;13943:1;13946:4;:11;;;13911:47;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13858:112;13982:64;14012:10;14032:4;14039:6;13982:7;13990:3;13982:12;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;:64;;;;;;:::i;:::-;14097:2;14064:36;;14084:3;14072:10;14064:36;;;14089:6;14064:36;;;;;;:::i;:::-;;;;;;;;13423:685;;;;;;:::o;2569:30::-;;;;:::o;22133:534::-;22246:1;22234:9;:13;22226:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22310:23;22336:30;22356:9;22336:15;;:19;;:30;;;;:::i;:::-;22310:56;;22404:10;22385:15;:29;;22377:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;22490:32;22512:9;22490:17;;:21;;:32;;;;:::i;:::-;22470:17;:52;;;;22535:67;22559:10;22579:4;22586:15;22535:6;:23;;;;:67;;;;;;:::i;:::-;22620:39;22641:17;;22620:39;;;;;;:::i;:::-;;;;;;;;22133:534;;;:::o;2163:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10170:1094::-;10245:15;10273:20;;:::i;:::-;10296:8;10305:4;10296:14;;;;;;;;;;;;;;;10273:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10321:21;10345:8;:14;10354:4;10345:14;;;;;;;;;;;:21;10360:5;10345:21;;;;;;;;;;;;;;;10321:45;;10377:25;10405:4;:22;;;10377:50;;;;10438:16;10457:7;10465:4;10457:13;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;10489:4;10457:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10438:57;;10528:4;:19;;;10510:37;;:15;:37;:54;;;;;10563:1;10551:8;:13;;10510:54;10506:632;;;10581:12;10615:17;;10596:15;:36;;:309;;10760:4;:19;;;10740:39;;:17;;:39;:165;;10904:1;10740:165;;;10803:42;10825:4;:19;;;10803:42;;:17;;:21;;:42;;;;:::i;:::-;10740:165;10596:309;;;10652:40;10672:4;:19;;;10652:40;;:15;:19;;:40;;;;:::i;:::-;10596:309;10581:324;;10944:14;11010:15;;10961:46;10991:4;:15;;;10961:46;;:25;10970:15;;10961:4;:8;;:25;;;;:::i;:::-;:29;;:46;;;;:::i;:::-;:64;;;;;;10944:81;;11060:66;11117:8;11082:32;2654:4;11082:6;:10;;:32;;;;:::i;:::-;:43;;;;;;11060:17;:21;;:66;;;;:::i;:::-;11040:86;;10506:632;;;11158:98;:86;11228:4;:15;;;2654:4;11165:34;11181:17;11165:4;:11;;;:15;;:34;;;;:::i;:::-;:57;;;;;;11158:69;;:86;;;;:::i;:::-;:96;:98::i;:::-;11148:108;;10170:1094;;;;;;;;:::o;6872:202::-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6991:20:3::1;:18;:20::i;:::-;7022:44;7026:4;7032:11;7045:9;7056;7022:3;:44::i;:::-;6872:202:::0;;;;:::o;2726:32::-;;;;:::o;11731:177::-;11779:11;11793:8;:15;;;;11779:29;;11824:11;11819:82;11847:3;11841;:9;11819:82;;;11874:15;11885:3;11874:10;:15::i;:::-;;11852:5;;;;;11819:82;;;;11731:177;:::o;2069:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1624:30::-;;;:::o;16550:1003::-;16637:20;;:::i;:::-;16660:15;16671:3;16660:10;:15::i;:::-;16637:38;;16686:21;16710:8;:13;16719:3;16710:13;;;;;;;;;;;:25;16724:10;16710:25;;;;;;;;;;;;;;;16686:49;;16746:24;2654:4;16780:39;16796:4;:22;;;16780:39;;:4;:11;;;:15;;:39;;;;:::i;:::-;:62;;;;;;16746:97;;16854:22;16879:50;:38;16901:4;:15;;;16879:17;:21;;:38;;;;:::i;:::-;:48;:50::i;:::-;16854:75;;16980:88;2654:4;17009:34;17020:4;:22;;;17009:34;;:6;:10;;:34;;;;:::i;:::-;:57;;;;;;16980:17;:21;;:88;;;;:::i;:::-;16962:4;:15;;:106;;;;17093:23;17109:6;17093:4;:11;;;:15;;:23;;;;:::i;:::-;17079:4;:11;;:37;;;;17154:39;17174:2;17178:14;17154:6;:19;;;;:39;;;;;:::i;:::-;17206:19;17228:8;17237:3;17228:13;;;;;;;;;;;;;;;;;;;;;;;;;17206:35;;17286:1;17256:32;;17264:9;17256:32;;;17252:133;;17305:9;:18;;;17324:3;17329:10;17341:2;17345:14;17361:4;:11;;;17305:68;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17252:133;17397:37;17423:2;17427:6;17397:7;17405:3;17397:12;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;:37;;;;;:::i;:::-;17486:2;17452:37;;17473:3;17461:10;17452:37;;;17478:6;17452:37;;;;;;:::i;:::-;;;;;;;;17525:3;17513:10;17505:40;;;17530:14;17505:40;;;;;;:::i;:::-;;;;;;;;16550:1003;;;;;;;;:::o;18546:138::-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18633:5:3::1;18615:6;:15;18622:7;18615:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18654:22;18668:7;18654:22;;;;;;:::i;:::-;;;;;;;;18546:138:::0;:::o;2000:240:11:-;1297:12;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2108:1:::1;2088:22;;:8;:22;;;;2080:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2197:8;2168:38;;2189:6;::::0;::::1;;;;;;;;2168:38;;;;;;;;;;;;2225:8;2216:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2000:240:::0;:::o;5025:182:3:-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5131:20:3::1;:18;:20::i;:::-;5162:37;5166:11;5179:8;5189:9;5162:3;:37::i;:::-;5025:182:::0;;;:::o;9070:121::-;1297:12:11;:10;:12::i;:::-;1287:22;;:6;;;;;;;;;;:22;;;1279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9145:4:3::1;9125:17:::0;::::1;:24;;;;;;;;;;;;;;;;;;9165:18;;;;;;;;;;9070:121::o:0;470:137:2:-;528:9;553:1;548;:6;:28;;;;575:1;570;567;563;:5;559:9;;;558:13;;;;;;:18;548:28;540:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;470:137;;;;:::o;1959:218:9:-;2015:6;2034:8;2049:1;2045;:5;2034:16;;2075:1;2070;:6;;:16;;;;;2085:1;2080;:6;;2070:16;2069:38;;;;2096:1;2092;:5;:14;;;;;2105:1;2101;:5;2092:14;2069:38;2061:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;2168:1;2161:8;;;1959:218;;;;:::o;342:122:2:-;400:9;435:1;429;425;:5;421:9;;;420:16;;412:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;342:122;;;;:::o;951:304:1:-;1036:12;1050:17;1079:5;1071:19;;1114:10;1126:2;1130:6;1091:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1071:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;;1184:1;1169:4;:11;:16;:44;;;;1200:4;1189:24;;;;;;;;;;;;:::i;:::-;1169:44;1157:57;1149:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;951:304;;;;;:::o;2645:138:9:-;2697:7;2730:1;2725;:6;;2717:30;;;;;;;;;;;;:::i;:::-;;;;;;;;;2773:1;2758:17;;2645:138;;;:::o;211:125:2:-;269:9;304:1;298;294;:5;290:9;;;289:16;;281:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;211:125;;;;:::o;1263:332:1:-;1366:12;1380:17;1409:5;1401:19;;1444:10;1456:4;1462:2;1466:6;1421:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1401:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:109;;;;1493:7;:57;;;;;1520:1;1505:4;:11;:16;:44;;;;1536:4;1525:24;;;;;;;;;;;;:::i;:::-;1505:44;1493:57;1485:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;1263:332;;;;;;:::o;598:104:10:-;651:15;685:10;678:17;;598:104;:::o;8172:400:3:-;8295:63;8346:11;8295:46;8315:8;8324:4;8315:14;;;;;;;;;;;;;;;:25;;;;;;;;;;;;8295:46;;:15;;:19;;:46;;;;:::i;:::-;:50;;:63;;;;:::i;:::-;8277:15;:81;;;;8397:18;:11;:16;:18::i;:::-;8369:8;8378:4;8369:14;;;;;;;;;;;;;;;:25;;;:46;;;;;;;;;;;;;;;;;;8430:9;8426:46;;;8460:9;8443:8;8452:4;8443:14;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;8426:46;8514:9;:38;;8538:8;8547:4;8538:14;;;;;;;;;;;;;;;;;;;;;;;;;8514:38;;;8526:9;8514:38;8487:77;;8495:4;8487:77;8501:11;8554:9;8487:77;;;;;;;:::i;:::-;;;;;;;;8172:400;;;;:::o;613:161:2:-;662:9;705:2;692:16;;:1;:16;;684:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;764:1;752:14;;613:161;;;:::o;1134:125::-;1192:9;1227:1;1212:16;;1221:1;1217;:5;1213:9;;;1212:16;;;;1204:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;1134:125;;;;:::o;780:156::-;828:8;869:2;857:15;;:1;:15;;849:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;926:1;915:13;;780:156;;;:::o;6168:608:3:-;6301:5;6267:39;;:11;:30;6287:8;6267:30;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;6259:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6359:31;6379:10;6359:15;;:19;;:31;;;;:::i;:::-;6341:15;:49;;;;6401:7;6414:8;6401:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6434:8;6448:9;6434:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6471:8;6485:153;;;;;;;;6625:1;6485:153;;;;;;6569:22;:15;:20;:22::i;:::-;6485:153;;;;;;6521:17;:10;:15;:17::i;:::-;6485:153;;;;;6471:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6683:4;6650:11;:30;6670:8;6650:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;6758:9;6703:65;;6748:8;6703:65;;6713:21;6732:1;6713:7;:14;;;;:18;;:21;;;;:::i;:::-;6703:65;6736:10;6703:65;;;;;;:::i;:::-;;;;;;;;6168:608;;;:::o;2422:215:9:-;2478:6;2497:8;2512:1;2508;:5;2497:16;;2538:1;2533;:6;;:16;;;;;2548:1;2543;:6;;2533:16;2532:38;;;;2559:1;2555;:5;:14;;;;;2568:1;2564;:5;2555:14;2532:38;2524:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;2628:1;2621:8;;;2422:215;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;157:349::-;;;284:3;277:4;269:6;265:17;261:27;251:2;;302:1;299;292:12;251:2;335:6;322:20;312:30;;362:18;354:6;351:30;348:2;;;394:1;391;384:12;348:2;428:4;420:6;416:17;404:29;;479:3;471:4;463:6;459:17;449:8;445:32;442:41;439:2;;;496:1;493;486:12;439:2;244:262;;;;;:::o;540:365::-;;;683:3;676:4;668:6;664:17;660:27;650:2;;701:1;698;691:12;650:2;734:6;721:20;711:30;;761:18;753:6;750:30;747:2;;;793:1;790;783:12;747:2;827:4;819:6;815:17;803:29;;878:3;870:4;862:6;858:17;848:8;844:32;841:41;838:2;;;895:1;892;885:12;838:2;643:262;;;;;:::o;942:370::-;;;1090:3;1083:4;1075:6;1071:17;1067:27;1057:2;;1108:1;1105;1098:12;1057:2;1141:6;1128:20;1118:30;;1168:18;1160:6;1157:30;1154:2;;;1200:1;1197;1190:12;1154:2;1234:4;1226:6;1222:17;1210:29;;1285:3;1277:4;1269:6;1265:17;1255:8;1251:32;1248:41;1245:2;;;1302:1;1299;1292:12;1245:2;1050:262;;;;;:::o;1338:352::-;;;1468:3;1461:4;1453:6;1449:17;1445:27;1435:2;;1486:1;1483;1476:12;1435:2;1519:6;1506:20;1496:30;;1546:18;1538:6;1535:30;1532:2;;;1578:1;1575;1568:12;1532:2;1612:4;1604:6;1600:17;1588:29;;1663:3;1655:4;1647:6;1643:17;1633:8;1629:32;1626:41;1623:2;;;1680:1;1677;1670:12;1623:2;1428:262;;;;;:::o;1698:124::-;;1775:6;1762:20;1753:29;;1787:30;1811:5;1787:30;:::i;:::-;1747:75;;;;:::o;1829:128::-;;1910:6;1904:13;1895:22;;1922:30;1946:5;1922:30;:::i;:::-;1889:68;;;;:::o;1964:130::-;;2044:6;2031:20;2022:29;;2056:33;2083:5;2056:33;:::i;:::-;2016:78;;;;:::o;2101:156::-;;2194:6;2181:20;2172:29;;2206:46;2246:5;2206:46;:::i;:::-;2166:91;;;;:::o;2264:160::-;;2361:6;2355:13;2346:22;;2373:46;2413:5;2373:46;:::i;:::-;2340:84;;;;:::o;2431:172::-;;2532:6;2519:20;2510:29;;2544:54;2592:5;2544:54;:::i;:::-;2504:99;;;;:::o;2610:166::-;;2708:6;2695:20;2686:29;;2720:51;2765:5;2720:51;:::i;:::-;2680:96;;;;:::o;2783:130::-;;2863:6;2850:20;2841:29;;2875:33;2902:5;2875:33;:::i;:::-;2835:78;;;;:::o;2920:134::-;;3004:6;2998:13;2989:22;;3016:33;3043:5;3016:33;:::i;:::-;2983:71;;;;:::o;3061:126::-;;3139:6;3126:20;3117:29;;3151:31;3176:5;3151:31;:::i;:::-;3111:76;;;;:::o;3194:241::-;;3298:2;3286:9;3277:7;3273:23;3269:32;3266:2;;;3314:1;3311;3304:12;3266:2;3349:1;3366:53;3411:7;3402:6;3391:9;3387:22;3366:53;:::i;:::-;3356:63;;3328:97;3260:175;;;;:::o;3442:397::-;;;3581:2;3569:9;3560:7;3556:23;3552:32;3549:2;;;3597:1;3594;3587:12;3549:2;3660:1;3649:9;3645:17;3632:31;3683:18;3675:6;3672:30;3669:2;;;3715:1;3712;3705:12;3669:2;3743:80;3815:7;3806:6;3795:9;3791:22;3743:80;:::i;:::-;3725:98;;;;3611:218;3543:296;;;;;:::o;3846:1021::-;;;;;;;4120:2;4108:9;4099:7;4095:23;4091:32;4088:2;;;4136:1;4133;4126:12;4088:2;4199:1;4188:9;4184:17;4171:31;4222:18;4214:6;4211:30;4208:2;;;4254:1;4251;4244:12;4208:2;4282:80;4354:7;4345:6;4334:9;4330:22;4282:80;:::i;:::-;4264:98;;;;4150:218;4427:2;4416:9;4412:18;4399:32;4451:18;4443:6;4440:30;4437:2;;;4483:1;4480;4473:12;4437:2;4511:93;4596:7;4587:6;4576:9;4572:22;4511:93;:::i;:::-;4493:111;;;;4378:232;4669:2;4658:9;4654:18;4641:32;4693:18;4685:6;4682:30;4679:2;;;4725:1;4722;4715:12;4679:2;4753:98;4843:7;4834:6;4823:9;4819:22;4753:98;:::i;:::-;4735:116;;;;4620:237;4082:785;;;;;;;;:::o;4874:1271::-;;;;;;;;;5184:3;5172:9;5163:7;5159:23;5155:33;5152:2;;;5201:1;5198;5191:12;5152:2;5264:1;5253:9;5249:17;5236:31;5287:18;5279:6;5276:30;5273:2;;;5319:1;5316;5309:12;5273:2;5347:80;5419:7;5410:6;5399:9;5395:22;5347:80;:::i;:::-;5329:98;;;;5215:218;5492:2;5481:9;5477:18;5464:32;5516:18;5508:6;5505:30;5502:2;;;5548:1;5545;5538:12;5502:2;5576:80;5648:7;5639:6;5628:9;5624:22;5576:80;:::i;:::-;5558:98;;;;5443:219;5721:2;5710:9;5706:18;5693:32;5745:18;5737:6;5734:30;5731:2;;;5777:1;5774;5767:12;5731:2;5805:98;5895:7;5886:6;5875:9;5871:22;5805:98;:::i;:::-;5787:116;;;;5672:237;5968:2;5957:9;5953:18;5940:32;5992:18;5984:6;5981:30;5978:2;;;6024:1;6021;6014:12;5978:2;6052:77;6121:7;6112:6;6101:9;6097:22;6052:77;:::i;:::-;6034:95;;;;5919:216;5146:999;;;;;;;;;;;:::o;6152:235::-;;6253:2;6241:9;6232:7;6228:23;6224:32;6221:2;;;6269:1;6266;6259:12;6221:2;6304:1;6321:50;6363:7;6354:6;6343:9;6339:22;6321:50;:::i;:::-;6311:60;;6283:94;6215:172;;;;:::o;6394:257::-;;6506:2;6494:9;6485:7;6481:23;6477:32;6474:2;;;6522:1;6519;6512:12;6474:2;6557:1;6574:61;6627:7;6618:6;6607:9;6603:22;6574:61;:::i;:::-;6564:71;;6536:105;6468:183;;;;:::o;6658:267::-;;6775:2;6763:9;6754:7;6750:23;6746:32;6743:2;;;6791:1;6788;6781:12;6743:2;6826:1;6843:66;6901:7;6892:6;6881:9;6877:22;6843:66;:::i;:::-;6833:76;;6805:110;6737:188;;;;:::o;6932:289::-;;7060:2;7048:9;7039:7;7035:23;7031:32;7028:2;;;7076:1;7073;7066:12;7028:2;7111:1;7128:77;7197:7;7188:6;7177:9;7173:22;7128:77;:::i;:::-;7118:87;;7090:121;7022:199;;;;:::o;7228:283::-;;7353:2;7341:9;7332:7;7328:23;7324:32;7321:2;;;7369:1;7366;7359:12;7321:2;7404:1;7421:74;7487:7;7478:6;7467:9;7463:22;7421:74;:::i;:::-;7411:84;;7383:118;7315:196;;;;:::o;7518:277::-;;7640:2;7628:9;7619:7;7615:23;7611:32;7608:2;;;7656:1;7653;7646:12;7608:2;7691:1;7708:71;7771:7;7762:6;7751:9;7747:22;7708:71;:::i;:::-;7698:81;;7670:115;7602:193;;;;:::o;7802:241::-;;7906:2;7894:9;7885:7;7881:23;7877:32;7874:2;;;7922:1;7919;7912:12;7874:2;7957:1;7974:53;8019:7;8010:6;7999:9;7995:22;7974:53;:::i;:::-;7964:63;;7936:97;7868:175;;;;:::o;8050:263::-;;8165:2;8153:9;8144:7;8140:23;8136:32;8133:2;;;8181:1;8178;8171:12;8133:2;8216:1;8233:64;8289:7;8280:6;8269:9;8265:22;8233:64;:::i;:::-;8223:74;;8195:108;8127:186;;;;:::o;8320:366::-;;;8441:2;8429:9;8420:7;8416:23;8412:32;8409:2;;;8457:1;8454;8447:12;8409:2;8492:1;8509:53;8554:7;8545:6;8534:9;8530:22;8509:53;:::i;:::-;8499:63;;8471:97;8599:2;8617:53;8662:7;8653:6;8642:9;8638:22;8617:53;:::i;:::-;8607:63;;8578:98;8403:283;;;;;:::o;8693:553::-;;;;8862:2;8850:9;8841:7;8837:23;8833:32;8830:2;;;8878:1;8875;8868:12;8830:2;8913:1;8930:53;8975:7;8966:6;8955:9;8951:22;8930:53;:::i;:::-;8920:63;;8892:97;9020:2;9038:66;9096:7;9087:6;9076:9;9072:22;9038:66;:::i;:::-;9028:76;;8999:111;9141:2;9159:71;9222:7;9213:6;9202:9;9198:22;9159:71;:::i;:::-;9149:81;;9120:116;8824:422;;;;;:::o;9253:366::-;;;9374:2;9362:9;9353:7;9349:23;9345:32;9342:2;;;9390:1;9387;9380:12;9342:2;9425:1;9442:53;9487:7;9478:6;9467:9;9463:22;9442:53;:::i;:::-;9432:63;;9404:97;9532:2;9550:53;9595:7;9586:6;9575:9;9571:22;9550:53;:::i;:::-;9540:63;;9511:98;9336:283;;;;;:::o;9626:491::-;;;;9764:2;9752:9;9743:7;9739:23;9735:32;9732:2;;;9780:1;9777;9770:12;9732:2;9815:1;9832:53;9877:7;9868:6;9857:9;9853:22;9832:53;:::i;:::-;9822:63;;9794:97;9922:2;9940:53;9985:7;9976:6;9965:9;9961:22;9940:53;:::i;:::-;9930:63;;9901:98;10030:2;10048:53;10093:7;10084:6;10073:9;10069:22;10048:53;:::i;:::-;10038:63;;10009:98;9726:391;;;;;:::o;10124:991::-;;;;;;;;10328:3;10316:9;10307:7;10303:23;10299:33;10296:2;;;10345:1;10342;10335:12;10296:2;10380:1;10397:53;10442:7;10433:6;10422:9;10418:22;10397:53;:::i;:::-;10387:63;;10359:97;10487:2;10505:53;10550:7;10541:6;10530:9;10526:22;10505:53;:::i;:::-;10495:63;;10466:98;10595:2;10613:53;10658:7;10649:6;10638:9;10634:22;10613:53;:::i;:::-;10603:63;;10574:98;10703:2;10721:53;10766:7;10757:6;10746:9;10742:22;10721:53;:::i;:::-;10711:63;;10682:98;10811:3;10830:51;10873:7;10864:6;10853:9;10849:22;10830:51;:::i;:::-;10820:61;;10790:97;10918:3;10937:53;10982:7;10973:6;10962:9;10958:22;10937:53;:::i;:::-;10927:63;;10897:99;11027:3;11046:53;11091:7;11082:6;11071:9;11067:22;11046:53;:::i;:::-;11036:63;;11006:99;10290:825;;;;;;;;;;:::o;11122:647::-;;;;;11292:3;11280:9;11271:7;11267:23;11263:33;11260:2;;;11309:1;11306;11299:12;11260:2;11344:1;11361:53;11406:7;11397:6;11386:9;11382:22;11361:53;:::i;:::-;11351:63;;11323:97;11451:2;11469:53;11514:7;11505:6;11494:9;11490:22;11469:53;:::i;:::-;11459:63;;11430:98;11559:2;11577:71;11640:7;11631:6;11620:9;11616:22;11577:71;:::i;:::-;11567:81;;11538:116;11685:2;11703:50;11745:7;11736:6;11725:9;11721:22;11703:50;:::i;:::-;11693:60;;11664:95;11254:515;;;;;;;:::o;11777:199::-;;11877:59;11932:3;11924:6;11877:59;:::i;:::-;11965:4;11960:3;11956:14;11942:28;;11870:106;;;;:::o;11985:273::-;;12122:96;12214:3;12206:6;12122:96;:::i;:::-;12247:4;12242:3;12238:14;12224:28;;12115:143;;;;:::o;12266:142::-;12357:45;12396:5;12357:45;:::i;:::-;12352:3;12345:58;12339:69;;:::o;12415:113::-;12498:24;12516:5;12498:24;:::i;:::-;12493:3;12486:37;12480:48;;:::o;12574:755::-;;12732:67;12793:5;12732:67;:::i;:::-;12812:86;12891:6;12886:3;12812:86;:::i;:::-;12805:93;;12919:69;12982:5;12919:69;:::i;:::-;13008:7;13036:1;13021:286;13046:6;13043:1;13040:13;13021:286;;;13113:6;13107:13;13134:76;13206:3;13191:13;13134:76;:::i;:::-;13127:83;;13227:73;13293:6;13227:73;:::i;:::-;13217:83;;13078:229;13068:1;13065;13061:9;13056:14;;13021:286;;;13025:14;13320:3;13313:10;;12711:618;;;;;;;:::o;13406:890::-;;13601:79;13674:5;13601:79;:::i;:::-;13693:111;13797:6;13792:3;13693:111;:::i;:::-;13686:118;;13825:81;13900:5;13825:81;:::i;:::-;13926:7;13954:1;13939:335;13964:6;13961:1;13958:13;13939:335;;;14031:6;14025:13;14052:113;14161:3;14146:13;14052:113;:::i;:::-;14045:120;;14182:85;14260:6;14182:85;:::i;:::-;14172:95;;13996:278;13986:1;13983;13979:9;13974:14;;13939:335;;;13943:14;14287:3;14280:10;;13580:716;;;;;;;:::o;14304:104::-;14381:21;14396:5;14381:21;:::i;:::-;14376:3;14369:34;14363:45;;:::o;14415:113::-;14498:24;14516:5;14498:24;:::i;:::-;14493:3;14486:37;14480:48;;:::o;14535:356::-;;14663:38;14695:5;14663:38;:::i;:::-;14713:88;14794:6;14789:3;14713:88;:::i;:::-;14706:95;;14806:52;14851:6;14846:3;14839:4;14832:5;14828:16;14806:52;:::i;:::-;14879:6;14874:3;14870:16;14863:23;;14643:248;;;;;:::o;14898:142::-;14984:50;15028:5;14984:50;:::i;:::-;14979:3;14972:63;14966:74;;:::o;15047:152::-;15143:50;15187:5;15143:50;:::i;:::-;15138:3;15131:63;15125:74;;:::o;15206:168::-;15310:58;15362:5;15310:58;:::i;:::-;15305:3;15298:71;15292:82;;:::o;15381:162::-;15482:55;15531:5;15482:55;:::i;:::-;15477:3;15470:68;15464:79;;:::o;15550:110::-;15631:23;15648:5;15631:23;:::i;:::-;15626:3;15619:36;15613:47;;:::o;15667:142::-;15758:45;15797:5;15758:45;:::i;:::-;15753:3;15746:58;15740:69;;:::o;15817:321::-;;15977:67;16041:2;16036:3;15977:67;:::i;:::-;15970:74;;16077:23;16073:1;16068:3;16064:11;16057:44;16129:2;16124:3;16120:12;16113:19;;15963:175;;;:::o;16147:311::-;;16307:67;16371:2;16366:3;16307:67;:::i;:::-;16300:74;;16407:13;16403:1;16398:3;16394:11;16387:34;16449:2;16444:3;16440:12;16433:19;;16293:165;;;:::o;16467:371::-;;16627:67;16691:2;16686:3;16627:67;:::i;:::-;16620:74;;16727:34;16723:1;16718:3;16714:11;16707:55;16796:4;16791:2;16786:3;16782:12;16775:26;16829:2;16824:3;16820:12;16813:19;;16613:225;;;:::o;16847:377::-;;17007:67;17071:2;17066:3;17007:67;:::i;:::-;17000:74;;17107:34;17103:1;17098:3;17094:11;17087:55;17176:10;17171:2;17166:3;17162:12;17155:32;17215:2;17210:3;17206:12;17199:19;;16993:231;;;:::o;17233:328::-;;17393:67;17457:2;17452:3;17393:67;:::i;:::-;17386:74;;17493:30;17489:1;17484:3;17480:11;17473:51;17552:2;17547:3;17543:12;17536:19;;17379:182;;;:::o;17570:382::-;;17730:67;17794:2;17789:3;17730:67;:::i;:::-;17723:74;;17830:34;17826:1;17821:3;17817:11;17810:55;17899:15;17894:2;17889:3;17885:12;17878:37;17943:2;17938:3;17934:12;17927:19;;17716:236;;;:::o;17961:375::-;;18121:67;18185:2;18180:3;18121:67;:::i;:::-;18114:74;;18221:34;18217:1;18212:3;18208:11;18201:55;18290:8;18285:2;18280:3;18276:12;18269:30;18327:2;18322:3;18318:12;18311:19;;18107:229;;;:::o;18345:376::-;;18505:67;18569:2;18564:3;18505:67;:::i;:::-;18498:74;;18605:34;18601:1;18596:3;18592:11;18585:55;18674:9;18669:2;18664:3;18660:12;18653:31;18712:2;18707:3;18703:12;18696:19;;18491:230;;;:::o;18730:375::-;;18890:67;18954:2;18949:3;18890:67;:::i;:::-;18883:74;;18990:34;18986:1;18981:3;18977:11;18970:55;19059:8;19054:2;19049:3;19045:12;19038:30;19096:2;19091:3;19087:12;19080:19;;18876:229;;;:::o;19114:370::-;;19274:67;19338:2;19333:3;19274:67;:::i;:::-;19267:74;;19374:34;19370:1;19365:3;19361:11;19354:55;19443:3;19438:2;19433:3;19429:12;19422:25;19475:2;19470:3;19466:12;19459:19;;19260:224;;;:::o;19493:327::-;;19653:67;19717:2;19712:3;19653:67;:::i;:::-;19646:74;;19753:29;19749:1;19744:3;19740:11;19733:50;19811:2;19806:3;19802:12;19795:19;;19639:181;;;:::o;19829:378::-;;19989:67;20053:2;20048:3;19989:67;:::i;:::-;19982:74;;20089:34;20085:1;20080:3;20076:11;20069:55;20158:11;20153:2;20148:3;20144:12;20137:33;20198:2;20193:3;20189:12;20182:19;;19975:232;;;:::o;20216:328::-;;20376:67;20440:2;20435:3;20376:67;:::i;:::-;20369:74;;20476:30;20472:1;20467:3;20463:11;20456:51;20535:2;20530:3;20526:12;20519:19;;20362:182;;;:::o;20553:324::-;;20713:67;20777:2;20772:3;20713:67;:::i;:::-;20706:74;;20813:26;20809:1;20804:3;20800:11;20793:47;20868:2;20863:3;20859:12;20852:19;;20699:178;;;:::o;20886:332::-;;21046:67;21110:2;21105:3;21046:67;:::i;:::-;21039:74;;21146:34;21142:1;21137:3;21133:11;21126:55;21209:2;21204:3;21200:12;21193:19;;21032:186;;;:::o;21227:374::-;;21387:67;21451:2;21446:3;21387:67;:::i;:::-;21380:74;;21487:34;21483:1;21478:3;21474:11;21467:55;21556:7;21551:2;21546:3;21542:12;21535:29;21592:2;21587:3;21583:12;21576:19;;21373:228;;;:::o;21610:319::-;;21770:67;21834:2;21829:3;21770:67;:::i;:::-;21763:74;;21870:21;21866:1;21861:3;21857:11;21850:42;21920:2;21915:3;21911:12;21904:19;;21756:173;;;:::o;21938:327::-;;22098:67;22162:2;22157:3;22098:67;:::i;:::-;22091:74;;22198:29;22194:1;22189:3;22185:11;22178:50;22256:2;22251:3;22247:12;22240:19;;22084:181;;;:::o;22274:376::-;;22434:67;22498:2;22493:3;22434:67;:::i;:::-;22427:74;;22534:34;22530:1;22525:3;22521:11;22514:55;22603:9;22598:2;22593:3;22589:12;22582:31;22641:2;22636:3;22632:12;22625:19;;22420:230;;;:::o;22659:373::-;;22819:67;22883:2;22878:3;22819:67;:::i;:::-;22812:74;;22919:34;22915:1;22910:3;22906:11;22899:55;22988:6;22983:2;22978:3;22974:12;22967:28;23023:2;23018:3;23014:12;23007:19;;22805:227;;;:::o;23041:332::-;;23201:67;23265:2;23260:3;23201:67;:::i;:::-;23194:74;;23301:34;23297:1;23292:3;23288:11;23281:55;23364:2;23359:3;23355:12;23348:19;;23187:186;;;:::o;23382:371::-;;23542:67;23606:2;23601:3;23542:67;:::i;:::-;23535:74;;23642:34;23638:1;23633:3;23629:11;23622:55;23711:4;23706:2;23701:3;23697:12;23690:26;23744:2;23739:3;23735:12;23728:19;;23528:225;;;:::o;23762:324::-;;23922:67;23986:2;23981:3;23922:67;:::i;:::-;23915:74;;24022:26;24018:1;24013:3;24009:11;24002:47;24077:2;24072:3;24068:12;24061:19;;23908:178;;;:::o;24095:379::-;;24255:67;24319:2;24314:3;24255:67;:::i;:::-;24248:74;;24355:34;24351:1;24346:3;24342:11;24335:55;24424:12;24419:2;24414:3;24410:12;24403:34;24465:2;24460:3;24456:12;24449:19;;24241:233;;;:::o;24545:645::-;24678:4;24673:3;24669:14;24774:4;24767:5;24763:16;24757:23;24786:63;24843:4;24838:3;24834:14;24820:12;24786:63;:::i;:::-;24698:157;24938:4;24931:5;24927:16;24921:23;24950:61;25005:4;25000:3;24996:14;24982:12;24950:61;:::i;:::-;24865:152;25096:4;25089:5;25085:16;25079:23;25108:61;25163:4;25158:3;25154:14;25140:12;25108:61;:::i;:::-;25027:148;24651:539;;;:::o;25260:655::-;25403:4;25398:3;25394:14;25499:4;25492:5;25488:16;25482:23;25511:63;25568:4;25563:3;25559:14;25545:12;25511:63;:::i;:::-;25423:157;25663:4;25656:5;25652:16;25646:23;25675:61;25730:4;25725:3;25721:14;25707:12;25675:61;:::i;:::-;25590:152;25821:4;25814:5;25810:16;25804:23;25833:61;25888:4;25883:3;25879:14;25865:12;25833:61;:::i;:::-;25752:148;25376:539;;;:::o;25922:103::-;25995:24;26013:5;25995:24;:::i;:::-;25990:3;25983:37;25977:48;;:::o;26032:113::-;26115:24;26133:5;26115:24;:::i;:::-;26110:3;26103:37;26097:48;;:::o;26152:126::-;26235:37;26266:5;26235:37;:::i;:::-;26230:3;26223:50;26217:61;;:::o;26285:113::-;26368:24;26386:5;26368:24;:::i;:::-;26363:3;26356:37;26350:48;;:::o;26405:100::-;26476:23;26493:5;26476:23;:::i;:::-;26471:3;26464:36;26458:47;;:::o;26512:110::-;26593:23;26610:5;26593:23;:::i;:::-;26588:3;26581:36;26575:47;;:::o;26629:107::-;26708:22;26724:5;26708:22;:::i;:::-;26703:3;26696:35;26690:46;;:::o;26743:271::-;;26896:93;26985:3;26976:6;26896:93;:::i;:::-;26889:100;;27006:3;26999:10;;26877:137;;;;:::o;27021:222::-;;27148:2;27137:9;27133:18;27125:26;;27162:71;27230:1;27219:9;27215:17;27206:6;27162:71;:::i;:::-;27119:124;;;;:::o;27250:900::-;;27549:3;27538:9;27534:19;27526:27;;27564:79;27640:1;27629:9;27625:17;27616:6;27564:79;:::i;:::-;27654:72;27722:2;27711:9;27707:18;27698:6;27654:72;:::i;:::-;27737;27805:2;27794:9;27790:18;27781:6;27737:72;:::i;:::-;27820;27888:2;27877:9;27873:18;27864:6;27820:72;:::i;:::-;27903:69;27967:3;27956:9;27952:19;27943:6;27903:69;:::i;:::-;27983:73;28051:3;28040:9;28036:19;28027:6;27983:73;:::i;:::-;28067;28135:3;28124:9;28120:19;28111:6;28067:73;:::i;:::-;27520:630;;;;;;;;;;:::o;28157:444::-;;28340:2;28329:9;28325:18;28317:26;;28354:71;28422:1;28411:9;28407:17;28398:6;28354:71;:::i;:::-;28436:72;28504:2;28493:9;28489:18;28480:6;28436:72;:::i;:::-;28519;28587:2;28576:9;28572:18;28563:6;28519:72;:::i;:::-;28311:290;;;;;;:::o;28608:333::-;;28763:2;28752:9;28748:18;28740:26;;28777:71;28845:1;28834:9;28830:17;28821:6;28777:71;:::i;:::-;28859:72;28927:2;28916:9;28912:18;28903:6;28859:72;:::i;:::-;28734:207;;;;;:::o;28948:396::-;;29138:2;29127:9;29123:18;29115:26;;29188:9;29182:4;29178:20;29174:1;29163:9;29159:17;29152:47;29213:121;29329:4;29320:6;29213:121;:::i;:::-;29205:129;;29109:235;;;;:::o;29351:470::-;;29578:2;29567:9;29563:18;29555:26;;29628:9;29622:4;29618:20;29614:1;29603:9;29599:17;29592:47;29653:158;29806:4;29797:6;29653:158;:::i;:::-;29645:166;;29549:272;;;;:::o;29828:210::-;;29949:2;29938:9;29934:18;29926:26;;29963:65;30025:1;30014:9;30010:17;30001:6;29963:65;:::i;:::-;29920:118;;;;:::o;30045:248::-;;30185:2;30174:9;30170:18;30162:26;;30199:84;30280:1;30269:9;30265:17;30256:6;30199:84;:::i;:::-;30156:137;;;;:::o;30300:264::-;;30448:2;30437:9;30433:18;30425:26;;30462:92;30551:1;30540:9;30536:17;30527:6;30462:92;:::i;:::-;30419:145;;;;:::o;30571:258::-;;30716:2;30705:9;30701:18;30693:26;;30730:89;30816:1;30805:9;30801:17;30792:6;30730:89;:::i;:::-;30687:142;;;;:::o;30836:416::-;;31036:2;31025:9;31021:18;31013:26;;31086:9;31080:4;31076:20;31072:1;31061:9;31057:17;31050:47;31111:131;31237:4;31111:131;:::i;:::-;31103:139;;31007:245;;;:::o;31259:416::-;;31459:2;31448:9;31444:18;31436:26;;31509:9;31503:4;31499:20;31495:1;31484:9;31480:17;31473:47;31534:131;31660:4;31534:131;:::i;:::-;31526:139;;31430:245;;;:::o;31682:416::-;;31882:2;31871:9;31867:18;31859:26;;31932:9;31926:4;31922:20;31918:1;31907:9;31903:17;31896:47;31957:131;32083:4;31957:131;:::i;:::-;31949:139;;31853:245;;;:::o;32105:416::-;;32305:2;32294:9;32290:18;32282:26;;32355:9;32349:4;32345:20;32341:1;32330:9;32326:17;32319:47;32380:131;32506:4;32380:131;:::i;:::-;32372:139;;32276:245;;;:::o;32528:416::-;;32728:2;32717:9;32713:18;32705:26;;32778:9;32772:4;32768:20;32764:1;32753:9;32749:17;32742:47;32803:131;32929:4;32803:131;:::i;:::-;32795:139;;32699:245;;;:::o;32951:416::-;;33151:2;33140:9;33136:18;33128:26;;33201:9;33195:4;33191:20;33187:1;33176:9;33172:17;33165:47;33226:131;33352:4;33226:131;:::i;:::-;33218:139;;33122:245;;;:::o;33374:416::-;;33574:2;33563:9;33559:18;33551:26;;33624:9;33618:4;33614:20;33610:1;33599:9;33595:17;33588:47;33649:131;33775:4;33649:131;:::i;:::-;33641:139;;33545:245;;;:::o;33797:416::-;;33997:2;33986:9;33982:18;33974:26;;34047:9;34041:4;34037:20;34033:1;34022:9;34018:17;34011:47;34072:131;34198:4;34072:131;:::i;:::-;34064:139;;33968:245;;;:::o;34220:416::-;;34420:2;34409:9;34405:18;34397:26;;34470:9;34464:4;34460:20;34456:1;34445:9;34441:17;34434:47;34495:131;34621:4;34495:131;:::i;:::-;34487:139;;34391:245;;;:::o;34643:416::-;;34843:2;34832:9;34828:18;34820:26;;34893:9;34887:4;34883:20;34879:1;34868:9;34864:17;34857:47;34918:131;35044:4;34918:131;:::i;:::-;34910:139;;34814:245;;;:::o;35066:416::-;;35266:2;35255:9;35251:18;35243:26;;35316:9;35310:4;35306:20;35302:1;35291:9;35287:17;35280:47;35341:131;35467:4;35341:131;:::i;:::-;35333:139;;35237:245;;;:::o;35489:416::-;;35689:2;35678:9;35674:18;35666:26;;35739:9;35733:4;35729:20;35725:1;35714:9;35710:17;35703:47;35764:131;35890:4;35764:131;:::i;:::-;35756:139;;35660:245;;;:::o;35912:416::-;;36112:2;36101:9;36097:18;36089:26;;36162:9;36156:4;36152:20;36148:1;36137:9;36133:17;36126:47;36187:131;36313:4;36187:131;:::i;:::-;36179:139;;36083:245;;;:::o;36335:416::-;;36535:2;36524:9;36520:18;36512:26;;36585:9;36579:4;36575:20;36571:1;36560:9;36556:17;36549:47;36610:131;36736:4;36610:131;:::i;:::-;36602:139;;36506:245;;;:::o;36758:416::-;;36958:2;36947:9;36943:18;36935:26;;37008:9;37002:4;36998:20;36994:1;36983:9;36979:17;36972:47;37033:131;37159:4;37033:131;:::i;:::-;37025:139;;36929:245;;;:::o;37181:416::-;;37381:2;37370:9;37366:18;37358:26;;37431:9;37425:4;37421:20;37417:1;37406:9;37402:17;37395:47;37456:131;37582:4;37456:131;:::i;:::-;37448:139;;37352:245;;;:::o;37604:416::-;;37804:2;37793:9;37789:18;37781:26;;37854:9;37848:4;37844:20;37840:1;37829:9;37825:17;37818:47;37879:131;38005:4;37879:131;:::i;:::-;37871:139;;37775:245;;;:::o;38027:416::-;;38227:2;38216:9;38212:18;38204:26;;38277:9;38271:4;38267:20;38263:1;38252:9;38248:17;38241:47;38302:131;38428:4;38302:131;:::i;:::-;38294:139;;38198:245;;;:::o;38450:416::-;;38650:2;38639:9;38635:18;38627:26;;38700:9;38694:4;38690:20;38686:1;38675:9;38671:17;38664:47;38725:131;38851:4;38725:131;:::i;:::-;38717:139;;38621:245;;;:::o;38873:416::-;;39073:2;39062:9;39058:18;39050:26;;39123:9;39117:4;39113:20;39109:1;39098:9;39094:17;39087:47;39148:131;39274:4;39148:131;:::i;:::-;39140:139;;39044:245;;;:::o;39296:416::-;;39496:2;39485:9;39481:18;39473:26;;39546:9;39540:4;39536:20;39532:1;39521:9;39517:17;39510:47;39571:131;39697:4;39571:131;:::i;:::-;39563:139;;39467:245;;;:::o;39719:416::-;;39919:2;39908:9;39904:18;39896:26;;39969:9;39963:4;39959:20;39955:1;39944:9;39940:17;39933:47;39994:131;40120:4;39994:131;:::i;:::-;39986:139;;39890:245;;;:::o;40142:416::-;;40342:2;40331:9;40327:18;40319:26;;40392:9;40386:4;40382:20;40378:1;40367:9;40363:17;40356:47;40417:131;40543:4;40417:131;:::i;:::-;40409:139;;40313:245;;;:::o;40565:416::-;;40765:2;40754:9;40750:18;40742:26;;40815:9;40809:4;40805:20;40801:1;40790:9;40786:17;40779:47;40840:131;40966:4;40840:131;:::i;:::-;40832:139;;40736:245;;;:::o;40988:322::-;;41165:2;41154:9;41150:18;41142:26;;41179:121;41297:1;41286:9;41282:17;41273:6;41179:121;:::i;:::-;41136:174;;;;:::o;41317:436::-;;41496:2;41485:9;41481:18;41473:26;;41510:71;41578:1;41567:9;41563:17;41554:6;41510:71;:::i;:::-;41592:70;41658:2;41647:9;41643:18;41634:6;41592:70;:::i;:::-;41673;41739:2;41728:9;41724:18;41715:6;41673:70;:::i;:::-;41467:286;;;;;;:::o;41760:222::-;;41887:2;41876:9;41872:18;41864:26;;41901:71;41969:1;41958:9;41954:17;41945:6;41901:71;:::i;:::-;41858:124;;;;:::o;41989:700::-;;42244:3;42233:9;42229:19;42221:27;;42259:71;42327:1;42316:9;42312:17;42303:6;42259:71;:::i;:::-;42341:80;42417:2;42406:9;42402:18;42393:6;42341:80;:::i;:::-;42432:72;42500:2;42489:9;42485:18;42476:6;42432:72;:::i;:::-;42515:80;42591:2;42580:9;42576:18;42567:6;42515:80;:::i;:::-;42606:73;42674:3;42663:9;42659:19;42650:6;42606:73;:::i;:::-;42215:474;;;;;;;;:::o;42696:684::-;;42943:3;42932:9;42928:19;42920:27;;42958:71;43026:1;43015:9;43011:17;43002:6;42958:71;:::i;:::-;43040:80;43116:2;43105:9;43101:18;43092:6;43040:80;:::i;:::-;43131:72;43199:2;43188:9;43184:18;43175:6;43131:72;:::i;:::-;43214;43282:2;43271:9;43267:18;43258:6;43214:72;:::i;:::-;43297:73;43365:3;43354:9;43350:19;43341:6;43297:73;:::i;:::-;42914:466;;;;;;;;:::o;43387:684::-;;43634:3;43623:9;43619:19;43611:27;;43649:71;43717:1;43706:9;43702:17;43693:6;43649:71;:::i;:::-;43731:72;43799:2;43788:9;43784:18;43775:6;43731:72;:::i;:::-;43814;43882:2;43871:9;43867:18;43858:6;43814:72;:::i;:::-;43897:80;43973:2;43962:9;43958:18;43949:6;43897:80;:::i;:::-;43988:73;44056:3;44045:9;44041:19;44032:6;43988:73;:::i;:::-;43605:466;;;;;;;;:::o;44078:321::-;;44227:2;44216:9;44212:18;44204:26;;44241:71;44309:1;44298:9;44294:17;44285:6;44241:71;:::i;:::-;44323:66;44385:2;44374:9;44370:18;44361:6;44323:66;:::i;:::-;44198:201;;;;;:::o;44406:329::-;;44559:2;44548:9;44544:18;44536:26;;44573:71;44641:1;44630:9;44626:17;44617:6;44573:71;:::i;:::-;44655:70;44721:2;44710:9;44706:18;44697:6;44655:70;:::i;:::-;44530:205;;;;;:::o;44742:440::-;;44923:2;44912:9;44908:18;44900:26;;44937:69;45003:1;44992:9;44988:17;44979:6;44937:69;:::i;:::-;45017:72;45085:2;45074:9;45070:18;45061:6;45017:72;:::i;:::-;45100;45168:2;45157:9;45153:18;45144:6;45100:72;:::i;:::-;44894:288;;;;;;:::o;45189:164::-;;45288:3;45280:11;;45326:4;45321:3;45317:14;45309:22;;45274:79;;;:::o;45360:176::-;;45471:3;45463:11;;45509:4;45504:3;45500:14;45492:22;;45457:79;;;:::o;45543:150::-;;45665:5;45659:12;45649:22;;45630:63;;;:::o;45700:162::-;;45834:5;45828:12;45818:22;;45799:63;;;:::o;45869:121::-;;45962:5;45956:12;45946:22;;45927:63;;;:::o;45997:121::-;;46108:4;46103:3;46099:14;46091:22;;46085:33;;;:::o;46125:133::-;;46248:4;46243:3;46239:14;46231:22;;46225:33;;;:::o;46266:178::-;;46396:6;46391:3;46384:19;46433:4;46428:3;46424:14;46409:29;;46377:67;;;;:::o;46453:203::-;;46608:6;46603:3;46596:19;46645:4;46640:3;46636:14;46621:29;;46589:67;;;;:::o;46665:144::-;;46800:3;46785:18;;46778:31;;;;:::o;46818:163::-;;46933:6;46928:3;46921:19;46970:4;46965:3;46961:14;46946:29;;46914:67;;;;:::o;46989:91::-;;47051:24;47069:5;47051:24;:::i;:::-;47040:35;;47034:46;;;:::o;47087:85::-;;47160:5;47153:13;47146:21;47135:32;;47129:43;;;:::o;47179:72::-;;47241:5;47230:16;;47224:27;;;:::o;47258:104::-;;47333:24;47351:5;47333:24;:::i;:::-;47322:35;;47316:46;;;:::o;47369:112::-;;47452:24;47470:5;47452:24;:::i;:::-;47441:35;;47435:46;;;:::o;47488:109::-;;47568:24;47586:5;47568:24;:::i;:::-;47557:35;;47551:46;;;:::o;47604:71::-;;47665:5;47654:16;;47648:27;;;:::o;47682:113::-;;47755:34;47748:5;47744:46;47733:57;;47727:68;;;:::o;47802:121::-;;47875:42;47868:5;47864:54;47853:65;;47847:76;;;:::o;47930:72::-;;47992:5;47981:16;;47975:27;;;:::o;48009:96::-;;48081:18;48074:5;48070:30;48059:41;;48053:52;;;:::o;48112:81::-;;48183:4;48176:5;48172:16;48161:27;;48155:38;;;:::o;48200:129::-;;48287:37;48318:5;48287:37;:::i;:::-;48274:50;;48268:61;;;:::o;48336:147::-;;48428:50;48472:5;48428:50;:::i;:::-;48415:63;;48409:74;;;:::o;48490:121::-;;48582:24;48600:5;48582:24;:::i;:::-;48569:37;;48563:48;;;:::o;48618:163::-;;48718:58;48770:5;48718:58;:::i;:::-;48705:71;;48699:82;;;:::o;48788:129::-;;48888:24;48906:5;48888:24;:::i;:::-;48875:37;;48869:48;;;:::o;48924:157::-;;49021:55;49070:5;49021:55;:::i;:::-;49008:68;;49002:79;;;:::o;49088:126::-;;49185:24;49203:5;49185:24;:::i;:::-;49172:37;;49166:48;;;:::o;49221:116::-;;49308:24;49326:5;49308:24;:::i;:::-;49295:37;;49289:48;;;:::o;49344:108::-;;49423:24;49441:5;49423:24;:::i;:::-;49410:37;;49404:48;;;:::o;49459:121::-;;49538:37;49569:5;49538:37;:::i;:::-;49525:50;;49519:61;;;:::o;49587:108::-;;49666:24;49684:5;49666:24;:::i;:::-;49653:37;;49647:48;;;:::o;49703:268::-;49768:1;49775:101;49789:6;49786:1;49783:13;49775:101;;;49865:1;49860:3;49856:11;49850:18;49846:1;49841:3;49837:11;49830:39;49811:2;49808:1;49804:10;49799:15;;49775:101;;;49891:6;49888:1;49885:13;49882:2;;;49956:1;49947:6;49942:3;49938:16;49931:27;49882:2;49752:219;;;;:::o;49979:117::-;50048:24;50066:5;50048:24;:::i;:::-;50041:5;50038:35;50028:2;;50087:1;50084;50077:12;50028:2;50022:74;:::o;50103:111::-;50169:21;50184:5;50169:21;:::i;:::-;50162:5;50159:32;50149:2;;50205:1;50202;50195:12;50149:2;50143:71;:::o;50221:117::-;50290:24;50308:5;50290:24;:::i;:::-;50283:5;50280:35;50270:2;;50329:1;50326;50319:12;50270:2;50264:74;:::o;50345:143::-;50427:37;50458:5;50427:37;:::i;:::-;50420:5;50417:48;50407:2;;50479:1;50476;50469:12;50407:2;50401:87;:::o;50495:159::-;50585:45;50624:5;50585:45;:::i;:::-;50578:5;50575:56;50565:2;;50645:1;50642;50635:12;50565:2;50559:95;:::o;50661:153::-;50748:42;50784:5;50748:42;:::i;:::-;50741:5;50738:53;50728:2;;50805:1;50802;50795:12;50728:2;50722:92;:::o;50821:117::-;50890:24;50908:5;50890:24;:::i;:::-;50883:5;50880:35;50870:2;;50929:1;50926;50919:12;50870:2;50864:74;:::o;50945:113::-;51012:22;51028:5;51012:22;:::i;:::-;51005:5;51002:33;50992:2;;51049:1;51046;51039:12;50992:2;50986:72;:::o"
            },
            "methodIdentifiers": {
              "REWARD()": "cab34c08",
              "addFunder(address)": "1bbe9d8c",
              "addPool(uint256,address,address)": "f624d2c5",
              "addPools(uint256[],address[],address[])": "7973aa7b",
              "addedTokens(address)": "79d12ffb",
              "deposit(uint256,uint256,address)": "8dbdbe6d",
              "depositWithPermit(uint256,uint256,address,uint256,uint8,bytes32,bytes32)": "2273ee6e",
              "disableMigrator()": "f6d676be",
              "emergencyWithdraw(uint256,address)": "2f940c70",
              "extendRewardsViaDuration(uint256,uint256)": "933f084f",
              "extendRewardsViaFunding(uint256,uint256)": "19610b2b",
              "fundRewards(uint256,uint256)": "28662551",
              "harvest(uint256,address)": "18fccc76",
              "isFunder(address)": "1ea48870",
              "lpToken(uint256)": "78ed5d1f",
              "lpTokens()": "34c0b46b",
              "massUpdateAllPools()": "c1bcb493",
              "massUpdatePools(uint256[])": "57a5b58c",
              "migrate(uint256)": "454b0608",
              "migrationDisabled()": "0c812af3",
              "migrator()": "7cd07e47",
              "owner()": "8da5cb5b",
              "pendingReward(uint256,address)": "98969e82",
              "poolInfo(uint256)": "1526fe27",
              "poolInfos()": "61f8e66f",
              "poolLength()": "081e3eda",
              "removeFunder(address)": "dcd18dd4",
              "renounceOwnership()": "715018a6",
              "resetRewardsDuration(uint256)": "4b87e90f",
              "rewardPerSecond()": "8f10369a",
              "rewarder(uint256)": "c346253d",
              "rewardsExpiration()": "b76f4aeb",
              "setMigrator(address)": "23cf3118",
              "setPool(uint256,uint256,address,bool)": "b763e7c4",
              "setPools(uint256[],uint256[],address[],bool[])": "3ef6db91",
              "totalAllocPoint()": "17caf6f1",
              "transferOwnership(address)": "f2fde38b",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b",
              "withdraw(uint256,uint256,address)": "0ad58d2f",
              "withdrawAndHarvest(uint256,uint256,address)": "d1abb907"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_firstOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"EmergencyWithdraw\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"funder\",\"type\":\"address\"}],\"name\":\"FunderAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"funder\",\"type\":\"address\"}],\"name\":\"FunderRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Harvest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardPerSecond\",\"type\":\"uint256\"}],\"name\":\"LogRewardPerSecond\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardsExpiration\",\"type\":\"uint256\"}],\"name\":\"LogRewardsExpiration\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"Migrate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MigratorDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"migrator\",\"type\":\"address\"}],\"name\":\"MigratorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"lpToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"}],\"name\":\"PoolAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allocPoint\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IRewarder\",\"name\":\"rewarder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"PoolSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accRewardPerShare\",\"type\":\"uint256\"}],\"name\":\"PoolUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"REWARD\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_funder\",\"type\":\"address\"}],\"name\":\"addFunder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"}],\"name\":\"addPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_allocPoints\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"_lpTokens\",\"type\":\"address[]\"},{\"internalType\":\"contract IRewarder[]\",\"name\":\"_rewarders\",\"type\":\"address[]\"}],\"name\":\"addPools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"addedTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"depositWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"extension\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFunding\",\"type\":\"uint256\"}],\"name\":\"extendRewardsViaDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"funding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minExtension\",\"type\":\"uint256\"}],\"name\":\"extendRewardsViaFunding\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"funding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"fundRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"harvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_funder\",\"type\":\"address\"}],\"name\":\"isFunder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lpToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lpTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"massUpdateAllPools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"}],\"name\":\"massUpdatePools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrationDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"pendingReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pending\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"poolInfo\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"accRewardPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolInfos\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accRewardPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct MiniChefV2.PoolInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"pools\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_funder\",\"type\":\"address\"}],\"name\":\"removeFunder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"resetRewardsDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rewarder\",\"outputs\":[{\"internalType\":\"contract IRewarder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardsExpiration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMigratorChef\",\"name\":\"_migrator\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_allocPoint\",\"type\":\"uint256\"},{\"internalType\":\"contract IRewarder\",\"name\":\"_rewarder\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"overwrite\",\"type\":\"bool\"}],\"name\":\"setPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"allocPoints\",\"type\":\"uint256[]\"},{\"internalType\":\"contract IRewarder[]\",\"name\":\"rewarders\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"overwrites\",\"type\":\"bool[]\"}],\"name\":\"setPools\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAllocPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accRewardPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct MiniChefV2.PoolInfo\",\"name\":\"pool\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"rewardDebt\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAndHarvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addFunder(address)\":{\"params\":{\"_funder\":\"The address to be added\"}},\"constructor\":{\"params\":{\"_firstOwner\":\"Initial owner of the contract.\",\"_rewardToken\":\"The reward token contract address.\"}},\"deposit(uint256,uint256,address)\":{\"params\":{\"amount\":\"LP token amount to deposit.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"The receiver of `amount` deposit benefit.\"}},\"emergencyWithdraw(uint256,address)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"extendRewardsViaDuration(uint256,uint256)\":{\"params\":{\"extension\":\"Time (seconds) to increase the rewards duration\",\"maxFunding\":\"Maximum amount of the reward token that can be used\"}},\"extendRewardsViaFunding(uint256,uint256)\":{\"params\":{\"funding\":\"Amount of reward token to add\"}},\"fundRewards(uint256,uint256)\":{\"params\":{\"duration\":\"Total time (seconds) during which the additional funds are distributed\",\"funding\":\"Amount of reward token to add\"}},\"harvest(uint256,address)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of rewards.\"}},\"massUpdatePools(uint256[])\":{\"params\":{\"pids\":\"Pool IDs of all to be updated. Make sure to update all active pools.\"}},\"migrate(uint256)\":{\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingReward(uint256,address)\":{\"params\":{\"_pid\":\"The index of the pool. See `poolInfo`.\",\"_user\":\"Address of user.\"},\"returns\":{\"pending\":\"reward for a given user.\"}},\"removeFunder(address)\":{\"params\":{\"_funder\":\"The address to be removed\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"resetRewardsDuration(uint256)\":{\"params\":{\"duration\":\"Time (seconds) to fully distribute the currently present rewards\"}},\"setMigrator(address)\":{\"params\":{\"_migrator\":\"The contract address to set.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updatePool(uint256)\":{\"params\":{\"pid\":\"The index of the pool. See `poolInfo`.\"},\"returns\":{\"pool\":\"Returns the pool that was updated.\"}},\"withdraw(uint256,uint256,address)\":{\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens.\"}},\"withdrawAndHarvest(uint256,uint256,address)\":{\"params\":{\"amount\":\"LP token amount to withdraw.\",\"pid\":\"The index of the pool. See `poolInfo`.\",\"to\":\"Receiver of the LP tokens and rewards.\"}}},\"stateVariables\":{\"addedTokens\":{\"details\":\"Tokens added\"},\"funder\":{\"details\":\"Addresses allowed to change rewardsExpiration duration\"},\"rewardsExpiration\":{\"details\":\"Block time when the rewards per second stops\"},\"totalAllocPoint\":{\"details\":\"Total allocation points. Must be the sum of all allocation points in all pools.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"REWARD()\":{\"notice\":\"Address of reward (PNG) contract.\"},\"addFunder(address)\":{\"notice\":\"Give permission for an address to change the rewards duration\"},\"addPool(uint256,address,address)\":{\"notice\":\"Add a single reward pool after appropriately updating all pools\"},\"addPools(uint256[],address[],address[])\":{\"notice\":\"Add multiple reward pools after appropriately updating all pools\"},\"deposit(uint256,uint256,address)\":{\"notice\":\"Deposit LP tokens to MCV2 for reward allocation.\"},\"disableMigrator()\":{\"notice\":\"Permanently disable the `migrator` functionality. This can only effectively be called once.\"},\"emergencyWithdraw(uint256,address)\":{\"notice\":\"Withdraw without caring about rewards. EMERGENCY ONLY.\"},\"extendRewardsViaDuration(uint256,uint256)\":{\"notice\":\"Extends the rolling reward period by adding funds without changing the reward rate\"},\"extendRewardsViaFunding(uint256,uint256)\":{\"notice\":\"Extends the rolling reward period by adding funds without changing the reward rateminExtension Minimum time (seconds) that the reward duration must be increased\"},\"fundRewards(uint256,uint256)\":{\"notice\":\"Add funding and potentially extend duration of the rolling reward period\"},\"harvest(uint256,address)\":{\"notice\":\"Harvest proceeds for transaction sender to `to`.\"},\"isFunder(address)\":{\"notice\":\"Returns the status of an address as a funder\"},\"lpToken(uint256)\":{\"notice\":\"Address of the LP token for each MCV2 pool.\"},\"lpTokens()\":{\"notice\":\"Returns list of all lpTokens for ease of interfacing\"},\"massUpdateAllPools()\":{\"notice\":\"Update reward variables for all pools. Be careful of gas spending!\"},\"massUpdatePools(uint256[])\":{\"notice\":\"Update reward variables for all pools. Be careful of gas spending!\"},\"migrate(uint256)\":{\"notice\":\"Migrate LP token to another LP contract through the `migrator` contract.\"},\"pendingReward(uint256,address)\":{\"notice\":\"View function to see pending reward on frontend.\"},\"poolInfo(uint256)\":{\"notice\":\"Info of each MCV2 pool.\"},\"poolInfos()\":{\"notice\":\"Returns list of all pool infos for ease of interfacing\"},\"poolLength()\":{\"notice\":\"Returns the number of MCV2 pools.\"},\"removeFunder(address)\":{\"notice\":\"Remove permission for an address to change the rewards duration\"},\"resetRewardsDuration(uint256)\":{\"notice\":\"Allocate the existing rewards during a newly defined period starting now\"},\"rewarder(uint256)\":{\"notice\":\"Address of each `IRewarder` contract in MCV2.\"},\"setMigrator(address)\":{\"notice\":\"Set the `migrator` contract. Can only be called by the owner.\"},\"setPool(uint256,uint256,address,bool)\":{\"notice\":\"Change information for one pool after appropriately updating all pools\"},\"setPools(uint256[],uint256[],address[],bool[])\":{\"notice\":\"Change information for multiple pools after appropriately updating all pools\"},\"updatePool(uint256)\":{\"notice\":\"Update reward variables of the given pool.\"},\"userInfo(uint256,address)\":{\"notice\":\"Info of each user that stakes LP tokens.\"},\"withdraw(uint256,uint256,address)\":{\"notice\":\"Withdraw LP tokens from MCV2.\"},\"withdrawAndHarvest(uint256,uint256,address)\":{\"notice\":\"Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\"}},\"notice\":\"The (older) MiniChefV2 contract gives out a reward tokens per block.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MiniChefV2.sol\":\"MiniChefV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://149f2f758deda74a5e855ff934fe93daadadb583d09440832e908365f9235d29\",\"dweb:/ipfs/QmUsZkg1zhehPbPBbf15Pv5BEnP4eaKMpJ1cBN9LGaZurC\"]},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b529d3c0ce62bf9fe78f919076e8bf6a1f06803a8977bcabfde79f1979129a6c\",\"dweb:/ipfs/QmbqHLBPKtSb9wDCrzxeRSRmZJpNdstKjCYXo5EcYEFL4e\"]},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://455e6b5fc9912a2660e6c7a5ed664f89400cc80b3328e50134196d6e21773461\",\"dweb:/ipfs/QmUofeuCbKDdK9DMVo5A7AHys6MwqYmNQM6HaryLbr9g2g\"]},\"contracts/MiniChefV2.sol\":{\"keccak256\":\"0x0f3f4b023258e33c317aafa1a6a076141a9dcf3b4fe7e46f7f1f223adc7e22a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99199574335411542ffb057fb1fc7064e2b44443ab40cc912083c3b816ec986b\",\"dweb:/ipfs/QmaVTW3h3K1fBusiUm7RFVJxPrcE6Tf2ULbVe1kP9wNSnN\"]},\"contracts/interfaces/IRewarder.sol\":{\"keccak256\":\"0x0129f57bda3731f913946adf54cdeafa96e342f5ba937f4d73e5b553da06aa9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0098f65878a449c2d96f5617020180c6f453cb618bccf58da436d68d3e355ecb\",\"dweb:/ipfs/QmaFVyYo6t5Z5Lh3mW5STrh6Da485Yh1PAsiSWpagVQ1jx\"]},\"contracts/libraries/SignedSafeMath.sol\":{\"keccak256\":\"0x74a05f6351e182cc589e99adaf3fecfc03f984c964c0c1e2fca3e59b9124a0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcb902caf112ebdc471a147f8e8459c9eeb3fd7980d4d112d561046d16a22a53\",\"dweb:/ipfs/QmfSxZKE3RP3gTPws1MEDWThhorQx4ApEr18FoBBdx9w2t\"]},\"openzeppelin-contracts-legacy/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-legacy/access/Ownable.sol\":{\"keccak256\":\"0xf7c39c7e6d06ed3bda90cfefbcbf2ddc32c599c3d6721746546ad64946efccaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb57a28e189cd8b05748db44bdd51d608e6f1364dd1b35ad921e1bc82c10631e\",\"dweb:/ipfs/QmaWWTBbVu2pRR9XUbE4iC159NoP59cRF9ZJwhf4ghFN9i\"]}},\"version\":1}"
        }
      },
      "contracts/MockContract.sol": {
        "MockContract": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [],
              "name": "DEFAULT_FALLBACK_VALUE",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MOCKS_LIST_END",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MOCKS_LIST_END_HASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MOCKS_LIST_START",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "SENTINEL_ANY_MOCKS",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenAnyReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenAnyReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenAnyReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenAnyReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "givenAnyRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenAnyRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "givenAnyRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenCalldataReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenCalldataReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenCalldataReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenCalldataRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenMethodReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenMethodReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenMethodReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenMethodRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "invocationCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "invocationCountForCalldata",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "invocationCountForMethod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "reset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "methodId",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "originalMsgData",
                  "type": "bytes"
                }
              ],
              "name": "updateInvocationCount",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526000604051602001808215158152602001915050604051602081830303815290604052600b90805190602001906200003e9291906200017e565b503480156200004c57600080fd5b506040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152506000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000209080519060200190620000ca9291906200017e565b507f0100000000000000000000000000000000000000000000000000000000000000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555062000224565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001c157805160ff1916838001178555620001f2565b82800160010185558215620001f2579182015b82811115620001f1578251825591602001919060010190620001d4565b5b50905062000201919062000205565b5090565b5b808211156200022057600081600090555060010162000206565b5090565b6139b180620002346000396000f3fe6080604052600436106101dc5760003560e01c80637cd96ee411610102578063cf11ff5d11610095578063e211b8a511610064578063e211b8a51461188a578063eb861f69146118a1578063f07da22914611927578063f5afa9c114611971576101dd565b8063cf11ff5d146116b7578063d6fe97781461175d578063d73ca0ac146117e3578063d826f88f14611873576101dd565b8063aa788c55116100d1578063aa788c5514611475578063af21ac78146114fb578063b3901f2914611536578063c6ee167f146115dc576101dd565b80637cd96ee4146111a957806387abab65146112395780639a1dc86b146112bf5780639eaeed751461139a576101dd565b8063586984a41161017a57806367aad04a1161014957806367aad04a14611015578063682b47971461104057806368ab6f2f146110915780636f40075614611117576101dd565b8063586984a414610d1d57806358cbc02514610db75780635a3855ab14610ea85780636193659414610f3a576101dd565b80632ed238dc116101b65780632ed238dc14610c0457806336ff0ee514610c2f5780633956dc6b14610c6c5780634937c4f614610c83576101dd565b80630a20119f14610ac3578063122aea8114610aee57806321fed4d614610b7e576101dd565b5b600080359050600160028111156101f057fe5b6001600036604051808383808284378083019250505092505050908152602001604051809103902060009054906101000a900460ff16600281111561023157fe5b141561031d57600360003660405180838380828437808301925050509250505090815260200160405180910390206040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561030e5780601f106102e35761010080835404028352916020019161030e565b820191906000526020600020905b8154815290600101906020018083116102f157829003601f168201915b50509250505060405180910390fd5b60028081111561032957fe5b6001600036604051808383808284378083019250505092505050908152602001604051809103902060009054906101000a900460ff16600281111561036a57fe5b141561037957610378611a01565b5b6060600260003660405180838380828437808301925050509250505090815260200160405180910390208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104375780601f1061040c57610100808354040283529160200191610437565b820191906000526020600020905b81548152906001019060200180831161041a57829003601f168201915b50505050509050600081511415610746576001600281111561045557fe5b60066000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1660028111156104bf57fe5b14156105d45760086000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156105c55780601f1061059a576101008083540402835291602001916105c5565b820191906000526020600020905b8154815290600101906020018083116105a857829003601f168201915b50509250505060405180910390fd5b6002808111156105e057fe5b60066000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16600281111561064a57fe5b141561065957610658611a01565b5b60076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561073e5780601f106107135761010080835404028352916020019161073e565b820191906000526020600020905b81548152906001019060200180831161072157829003601f168201915b505050505090505b600081511415610912576001600281111561075d57fe5b600a60009054906101000a900460ff16600281111561077857fe5b141561083e57600c6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b50509250505060405180910390fd5b60028081111561084a57fe5b600a60009054906101000a900460ff16600281111561086557fe5b141561087457610873611a01565b5b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090a5780601f106108df5761010080835404028352916020019161090a565b820191906000526020600020905b8154815290600101906020018083116108ed57829003601f168201915b505050505090505b60603073ffffffffffffffffffffffffffffffffffffffff16620186a08460003660405160240180847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506040516020818303038152906040527f58cbc025000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610a445780518252602082019150602081019050602083039250610a21565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114610aa7576040519150601f19603f3d011682016040523d82523d6000602084013e610aac565b606091505b509150506000815114610abb57fe5b815182602001f35b348015610acf57600080fd5b50610ad8611a26565b6040518082815260200191505060405180910390f35b348015610afa57600080fd5b50610b03611a30565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b43578082015181840152602081019050610b28565b50505050905090810190601f168015610b705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b8a57600080fd5b50610c0260048036036020811015610ba157600080fd5b8101908080359060200190640100000000811115610bbe57600080fd5b820183602082011115610bd057600080fd5b80359060200191846001830284011164010000000083111715610bf257600080fd5b9091929391929390505050611a56565b005b348015610c1057600080fd5b50610c19611af0565b6040518082815260200191505060405180910390f35b348015610c3b57600080fd5b50610c6a60048036036020811015610c5257600080fd5b81019080803515159060200190929190505050611b30565b005b348015610c7857600080fd5b50610c81611b5b565b005b348015610c8f57600080fd5b50610d0760048036036020811015610ca657600080fd5b8101908080359060200190640100000000811115610cc357600080fd5b820183602082011115610cd557600080fd5b80359060200191846001830284011164010000000083111715610cf757600080fd5b9091929391929390505050611b81565b6040518082815260200191505060405180910390f35b348015610d2957600080fd5b50610da160048036036020811015610d4057600080fd5b8101908080359060200190640100000000811115610d5d57600080fd5b820183602082011115610d6f57600080fd5b80359060200191846001830284011164010000000083111715610d9157600080fd5b9091929391929390505050611c3f565b6040518082815260200191505060405180910390f35b348015610dc357600080fd5b50610ea660048036036040811015610dda57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190640100000000811115610e2057600080fd5b820183602082011115610e3257600080fd5b80359060200191846001830284011164010000000083111715610e5457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611c96565b005b348015610eb457600080fd5b50610f3860048036036040811015610ecb57600080fd5b8101908080359060200190640100000000811115610ee857600080fd5b820183602082011115610efa57600080fd5b80359060200191846001830284011164010000000083111715610f1c57600080fd5b9091929391929390803515159060200190929190505050611e3d565b005b348015610f4657600080fd5b5061101360048036036040811015610f5d57600080fd5b8101908080359060200190640100000000811115610f7a57600080fd5b820183602082011115610f8c57600080fd5b80359060200191846001830284011164010000000083111715610fae57600080fd5b909192939192939080359060200190640100000000811115610fcf57600080fd5b820183602082011115610fe157600080fd5b8035906020019184600183028401116401000000008311171561100357600080fd5b9091929391929390505050611eaf565b005b34801561102157600080fd5b5061102a611f47565b6040518082815260200191505060405180910390f35b34801561104c57600080fd5b5061108f6004803603602081101561106357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6b565b005b34801561109d57600080fd5b50611115600480360360208110156110b457600080fd5b81019080803590602001906401000000008111156110d157600080fd5b8201836020820111156110e357600080fd5b8035906020019184600183028401116401000000008311171561110557600080fd5b9091929391929390505050611f95565b005b34801561112357600080fd5b506111a76004803603604081101561113a57600080fd5b810190808035906020019064010000000081111561115757600080fd5b82018360208201111561116957600080fd5b8035906020019184600183028401116401000000008311171561118b57600080fd5b9091929391929390803515159060200190929190505050612067565b005b3480156111b557600080fd5b506111be6120d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156111fe5780820151818401526020810190506111e3565b50505050905090810190601f16801561122b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561124557600080fd5b506112bd6004803603602081101561125c57600080fd5b810190808035906020019064010000000081111561127957600080fd5b82018360208201111561128b57600080fd5b803590602001918460018302840111640100000000831117156112ad57600080fd5b9091929391929390505050612112565b005b3480156112cb57600080fd5b50611398600480360360408110156112e257600080fd5b81019080803590602001906401000000008111156112ff57600080fd5b82018360208201111561131157600080fd5b8035906020019184600183028401116401000000008311171561133357600080fd5b90919293919293908035906020019064010000000081111561135457600080fd5b82018360208201111561136657600080fd5b8035906020019184600183028401116401000000008311171561138857600080fd5b909192939192939050505061214c565b005b3480156113a657600080fd5b50611473600480360360408110156113bd57600080fd5b81019080803590602001906401000000008111156113da57600080fd5b8201836020820111156113ec57600080fd5b8035906020019184600183028401116401000000008311171561140e57600080fd5b90919293919293908035906020019064010000000081111561142f57600080fd5b82018360208201111561144157600080fd5b8035906020019184600183028401116401000000008311171561146357600080fd5b9091929391929390505050612281565b005b34801561148157600080fd5b506114f96004803603602081101561149857600080fd5b81019080803590602001906401000000008111156114b557600080fd5b8201836020820111156114c757600080fd5b803590602001918460018302840111640100000000831117156114e957600080fd5b9091929391929390505050612353565b005b34801561150757600080fd5b506115346004803603602081101561151e57600080fd5b8101908080359060200190929190505050612425565b005b34801561154257600080fd5b506115da6004803603604081101561155957600080fd5b810190808035906020019064010000000081111561157657600080fd5b82018360208201111561158857600080fd5b803590602001918460018302840111640100000000831117156115aa57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612439565b005b3480156115e857600080fd5b506116b5600480360360408110156115ff57600080fd5b810190808035906020019064010000000081111561161c57600080fd5b82018360208201111561162e57600080fd5b8035906020019184600183028401116401000000008311171561165057600080fd5b90919293919293908035906020019064010000000081111561167157600080fd5b82018360208201111561168357600080fd5b803590602001918460018302840111640100000000831117156116a557600080fd5b90919293919293905050506124aa565b005b3480156116c357600080fd5b5061175b600480360360408110156116da57600080fd5b81019080803590602001906401000000008111156116f757600080fd5b82018360208201111561170957600080fd5b8035906020019184600183028401116401000000008311171561172b57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612542565b005b34801561176957600080fd5b506117e16004803603602081101561178057600080fd5b810190808035906020019064010000000081111561179d57600080fd5b8201836020820111156117af57600080fd5b803590602001918460018302840111640100000000831117156117d157600080fd5b90919293919293905050506125b3565b005b3480156117ef57600080fd5b506118716004803603604081101561180657600080fd5b810190808035906020019064010000000081111561182357600080fd5b82018360208201111561183557600080fd5b8035906020019184600183028401116401000000008311171561185757600080fd5b909192939192939080359060200190929190505050612604565b005b34801561187f57600080fd5b5061188861265f565b005b34801561189657600080fd5b5061189f612edc565b005b3480156118ad57600080fd5b50611925600480360360208110156118c457600080fd5b81019080803590602001906401000000008111156118e157600080fd5b8201836020820111156118f357600080fd5b8035906020019184600183028401116401000000008311171561191557600080fd5b9091929391929390505050612f28565b005b34801561193357600080fd5b5061193c61300c565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561197d57600080fd5b506119ff6004803603604081101561199457600080fd5b81019080803590602001906401000000008111156119b157600080fd5b8201836020820111156119c357600080fd5b803590602001918460018302840111640100000000831117156119e557600080fd5b909192939192939080359060200190929190505050613030565b005b5b600115611a245760006060600060c060008060066107d05a03f1905050611a02565b565b6000600d54905090565b600060405160200180821515815260200191505060405160208183030381529060405281565b600260018383604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff02191690836002811115611a9a57fe5b0217905550611aec82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b5050565b6040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152508051906020012081565b600081611b3e576000611b41565b60015b60ff169050611b57611b5282613176565b6131d1565b5050565b6002600a60006101000a81548160ff02191690836002811115611b7a57fe5b0217905550565b600080611bd184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b905060096000600e548360405160200180838152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600401925050506040516020818303038152906040528051906020012081526020019081526020016000205491505092915050565b600060046000600e5485856040516020018084815260200183838082843780830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002054905092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613951602b913960400191505060405180910390fd5b6001600d60008282540192505081905550600160096000600e548560405160200180838152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526004019250505060405160208183030381529060405280519060200120815260200190815260200160002060008282540192505081905550600160046000600e54846040516020018083815260200182805190602001908083835b60208310611de25780518252602082019150602081019050602083039250611dbf565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052805190602001208152602001908152602001600020600082825401925050819055505050565b600081611e4b576000611e4e565b60015b60ff169050611ea984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611ea483613176565b61329d565b50505050565b611f4184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061329d565b50505050565b7f010000000000000000000000000000000000000000000000000000000000000081565b611f92611f8d8273ffffffffffffffffffffffffffffffffffffffff16613176565b6131d1565b50565b6000611fe483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600260066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561205457fe5b0217905550612062816133b3565b505050565b600081612075576000612078565b60015b60ff1690506120d384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506120ce83613176565b6135b8565b50505050565b6040518060400160405280600481526020017f307866660000000000000000000000000000000000000000000000000000000081525081565b6001600a60006101000a81548160ff0219169083600281111561213157fe5b02179055508181600c91906121479291906136ac565b505050565b600061219b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600160066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561220b57fe5b0217905550828260086000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002091906122709291906136ac565b5061227a816133b3565b5050505050565b6001808585604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff021916908360028111156122c457fe5b0217905550818160038686604051808383808284378083019250505092505050908152602001604051809103902091906122ff9291906136ac565b5061234d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b50505050565b60006123a283838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600160066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561241257fe5b0217905550612420816133b3565b505050565b61243661243182613176565b6131d1565b50565b6124a583838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506124a08373ffffffffffffffffffffffffffffffffffffffff16613176565b61329d565b505050565b61253c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506135b8565b50505050565b6125ae83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506125a98373ffffffffffffffffffffffffffffffffffffffff16613176565b6135b8565b505050565b61260082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506131d1565b5050565b61265a83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061265583613176565b61329d565b505050565b60606000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127275780601f106126fc57610100808354040283529160200191612727565b820191906000526020600020905b81548152906001019060200180831161270a57829003601f168201915b505050505090506000818051906020012090505b6040518060400160405280600481526020017f3078666600000000000000000000000000000000000000000000000000000000815250805190602001208114612a155760006001836040518082805190602001908083835b602083106127b65780518252602082019150602081019050602083039250612793565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083600281111561280457fe5b0217905550604051806020016040528060008152506002836040518082805190602001908083835b6020831061284f578051825260208201915060208101905060208303925061282c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020908051906020019061289592919061372c565b50604051806020016040528060008152506003836040518082805190602001908083835b602083106128dc57805182526020820191506020810190506020830392506128b9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805190602001906129229291906137ac565b506000808281526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129c95780601f1061299e576101008083540402835291602001916129c9565b820191906000526020600020905b8154815290600101906020018083116129ac57829003601f168201915b50505050509150604051806020016040528060008152506000808381526020019081526020016000209080519060200190612a0592919061372c565b508180519060200120905061273b565b6040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152506000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000209080519060200190612a9092919061382c565b506000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b90505b7f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612db4576000819050600060066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690836002811115612bed57fe5b02179055506040518060200160405280600081525060076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209080519060200190612c6692919061372c565b506040518060200160405280600081525060086000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209080519060200190612cdb9291906137ac565b5060056000827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b9150600060e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555050612b15565b7f0100000000000000000000000000000000000000000000000000000000000000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506000604051602001808215158152602001915050604051602081830303815290604052600b9080519060200190612e9992919061382c565b506000600a60006101000a81548160ff02191690836002811115612eb957fe5b02179055506000600d819055506001600e60008282540192505081905550505050565b6001600a60006101000a81548160ff02191690836002811115612efb57fe5b021790555060405180602001604052806000815250600c9080519060200190612f259291906137ac565b50565b6001808383604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff02191690836002811115612f6b57fe5b0217905550604051806020016040528060008152506003838360405180838380828437808301925050509250505090815260200160405180910390209080519060200190612fba9291906137ac565b5061300882828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b5050565b7f010000000000000000000000000000000000000000000000000000000000000081565b61308683838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308183613176565b6135b8565b505050565b60008180519060200120905060008060008381526020019081526020016000208054600181600116156101000203166002900490501415613172576000807f0100000000000000000000000000000000000000000000000000000000000000815260200190815260200160002060008083815260200190815260200160002090805460018160011615610100020316600290046131299291906138ac565b50816000807f01000000000000000000000000000000000000000000000000000000000000008152602001908152602001600020908051906020019061317092919061382c565b505b5050565b6060602067ffffffffffffffff8111801561319057600080fd5b506040519080825280601f01601f1916602001820160405280156131c35781602001600182028036833780820191505090505b509050816020820152919050565b6000600a60006101000a81548160ff021916908360028111156131f057fe5b021790555080600b908051906020019061320b92919061382c565b5050565b60008060005b6004811015613293576008810260ff60f81b85838151811061323357fe5b602001015160f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c821791508080600101915050613215565b5080915050919050565b60006001836040518082805190602001908083835b602083106132d557805182526020820191506020810190506020830392506132b2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083600281111561332357fe5b0217905550806002836040518082805190602001908083835b6020831061335f578051825260208201915060208101905060208303925061333c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805190602001906133a592919061382c565b506133af8261308b565b5050565b600060e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156135b557600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055505b50565b60006135c38361320f565b9050600060066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561363357fe5b02179055508160076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020908051906020019061369d92919061382c565b506136a7816133b3565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136ed57803560ff191683800117855561371b565b8280016001018555821561371b579182015b8281111561371a5782358255916020019190600101906136ff565b5b5090506137289190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061376d57805160ff191683800117855561379b565b8280016001018555821561379b579182015b8281111561379a57825182559160200191906001019061377f565b5b5090506137a89190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137ed57805160ff191683800117855561381b565b8280016001018555821561381b579182015b8281111561381a5782518255916020019190600101906137ff565b5b5090506138289190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061386d57805160ff191683800117855561389b565b8280016001018555821561389b579182015b8281111561389a57825182559160200191906001019061387f565b5b5090506138a89190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106138e55780548555613922565b8280016001018555821561392257600052602060002091601f016020900482015b82811115613921578254825591600101919060010190613906565b5b50905061392f9190613933565b5090565b5b8082111561394c576000816000905550600101613934565b509056fe43616e206f6e6c792062652063616c6c65642066726f6d2074686520636f6e747261637420697473656c66a2646970667358221220933dc803d6ff030bb5cc5f209ba0152d5d25f362b3c93faae84de10906e82fb964736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x3E SWAP3 SWAP2 SWAP1 PUSH3 0x17E JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH3 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xCA SWAP3 SWAP2 SWAP1 PUSH3 0x17E JUMP JUMPDEST POP PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP PUSH3 0x224 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x1C1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x1F2 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x1F2 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x1F1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1D4 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x201 SWAP2 SWAP1 PUSH3 0x205 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x220 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x206 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x39B1 DUP1 PUSH3 0x234 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7CD96EE4 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xCF11FF5D GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE211B8A5 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE211B8A5 EQ PUSH2 0x188A JUMPI DUP1 PUSH4 0xEB861F69 EQ PUSH2 0x18A1 JUMPI DUP1 PUSH4 0xF07DA229 EQ PUSH2 0x1927 JUMPI DUP1 PUSH4 0xF5AFA9C1 EQ PUSH2 0x1971 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xCF11FF5D EQ PUSH2 0x16B7 JUMPI DUP1 PUSH4 0xD6FE9778 EQ PUSH2 0x175D JUMPI DUP1 PUSH4 0xD73CA0AC EQ PUSH2 0x17E3 JUMPI DUP1 PUSH4 0xD826F88F EQ PUSH2 0x1873 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xAA788C55 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xAA788C55 EQ PUSH2 0x1475 JUMPI DUP1 PUSH4 0xAF21AC78 EQ PUSH2 0x14FB JUMPI DUP1 PUSH4 0xB3901F29 EQ PUSH2 0x1536 JUMPI DUP1 PUSH4 0xC6EE167F EQ PUSH2 0x15DC JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x7CD96EE4 EQ PUSH2 0x11A9 JUMPI DUP1 PUSH4 0x87ABAB65 EQ PUSH2 0x1239 JUMPI DUP1 PUSH4 0x9A1DC86B EQ PUSH2 0x12BF JUMPI DUP1 PUSH4 0x9EAEED75 EQ PUSH2 0x139A JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x586984A4 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x67AAD04A GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x67AAD04A EQ PUSH2 0x1015 JUMPI DUP1 PUSH4 0x682B4797 EQ PUSH2 0x1040 JUMPI DUP1 PUSH4 0x68AB6F2F EQ PUSH2 0x1091 JUMPI DUP1 PUSH4 0x6F400756 EQ PUSH2 0x1117 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x586984A4 EQ PUSH2 0xD1D JUMPI DUP1 PUSH4 0x58CBC025 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0x5A3855AB EQ PUSH2 0xEA8 JUMPI DUP1 PUSH4 0x61936594 EQ PUSH2 0xF3A JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x2ED238DC GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x2ED238DC EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0x36FF0EE5 EQ PUSH2 0xC2F JUMPI DUP1 PUSH4 0x3956DC6B EQ PUSH2 0xC6C JUMPI DUP1 PUSH4 0x4937C4F6 EQ PUSH2 0xC83 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xA20119F EQ PUSH2 0xAC3 JUMPI DUP1 PUSH4 0x122AEA81 EQ PUSH2 0xAEE JUMPI DUP1 PUSH4 0x21FED4D6 EQ PUSH2 0xB7E JUMPI PUSH2 0x1DD JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1F0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x231 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x31D JUMPI PUSH1 0x3 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x30E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x30E 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 0x2F1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x329 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x36A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x379 JUMPI PUSH2 0x378 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x437 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x40C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x437 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 0x41A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x746 JUMPI PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x455 JUMPI INVALID JUMPDEST PUSH1 0x6 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4BF JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x8 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x5C5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x59A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5C5 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 0x5A8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x5E0 JUMPI INVALID JUMPDEST PUSH1 0x6 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x64A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x659 JUMPI PUSH2 0x658 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x73E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x713 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x73E 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 0x721 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x912 JUMPI PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x75D JUMPI INVALID JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x778 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x83E JUMPI PUSH1 0xC PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x82F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x804 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x82F 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 0x812 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x84A JUMPI INVALID JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x865 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x874 JUMPI PUSH2 0x873 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x90A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8DF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x90A 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 0x8ED JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST PUSH1 0x60 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x186A0 DUP5 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x58CBC02500000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0xA21 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP8 CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAA7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAAC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 MLOAD EQ PUSH2 0xABB JUMPI INVALID JUMPDEST DUP2 MLOAD DUP3 PUSH1 0x20 ADD RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAD8 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB03 PUSH2 0x1A30 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB43 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xB28 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB70 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC02 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1A56 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC19 PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC6A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1B30 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC81 PUSH2 0x1B5B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD07 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDA1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1C3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x1C96 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF38 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1E3D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1013 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xF7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1EAF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102A PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1F6B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x109D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1115 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x10D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1F95 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x113A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x118B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2067 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11BE PUSH2 0x20D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11FE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x122B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x128B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2112 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1398 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x12FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x214C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1473 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x13BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x13DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x13EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x140E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x142F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2281 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x14B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x14C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x14E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2353 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1534 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x151E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2425 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15DA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x15AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2439 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x161C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x162E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x24AA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x16F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x172B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2542 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x17AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x17D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x25B3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1871 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2604 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x187F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1888 PUSH2 0x265F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1896 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189F PUSH2 0x2EDC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1925 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x18E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2F28 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x193C PUSH2 0x300C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x19B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x19C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x19E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3030 JUMP JUMPDEST STOP JUMPDEST JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1A24 JUMPI PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH1 0xC0 PUSH1 0x0 DUP1 PUSH1 0x6 PUSH2 0x7D0 GAS SUB CALL SWAP1 POP POP PUSH2 0x1A02 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0xD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1A9A JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x1AEC DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B3E JUMPI PUSH1 0x0 PUSH2 0x1B41 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1B57 PUSH2 0x1B52 DUP3 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B7A JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BD1 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x9 PUSH1 0x0 PUSH1 0xE SLOAD DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 PUSH1 0xE SLOAD DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3951 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x9 PUSH1 0x0 PUSH1 0xE SLOAD DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 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 PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 PUSH1 0xE SLOAD DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1DE2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 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 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1E4B JUMPI PUSH1 0x0 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1EA9 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x1EA4 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1F41 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x329D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x1F92 PUSH2 0x1F8D DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FE4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x2 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2054 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x2062 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x2075 JUMPI PUSH1 0x0 PUSH2 0x2078 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x20D3 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x20CE DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2131 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0xC SWAP2 SWAP1 PUSH2 0x2147 SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x219B DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x220B JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP3 DUP3 PUSH1 0x8 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP2 SWAP1 PUSH2 0x2270 SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP PUSH2 0x227A DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22C4 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP2 SWAP1 PUSH2 0x22FF SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP PUSH2 0x234D DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23A2 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2412 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x2420 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2436 PUSH2 0x2431 DUP3 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x24A5 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x24A0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x253C DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x35B8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x25AE DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x25A9 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2600 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x31D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x265A DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x2655 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2727 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x26FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2727 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 0x270A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 EQ PUSH2 0x2A15 JUMPI PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x27B6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x2793 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2804 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x284F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x282C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2895 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x28DC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2922 SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x29C9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x299E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x29C9 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 0x29AC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2A05 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x273B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2A90 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP1 POP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x2DB4 JUMPI PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2BED JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2C66 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x8 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2CDB SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH1 0x5 PUSH1 0x0 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP2 POP PUSH1 0x0 PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP POP PUSH2 0x2B15 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2E99 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2EB9 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0xE PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2EFB JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0xC SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2F25 SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2F6B JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2FBA SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH2 0x3008 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x3086 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x3081 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 POP EQ ISZERO PUSH2 0x3172 JUMPI PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH2 0x3129 SWAP3 SWAP2 SWAP1 PUSH2 0x38AC JUMP JUMPDEST POP DUP2 PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x3170 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x31C3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x31F0 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x320B SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x3293 JUMPI PUSH1 0x8 DUP2 MUL PUSH1 0xFF PUSH1 0xF8 SHL DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3233 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL AND PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SHR DUP3 OR SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x3215 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32D5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x32B2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3323 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x335F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x333C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x33A5 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH2 0x33AF DUP3 PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35C3 DUP4 PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3633 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x369D SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH2 0x36A7 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x36ED JUMPI DUP1 CALLDATALOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x371B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x371B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x371A JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36FF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x3728 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x376D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x379B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x379B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x379A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x377F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x37A8 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x37ED JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x381B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x381B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x381A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x37FF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x3828 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x386D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x389B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x389B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x389A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x387F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x38A8 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x38E5 JUMPI DUP1 SLOAD DUP6 SSTORE PUSH2 0x3922 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3922 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3921 JUMPI DUP3 SLOAD DUP3 SSTORE SWAP2 PUSH1 0x1 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3906 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x392F SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x394C JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x3934 JUMP JUMPDEST POP SWAP1 JUMP INVALID NUMBER PUSH2 0x6E20 PUSH16 0x6E6C792062652063616C6C6564206672 PUSH16 0x6D2074686520636F6E74726163742069 PUSH21 0x73656C66A2646970667358221220933DC803D6FF03 SIGNEXTEND 0xB5 0xCC 0x5F KECCAK256 SWAP12 LOG0 ISZERO 0x2D 0x5D 0x25 RETURN PUSH3 0xB3C93F 0xAA 0xE8 0x4D 0xE1 MULMOD MOD 0xE8 0x2F 0xB9 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "3610:9492:4:-:0;;;3985:5;3974:17;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:50;;;;;;;;;;;;;:::i;:::-;;4676:135;;;;;;;;;;4735:14;;;;;;;;;;;;;;;;;4701:13;:31;4715:16;4701:31;;;;;;;;;;;:48;;;;;;;;;;;;:::i;:::-;;4789:18;4753:13;:33;4767:18;4753:33;;;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;3610:9492;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106101dc5760003560e01c80637cd96ee411610102578063cf11ff5d11610095578063e211b8a511610064578063e211b8a51461188a578063eb861f69146118a1578063f07da22914611927578063f5afa9c114611971576101dd565b8063cf11ff5d146116b7578063d6fe97781461175d578063d73ca0ac146117e3578063d826f88f14611873576101dd565b8063aa788c55116100d1578063aa788c5514611475578063af21ac78146114fb578063b3901f2914611536578063c6ee167f146115dc576101dd565b80637cd96ee4146111a957806387abab65146112395780639a1dc86b146112bf5780639eaeed751461139a576101dd565b8063586984a41161017a57806367aad04a1161014957806367aad04a14611015578063682b47971461104057806368ab6f2f146110915780636f40075614611117576101dd565b8063586984a414610d1d57806358cbc02514610db75780635a3855ab14610ea85780636193659414610f3a576101dd565b80632ed238dc116101b65780632ed238dc14610c0457806336ff0ee514610c2f5780633956dc6b14610c6c5780634937c4f614610c83576101dd565b80630a20119f14610ac3578063122aea8114610aee57806321fed4d614610b7e576101dd565b5b600080359050600160028111156101f057fe5b6001600036604051808383808284378083019250505092505050908152602001604051809103902060009054906101000a900460ff16600281111561023157fe5b141561031d57600360003660405180838380828437808301925050509250505090815260200160405180910390206040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561030e5780601f106102e35761010080835404028352916020019161030e565b820191906000526020600020905b8154815290600101906020018083116102f157829003601f168201915b50509250505060405180910390fd5b60028081111561032957fe5b6001600036604051808383808284378083019250505092505050908152602001604051809103902060009054906101000a900460ff16600281111561036a57fe5b141561037957610378611a01565b5b6060600260003660405180838380828437808301925050509250505090815260200160405180910390208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104375780601f1061040c57610100808354040283529160200191610437565b820191906000526020600020905b81548152906001019060200180831161041a57829003601f168201915b50505050509050600081511415610746576001600281111561045557fe5b60066000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1660028111156104bf57fe5b14156105d45760086000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156105c55780601f1061059a576101008083540402835291602001916105c5565b820191906000526020600020905b8154815290600101906020018083116105a857829003601f168201915b50509250505060405180910390fd5b6002808111156105e057fe5b60066000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16600281111561064a57fe5b141561065957610658611a01565b5b60076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561073e5780601f106107135761010080835404028352916020019161073e565b820191906000526020600020905b81548152906001019060200180831161072157829003601f168201915b505050505090505b600081511415610912576001600281111561075d57fe5b600a60009054906101000a900460ff16600281111561077857fe5b141561083e57600c6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b50509250505060405180910390fd5b60028081111561084a57fe5b600a60009054906101000a900460ff16600281111561086557fe5b141561087457610873611a01565b5b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090a5780601f106108df5761010080835404028352916020019161090a565b820191906000526020600020905b8154815290600101906020018083116108ed57829003601f168201915b505050505090505b60603073ffffffffffffffffffffffffffffffffffffffff16620186a08460003660405160240180847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506040516020818303038152906040527f58cbc025000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610a445780518252602082019150602081019050602083039250610a21565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114610aa7576040519150601f19603f3d011682016040523d82523d6000602084013e610aac565b606091505b509150506000815114610abb57fe5b815182602001f35b348015610acf57600080fd5b50610ad8611a26565b6040518082815260200191505060405180910390f35b348015610afa57600080fd5b50610b03611a30565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b43578082015181840152602081019050610b28565b50505050905090810190601f168015610b705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b8a57600080fd5b50610c0260048036036020811015610ba157600080fd5b8101908080359060200190640100000000811115610bbe57600080fd5b820183602082011115610bd057600080fd5b80359060200191846001830284011164010000000083111715610bf257600080fd5b9091929391929390505050611a56565b005b348015610c1057600080fd5b50610c19611af0565b6040518082815260200191505060405180910390f35b348015610c3b57600080fd5b50610c6a60048036036020811015610c5257600080fd5b81019080803515159060200190929190505050611b30565b005b348015610c7857600080fd5b50610c81611b5b565b005b348015610c8f57600080fd5b50610d0760048036036020811015610ca657600080fd5b8101908080359060200190640100000000811115610cc357600080fd5b820183602082011115610cd557600080fd5b80359060200191846001830284011164010000000083111715610cf757600080fd5b9091929391929390505050611b81565b6040518082815260200191505060405180910390f35b348015610d2957600080fd5b50610da160048036036020811015610d4057600080fd5b8101908080359060200190640100000000811115610d5d57600080fd5b820183602082011115610d6f57600080fd5b80359060200191846001830284011164010000000083111715610d9157600080fd5b9091929391929390505050611c3f565b6040518082815260200191505060405180910390f35b348015610dc357600080fd5b50610ea660048036036040811015610dda57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190640100000000811115610e2057600080fd5b820183602082011115610e3257600080fd5b80359060200191846001830284011164010000000083111715610e5457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611c96565b005b348015610eb457600080fd5b50610f3860048036036040811015610ecb57600080fd5b8101908080359060200190640100000000811115610ee857600080fd5b820183602082011115610efa57600080fd5b80359060200191846001830284011164010000000083111715610f1c57600080fd5b9091929391929390803515159060200190929190505050611e3d565b005b348015610f4657600080fd5b5061101360048036036040811015610f5d57600080fd5b8101908080359060200190640100000000811115610f7a57600080fd5b820183602082011115610f8c57600080fd5b80359060200191846001830284011164010000000083111715610fae57600080fd5b909192939192939080359060200190640100000000811115610fcf57600080fd5b820183602082011115610fe157600080fd5b8035906020019184600183028401116401000000008311171561100357600080fd5b9091929391929390505050611eaf565b005b34801561102157600080fd5b5061102a611f47565b6040518082815260200191505060405180910390f35b34801561104c57600080fd5b5061108f6004803603602081101561106357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6b565b005b34801561109d57600080fd5b50611115600480360360208110156110b457600080fd5b81019080803590602001906401000000008111156110d157600080fd5b8201836020820111156110e357600080fd5b8035906020019184600183028401116401000000008311171561110557600080fd5b9091929391929390505050611f95565b005b34801561112357600080fd5b506111a76004803603604081101561113a57600080fd5b810190808035906020019064010000000081111561115757600080fd5b82018360208201111561116957600080fd5b8035906020019184600183028401116401000000008311171561118b57600080fd5b9091929391929390803515159060200190929190505050612067565b005b3480156111b557600080fd5b506111be6120d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156111fe5780820151818401526020810190506111e3565b50505050905090810190601f16801561122b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561124557600080fd5b506112bd6004803603602081101561125c57600080fd5b810190808035906020019064010000000081111561127957600080fd5b82018360208201111561128b57600080fd5b803590602001918460018302840111640100000000831117156112ad57600080fd5b9091929391929390505050612112565b005b3480156112cb57600080fd5b50611398600480360360408110156112e257600080fd5b81019080803590602001906401000000008111156112ff57600080fd5b82018360208201111561131157600080fd5b8035906020019184600183028401116401000000008311171561133357600080fd5b90919293919293908035906020019064010000000081111561135457600080fd5b82018360208201111561136657600080fd5b8035906020019184600183028401116401000000008311171561138857600080fd5b909192939192939050505061214c565b005b3480156113a657600080fd5b50611473600480360360408110156113bd57600080fd5b81019080803590602001906401000000008111156113da57600080fd5b8201836020820111156113ec57600080fd5b8035906020019184600183028401116401000000008311171561140e57600080fd5b90919293919293908035906020019064010000000081111561142f57600080fd5b82018360208201111561144157600080fd5b8035906020019184600183028401116401000000008311171561146357600080fd5b9091929391929390505050612281565b005b34801561148157600080fd5b506114f96004803603602081101561149857600080fd5b81019080803590602001906401000000008111156114b557600080fd5b8201836020820111156114c757600080fd5b803590602001918460018302840111640100000000831117156114e957600080fd5b9091929391929390505050612353565b005b34801561150757600080fd5b506115346004803603602081101561151e57600080fd5b8101908080359060200190929190505050612425565b005b34801561154257600080fd5b506115da6004803603604081101561155957600080fd5b810190808035906020019064010000000081111561157657600080fd5b82018360208201111561158857600080fd5b803590602001918460018302840111640100000000831117156115aa57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612439565b005b3480156115e857600080fd5b506116b5600480360360408110156115ff57600080fd5b810190808035906020019064010000000081111561161c57600080fd5b82018360208201111561162e57600080fd5b8035906020019184600183028401116401000000008311171561165057600080fd5b90919293919293908035906020019064010000000081111561167157600080fd5b82018360208201111561168357600080fd5b803590602001918460018302840111640100000000831117156116a557600080fd5b90919293919293905050506124aa565b005b3480156116c357600080fd5b5061175b600480360360408110156116da57600080fd5b81019080803590602001906401000000008111156116f757600080fd5b82018360208201111561170957600080fd5b8035906020019184600183028401116401000000008311171561172b57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612542565b005b34801561176957600080fd5b506117e16004803603602081101561178057600080fd5b810190808035906020019064010000000081111561179d57600080fd5b8201836020820111156117af57600080fd5b803590602001918460018302840111640100000000831117156117d157600080fd5b90919293919293905050506125b3565b005b3480156117ef57600080fd5b506118716004803603604081101561180657600080fd5b810190808035906020019064010000000081111561182357600080fd5b82018360208201111561183557600080fd5b8035906020019184600183028401116401000000008311171561185757600080fd5b909192939192939080359060200190929190505050612604565b005b34801561187f57600080fd5b5061188861265f565b005b34801561189657600080fd5b5061189f612edc565b005b3480156118ad57600080fd5b50611925600480360360208110156118c457600080fd5b81019080803590602001906401000000008111156118e157600080fd5b8201836020820111156118f357600080fd5b8035906020019184600183028401116401000000008311171561191557600080fd5b9091929391929390505050612f28565b005b34801561193357600080fd5b5061193c61300c565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561197d57600080fd5b506119ff6004803603604081101561199457600080fd5b81019080803590602001906401000000008111156119b157600080fd5b8201836020820111156119c357600080fd5b803590602001918460018302840111640100000000831117156119e557600080fd5b909192939192939080359060200190929190505050613030565b005b5b600115611a245760006060600060c060008060066107d05a03f1905050611a02565b565b6000600d54905090565b600060405160200180821515815260200191505060405160208183030381529060405281565b600260018383604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff02191690836002811115611a9a57fe5b0217905550611aec82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b5050565b6040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152508051906020012081565b600081611b3e576000611b41565b60015b60ff169050611b57611b5282613176565b6131d1565b5050565b6002600a60006101000a81548160ff02191690836002811115611b7a57fe5b0217905550565b600080611bd184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b905060096000600e548360405160200180838152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600401925050506040516020818303038152906040528051906020012081526020019081526020016000205491505092915050565b600060046000600e5485856040516020018084815260200183838082843780830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002054905092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613951602b913960400191505060405180910390fd5b6001600d60008282540192505081905550600160096000600e548560405160200180838152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526004019250505060405160208183030381529060405280519060200120815260200190815260200160002060008282540192505081905550600160046000600e54846040516020018083815260200182805190602001908083835b60208310611de25780518252602082019150602081019050602083039250611dbf565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052805190602001208152602001908152602001600020600082825401925050819055505050565b600081611e4b576000611e4e565b60015b60ff169050611ea984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611ea483613176565b61329d565b50505050565b611f4184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061329d565b50505050565b7f010000000000000000000000000000000000000000000000000000000000000081565b611f92611f8d8273ffffffffffffffffffffffffffffffffffffffff16613176565b6131d1565b50565b6000611fe483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600260066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561205457fe5b0217905550612062816133b3565b505050565b600081612075576000612078565b60015b60ff1690506120d384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506120ce83613176565b6135b8565b50505050565b6040518060400160405280600481526020017f307866660000000000000000000000000000000000000000000000000000000081525081565b6001600a60006101000a81548160ff0219169083600281111561213157fe5b02179055508181600c91906121479291906136ac565b505050565b600061219b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600160066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561220b57fe5b0217905550828260086000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002091906122709291906136ac565b5061227a816133b3565b5050505050565b6001808585604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff021916908360028111156122c457fe5b0217905550818160038686604051808383808284378083019250505092505050908152602001604051809103902091906122ff9291906136ac565b5061234d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b50505050565b60006123a283838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600160066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561241257fe5b0217905550612420816133b3565b505050565b61243661243182613176565b6131d1565b50565b6124a583838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506124a08373ffffffffffffffffffffffffffffffffffffffff16613176565b61329d565b505050565b61253c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506135b8565b50505050565b6125ae83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506125a98373ffffffffffffffffffffffffffffffffffffffff16613176565b6135b8565b505050565b61260082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506131d1565b5050565b61265a83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061265583613176565b61329d565b505050565b60606000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127275780601f106126fc57610100808354040283529160200191612727565b820191906000526020600020905b81548152906001019060200180831161270a57829003601f168201915b505050505090506000818051906020012090505b6040518060400160405280600481526020017f3078666600000000000000000000000000000000000000000000000000000000815250805190602001208114612a155760006001836040518082805190602001908083835b602083106127b65780518252602082019150602081019050602083039250612793565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083600281111561280457fe5b0217905550604051806020016040528060008152506002836040518082805190602001908083835b6020831061284f578051825260208201915060208101905060208303925061282c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020908051906020019061289592919061372c565b50604051806020016040528060008152506003836040518082805190602001908083835b602083106128dc57805182526020820191506020810190506020830392506128b9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805190602001906129229291906137ac565b506000808281526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129c95780601f1061299e576101008083540402835291602001916129c9565b820191906000526020600020905b8154815290600101906020018083116129ac57829003601f168201915b50505050509150604051806020016040528060008152506000808381526020019081526020016000209080519060200190612a0592919061372c565b508180519060200120905061273b565b6040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152506000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000209080519060200190612a9092919061382c565b506000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b90505b7f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612db4576000819050600060066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690836002811115612bed57fe5b02179055506040518060200160405280600081525060076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209080519060200190612c6692919061372c565b506040518060200160405280600081525060086000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209080519060200190612cdb9291906137ac565b5060056000827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b9150600060e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555050612b15565b7f0100000000000000000000000000000000000000000000000000000000000000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506000604051602001808215158152602001915050604051602081830303815290604052600b9080519060200190612e9992919061382c565b506000600a60006101000a81548160ff02191690836002811115612eb957fe5b02179055506000600d819055506001600e60008282540192505081905550505050565b6001600a60006101000a81548160ff02191690836002811115612efb57fe5b021790555060405180602001604052806000815250600c9080519060200190612f259291906137ac565b50565b6001808383604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff02191690836002811115612f6b57fe5b0217905550604051806020016040528060008152506003838360405180838380828437808301925050509250505090815260200160405180910390209080519060200190612fba9291906137ac565b5061300882828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b5050565b7f010000000000000000000000000000000000000000000000000000000000000081565b61308683838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308183613176565b6135b8565b505050565b60008180519060200120905060008060008381526020019081526020016000208054600181600116156101000203166002900490501415613172576000807f0100000000000000000000000000000000000000000000000000000000000000815260200190815260200160002060008083815260200190815260200160002090805460018160011615610100020316600290046131299291906138ac565b50816000807f01000000000000000000000000000000000000000000000000000000000000008152602001908152602001600020908051906020019061317092919061382c565b505b5050565b6060602067ffffffffffffffff8111801561319057600080fd5b506040519080825280601f01601f1916602001820160405280156131c35781602001600182028036833780820191505090505b509050816020820152919050565b6000600a60006101000a81548160ff021916908360028111156131f057fe5b021790555080600b908051906020019061320b92919061382c565b5050565b60008060005b6004811015613293576008810260ff60f81b85838151811061323357fe5b602001015160f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c821791508080600101915050613215565b5080915050919050565b60006001836040518082805190602001908083835b602083106132d557805182526020820191506020810190506020830392506132b2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083600281111561332357fe5b0217905550806002836040518082805190602001908083835b6020831061335f578051825260208201915060208101905060208303925061333c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805190602001906133a592919061382c565b506133af8261308b565b5050565b600060e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156135b557600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055505b50565b60006135c38361320f565b9050600060066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561363357fe5b02179055508160076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020908051906020019061369d92919061382c565b506136a7816133b3565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136ed57803560ff191683800117855561371b565b8280016001018555821561371b579182015b8281111561371a5782358255916020019190600101906136ff565b5b5090506137289190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061376d57805160ff191683800117855561379b565b8280016001018555821561379b579182015b8281111561379a57825182559160200191906001019061377f565b5b5090506137a89190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137ed57805160ff191683800117855561381b565b8280016001018555821561381b579182015b8281111561381a5782518255916020019190600101906137ff565b5b5090506138289190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061386d57805160ff191683800117855561389b565b8280016001018555821561389b579182015b8281111561389a57825182559160200191906001019061387f565b5b5090506138a89190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106138e55780548555613922565b8280016001018555821561392257600052602060002091601f016020900482015b82811115613921578254825591600101919060010190613906565b5b50905061392f9190613933565b5090565b5b8082111561394c576000816000905550600101613934565b509056fe43616e206f6e6c792062652063616c6c65642066726f6d2074686520636f6e747261637420697473656c66a2646970667358221220933dc803d6ff030bb5cc5f209ba0152d5d25f362b3c93faae84de10906e82fb964736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7CD96EE4 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xCF11FF5D GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE211B8A5 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE211B8A5 EQ PUSH2 0x188A JUMPI DUP1 PUSH4 0xEB861F69 EQ PUSH2 0x18A1 JUMPI DUP1 PUSH4 0xF07DA229 EQ PUSH2 0x1927 JUMPI DUP1 PUSH4 0xF5AFA9C1 EQ PUSH2 0x1971 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xCF11FF5D EQ PUSH2 0x16B7 JUMPI DUP1 PUSH4 0xD6FE9778 EQ PUSH2 0x175D JUMPI DUP1 PUSH4 0xD73CA0AC EQ PUSH2 0x17E3 JUMPI DUP1 PUSH4 0xD826F88F EQ PUSH2 0x1873 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xAA788C55 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xAA788C55 EQ PUSH2 0x1475 JUMPI DUP1 PUSH4 0xAF21AC78 EQ PUSH2 0x14FB JUMPI DUP1 PUSH4 0xB3901F29 EQ PUSH2 0x1536 JUMPI DUP1 PUSH4 0xC6EE167F EQ PUSH2 0x15DC JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x7CD96EE4 EQ PUSH2 0x11A9 JUMPI DUP1 PUSH4 0x87ABAB65 EQ PUSH2 0x1239 JUMPI DUP1 PUSH4 0x9A1DC86B EQ PUSH2 0x12BF JUMPI DUP1 PUSH4 0x9EAEED75 EQ PUSH2 0x139A JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x586984A4 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x67AAD04A GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x67AAD04A EQ PUSH2 0x1015 JUMPI DUP1 PUSH4 0x682B4797 EQ PUSH2 0x1040 JUMPI DUP1 PUSH4 0x68AB6F2F EQ PUSH2 0x1091 JUMPI DUP1 PUSH4 0x6F400756 EQ PUSH2 0x1117 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x586984A4 EQ PUSH2 0xD1D JUMPI DUP1 PUSH4 0x58CBC025 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0x5A3855AB EQ PUSH2 0xEA8 JUMPI DUP1 PUSH4 0x61936594 EQ PUSH2 0xF3A JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x2ED238DC GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x2ED238DC EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0x36FF0EE5 EQ PUSH2 0xC2F JUMPI DUP1 PUSH4 0x3956DC6B EQ PUSH2 0xC6C JUMPI DUP1 PUSH4 0x4937C4F6 EQ PUSH2 0xC83 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xA20119F EQ PUSH2 0xAC3 JUMPI DUP1 PUSH4 0x122AEA81 EQ PUSH2 0xAEE JUMPI DUP1 PUSH4 0x21FED4D6 EQ PUSH2 0xB7E JUMPI PUSH2 0x1DD JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1F0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x231 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x31D JUMPI PUSH1 0x3 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x30E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x30E 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 0x2F1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x329 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x36A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x379 JUMPI PUSH2 0x378 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x437 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x40C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x437 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 0x41A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x746 JUMPI PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x455 JUMPI INVALID JUMPDEST PUSH1 0x6 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4BF JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x8 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x5C5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x59A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5C5 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 0x5A8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x5E0 JUMPI INVALID JUMPDEST PUSH1 0x6 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x64A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x659 JUMPI PUSH2 0x658 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x73E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x713 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x73E 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 0x721 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x912 JUMPI PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x75D JUMPI INVALID JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x778 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x83E JUMPI PUSH1 0xC PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x82F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x804 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x82F 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 0x812 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x84A JUMPI INVALID JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x865 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x874 JUMPI PUSH2 0x873 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x90A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8DF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x90A 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 0x8ED JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST PUSH1 0x60 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x186A0 DUP5 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x58CBC02500000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0xA21 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP8 CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAA7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAAC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 MLOAD EQ PUSH2 0xABB JUMPI INVALID JUMPDEST DUP2 MLOAD DUP3 PUSH1 0x20 ADD RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAD8 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB03 PUSH2 0x1A30 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB43 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xB28 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB70 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC02 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1A56 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC19 PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC6A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1B30 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC81 PUSH2 0x1B5B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD07 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDA1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1C3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x1C96 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF38 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1E3D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1013 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xF7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1EAF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102A PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1F6B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x109D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1115 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x10D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1F95 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x113A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x118B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2067 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11BE PUSH2 0x20D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11FE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x122B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x128B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2112 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1398 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x12FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x214C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1473 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x13BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x13DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x13EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x140E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x142F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2281 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x14B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x14C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x14E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2353 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1534 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x151E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2425 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15DA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x15AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2439 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x161C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x162E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x24AA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x16F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x172B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2542 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x17AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x17D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x25B3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1871 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2604 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x187F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1888 PUSH2 0x265F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1896 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189F PUSH2 0x2EDC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1925 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x18E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2F28 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x193C PUSH2 0x300C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x19B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x19C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x19E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3030 JUMP JUMPDEST STOP JUMPDEST JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1A24 JUMPI PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH1 0xC0 PUSH1 0x0 DUP1 PUSH1 0x6 PUSH2 0x7D0 GAS SUB CALL SWAP1 POP POP PUSH2 0x1A02 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0xD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1A9A JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x1AEC DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B3E JUMPI PUSH1 0x0 PUSH2 0x1B41 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1B57 PUSH2 0x1B52 DUP3 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B7A JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BD1 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x9 PUSH1 0x0 PUSH1 0xE SLOAD DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 PUSH1 0xE SLOAD DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3951 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x9 PUSH1 0x0 PUSH1 0xE SLOAD DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 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 PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 PUSH1 0xE SLOAD DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1DE2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x1DBF JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 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 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1E4B JUMPI PUSH1 0x0 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1EA9 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x1EA4 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1F41 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x329D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x1F92 PUSH2 0x1F8D DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FE4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x2 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2054 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x2062 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x2075 JUMPI PUSH1 0x0 PUSH2 0x2078 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x20D3 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x20CE DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2131 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0xC SWAP2 SWAP1 PUSH2 0x2147 SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x219B DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x220B JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP3 DUP3 PUSH1 0x8 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP2 SWAP1 PUSH2 0x2270 SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP PUSH2 0x227A DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22C4 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP2 SWAP1 PUSH2 0x22FF SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP PUSH2 0x234D DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23A2 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2412 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x2420 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2436 PUSH2 0x2431 DUP3 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x24A5 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x24A0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x253C DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x35B8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x25AE DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x25A9 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2600 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x31D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x265A DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x2655 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2727 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x26FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2727 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 0x270A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 EQ PUSH2 0x2A15 JUMPI PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x27B6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x2793 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2804 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x284F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x282C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2895 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x28DC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x28B9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2922 SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x29C9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x299E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x29C9 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 0x29AC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2A05 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x273B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2A90 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP1 POP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x2DB4 JUMPI PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2BED JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2C66 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x8 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2CDB SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH1 0x5 PUSH1 0x0 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP2 POP PUSH1 0x0 PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP POP PUSH2 0x2B15 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2E99 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2EB9 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0xE PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2EFB JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0xC SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2F25 SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2F6B JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2FBA SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH2 0x3008 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x3086 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0x3081 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 POP EQ ISZERO PUSH2 0x3172 JUMPI PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH2 0x3129 SWAP3 SWAP2 SWAP1 PUSH2 0x38AC JUMP JUMPDEST POP DUP2 PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x3170 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x31C3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x31F0 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x320B SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x3293 JUMPI PUSH1 0x8 DUP2 MUL PUSH1 0xFF PUSH1 0xF8 SHL DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3233 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL AND PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SHR DUP3 OR SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x3215 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32D5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x32B2 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3323 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x335F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x333C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x33A5 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH2 0x33AF DUP3 PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35C3 DUP4 PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3633 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x369D SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH2 0x36A7 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x36ED JUMPI DUP1 CALLDATALOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x371B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x371B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x371A JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36FF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x3728 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x376D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x379B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x379B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x379A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x377F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x37A8 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x37ED JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x381B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x381B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x381A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x37FF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x3828 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x386D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x389B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x389B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x389A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x387F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x38A8 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x38E5 JUMPI DUP1 SLOAD DUP6 SSTORE PUSH2 0x3922 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3922 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3921 JUMPI DUP3 SLOAD DUP3 SSTORE SWAP2 PUSH1 0x1 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3906 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x392F SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x394C JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x3934 JUMP JUMPDEST POP SWAP1 JUMP INVALID NUMBER PUSH2 0x6E20 PUSH16 0x6E6C792062652063616C6C6564206672 PUSH16 0x6D2074686520636F6E74726163742069 PUSH21 0x73656C66A2646970667358221220933DC803D6FF03 SIGNEXTEND 0xB5 0xCC 0x5F KECCAK256 SWAP12 LOG0 ISZERO 0x2D 0x5D 0x25 RETURN PUSH3 0xB3C93F 0xAA 0xE8 0x4D 0xE1 MULMOD MOD 0xE8 0x2F 0xB9 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "3610:9492:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11861:15;11919:1;11906:15;11894:27;;12007:15;11976:46;;;;;;;;:17;11994:8;;11976:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;11972:101;;;12036:21;12058:8;;12036:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12029:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11972:101;12111:17;12080:48;;;;;;;;:17;12098:8;;12080:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;;;;;12076:75;;;12135:11;:9;:11::i;:::-;12076:75;12154:19;12176:20;12197:8;;12176:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12154:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12268:1;12251:6;:13;:18;12247:262;;;12311:15;12280:46;;;;;;;;:17;:27;12298:8;12280:27;;;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;12276:104;;;12341:22;:32;12364:8;12341:32;;;;;;;;;;;;;;;;;12334:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12276:104;12419:17;12388:48;;;;;;;;:17;:27;12406:8;12388:27;;;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;;;;;12384:77;;;12444:11;:9;:11::i;:::-;12384:77;12474:20;:30;12495:8;12474:30;;;;;;;;;;;;;;;;;12465:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12247:262;12571:1;12554:6;:13;:18;12550:218;;;12603:15;12583:35;;;;;;;;:16;;;;;;;;;;;:35;;;;;;;;;12579:82;;;12633:21;12626:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12579:82;12689:17;12669:37;;;;;;;;:16;;;;;;;;;;;:37;;;;;;;;;12665:66;;;12714:11;:9;:11::i;:::-;12665:66;12744:19;12735:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12550:218;12874:14;12900:4;12892:18;;12916:6;12987:8;12997;;12924:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12892:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12871:136;;;13030:1;13018;:8;:13;13011:21;;;;13085:6;13079:13;13070:6;13064:4;13060:17;13053:40;9156:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3927:64;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8806:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3799:71;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5522:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6170:93;;;;;;;;;;;;;:::i;:::-;;9245:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9458:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11464:361;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6608:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6467:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3698:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5771:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8960:193;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7470:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3751:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6012:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8536:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8312:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8122:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5660:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6930:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7334:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7784:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5419:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6783:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9632:1320;;;;;;;;;;;;;:::i;:::-;;5893:116;;;;;;;;;;;;;:::i;:::-;;7939:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3873:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;7641:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10955:188;10988:152;10994:4;10988:152;;;11005:6;11126:4;11121:3;11115:4;11110:3;11107:1;11104;11097:4;11090:5;11086:16;11081:50;11076:55;;11025:111;;;;10955:188::o;9156:86::-;9210:4;9227:11;;9220:18;;9156:86;:::o;3927:64::-;3985:5;3974:17;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:64;:::o;8806:151::-;8909:17;8883;8901:4;;8883:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;8930:23;8948:4;;8930:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:23::i;:::-;8806:151;;:::o;3799:71::-;3855:14;;;;;;;;;;;;;;;;;3845:25;;;;;;3799:71;:::o;5522:135::-;5587:9;5599:8;:16;;5614:1;5599:16;;;5610:1;5599:16;5587:28;;;;5619:34;5635:17;5647:4;5635:11;:17::i;:::-;5619:15;:34::i;:::-;5522:135;;:::o;6170:93::-;6242:17;6223:16;;:36;;;;;;;;;;;;;;;;;;;;;;;;6170:93::o;9245:210::-;9327:4;9337:13;9353:19;9367:4;;9353:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:19::i;:::-;9337:35;;9383:19;:68;9430:10;;9442:6;9413:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9403:47;;;;;;9383:68;;;;;;;;;;;;9376:75;;;9245:210;;;;:::o;9458:171::-;9542:4;9559:19;:66;9606:10;;9618:4;;9589:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9579:45;;;;;;9559:66;;;;;;;;;;;;9552:73;;9458:171;;;;:::o;11464:361::-;11583:4;11561:27;;:10;:27;;;11553:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11655:1;11640:11;;:16;;;;;;;;;;;11734:1;11660:19;:70;11707:10;;11719:8;11690:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11680:49;;;;;;11660:70;;;;;;;;;;;;:75;;;;;;;;;;;11820:1;11739:19;:77;11786:10;;11798:15;11769:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11759:56;;;;;;11739:77;;;;;;;;;;;;:82;;;;;;;;;;;11464:361;;:::o;6608:172::-;6699:9;6711:8;:16;;6726:1;6711:16;;;6722:1;6711:16;6699:28;;;;6731:45;6752:4;;6731:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6758:17;6770:4;6758:11;:17::i;:::-;6731:20;:45::i;:::-;6608:172;;;;:::o;6467:138::-;6565:36;6586:4;;6565:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6592:8;;6565:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;:36::i;:::-;6467:138;;;;:::o;3698:50::-;;;:::o;5771:119::-;5842:44;5858:27;5875:8;5870:14;;5858:11;:27::i;:::-;5842:15;:44::i;:::-;5771:119;:::o;8960:193::-;9035:13;9051:19;9065:4;;9051:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:19::i;:::-;9035:35;;9102:17;9074;:25;9092:6;9074:25;;;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;;;;;;;9123:25;9141:6;9123:17;:25::i;:::-;8960:193;;;:::o;7470:168::-;7559:9;7571:8;:16;;7586:1;7571:16;;;7582:1;7571:16;7559:28;;;;7591:43;7610:4;;7591:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7616:17;7628:4;7616:11;:17::i;:::-;7591:18;:43::i;:::-;7470:168;;;;:::o;3751:45::-;;;;;;;;;;;;;;;;;;;:::o;6012:155::-;6113:15;6094:16;;:34;;;;;;;;;;;;;;;;;;;;;;;;6156:7;;6132:21;:31;;;;;;;:::i;:::-;;6012:155;;:::o;8536:267::-;8642:13;8658:19;8672:4;;8658:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:19::i;:::-;8642:35;;8709:15;8681:17;:25;8699:6;8681:25;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;8761:7;;8728:22;:30;8751:6;8728:30;;;;;;;;;;;;;;;;;:40;;;;;;;:::i;:::-;;8772:25;8790:6;8772:17;:25::i;:::-;8536:267;;;;;:::o;8312:221::-;8446:15;8420:17;8438:4;;8420:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;;;;;;8495:7;;8465:21;8487:4;;8465:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;8506:23;8524:4;;8506:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:23::i;:::-;8312:221;;;;:::o;8122:187::-;8192:13;8208:19;8222:4;;8208:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:19::i;:::-;8192:35;;8259:15;8231:17;:25;8249:6;8231:25;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;8278:25;8296:6;8278:17;:25::i;:::-;8122:187;;;:::o;5660:108::-;5725:38;5741:21;5753:8;5741:11;:21::i;:::-;5725:15;:38::i;:::-;5660:108;:::o;6930:156::-;7027:55;7048:4;;7027:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7054:27;7071:8;7066:14;;7054:11;:27::i;:::-;7027:20;:55::i;:::-;6930:156;;;:::o;7334:133::-;7429:34;7448:4;;7429:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7454:8;;7429:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;:34::i;:::-;7334:133;;;;:::o;7784:152::-;7879:53;7898:4;;7879:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7904:27;7921:8;7916:14;;7904:11;:27::i;:::-;7879:18;:53::i;:::-;7784:152;;;:::o;5419:100::-;5490:25;5506:8;;5490:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:25::i;:::-;5419:100;;:::o;6783:144::-;6874:49;6895:4;;6874:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6901:21;6913:8;6901:11;:21::i;:::-;6874:20;:49::i;:::-;6783:144;;;:::o;9632:1320::-;9706:21;9730:13;:31;9744:16;9730:31;;;;;;;;;;;9706:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9765:16;9794:8;9784:19;;;;;;9765:38;;9836:394;3855:14;;;;;;;;;;;;;;;;;3845:25;;;;;;9842:8;:31;9836:394;;9936:15;9906:17;9924:8;9906:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;;;;;;;9956:38;;;;;;;;;;;;:20;9977:8;9956:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;:::i;:::-;;9999:36;;;;;;;;;;;;:21;10021:8;9999:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;:::i;:::-;;10081:13;:23;10095:8;10081:23;;;;;;;;;;;10070:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10139:28;;;;;;;;;;;;:13;:23;10153:8;10139:23;;;;;;;;;;;:28;;;;;;;;;;;;:::i;:::-;;10216:8;10206:19;;;;;;10195:30;;9836:394;;;10283:14;;;;;;;;;;;;;;;;;10249:13;:31;10263:16;10249:31;;;;;;;;;;;:48;;;;;;;;;;;;:::i;:::-;;10335:18;10356:13;:33;10370:18;10356:33;;;;;;;;;;;;;;;;;;;;;;;;;;;10335:54;;10393:357;10414:18;10399:33;;;:11;:33;;;;10393:357;;10439:21;10463:11;10439:35;;10515:15;10479:17;:33;10497:14;10479:33;;;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;;;;;;;10535:44;;;;;;;;;;;;:20;:36;10556:14;10535:36;;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;:::i;:::-;;10584:43;;;;;;;;;;;;:22;:38;10607:14;10584:38;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;:::i;:::-;;10646:13;:29;10660:14;10646:29;;;;;;;;;;;;;;;;;;;;;;;;;;;10632:43;;10742:3;10710:35;;:13;:29;10724:14;10710:29;;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;10393:357;;;;10805:18;10769:13;:33;10783:18;10769:33;;;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;3985:5;3974:17;;;;;;;;;;;;;;;;;;;;;;;;;;;10828:19;:44;;;;;;;;;;;;:::i;:::-;;10895:15;10876:16;;:34;;;;;;;;;;;;;;;;;;;;;;;;10928:1;10914:11;:15;;;;10947:1;10933:10;;:15;;;;;;;;;;;9632:1320;;;:::o;5893:116::-;5960:15;5941:16;;:34;;;;;;;;;;;;;;;;;;;;;;;;5979:26;;;;;;;;;;;;:21;:26;;;;;;;;;;;;:::i;:::-;;5893:116::o;7939:180::-;8037:15;8011:17;8029:4;;8011:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;;;;;;8056:32;;;;;;;;;;;;:21;8078:4;;8056:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;:::i;:::-;;8092:23;8110:4;;8092:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:23::i;:::-;7939:180;;:::o;3873:51::-;;;:::o;7641:140::-;7730:47;7749:4;;7730:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7755:21;7767:8;7755:11;:21::i;:::-;7730:18;:47::i;:::-;7641:140;;;:::o;4814:250::-;4872:16;4901:4;4891:15;;;;;;4872:34;;4948:1;4914:13;:23;4928:8;4914:23;;;;;;;;;;;:30;;;;;;;;;;;;;;;;:35;4910:151;;;4982:13;:31;4996:16;4982:31;;;;;;;;;;;4956:13;:23;4970:8;4956:23;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5052:4;5018:13;:31;5032:16;5018:31;;;;;;;;;;;:38;;;;;;;;;;;;:::i;:::-;;4910:151;4814:250;;:::o;11329:132::-;11383:14;11417:2;11407:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11403:17;;11454:1;11449:2;11446:1;11442:10;11435:21;11433:25;;;:::o;5283:133::-;5363:15;5344:16;;:34;;;;;;;;;;;;;;;;;;;;;;;;5404:8;5382:19;:30;;;;;;;;;;;;:::i;:::-;;5283:133;:::o;11146:180::-;11207:6;11219:10;11238:6;11233:76;11254:1;11250;:5;11233:76;;;11302:1;11298;:5;11288:4;11281:11;;:1;11283;11281:4;;;;;;;;;;;;;;;;:11;11274:19;;;:30;;;;;11267:37;;;;11257:3;;;;;;;11233:76;;;;11319:3;11312:10;;;11146:180;;;:::o;6266:198::-;6377:15;6351:17;6369:4;6351:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;;;;;;6425:8;6396:20;6417:4;6396:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;:::i;:::-;;6437:23;6455:4;6437:17;:23::i;:::-;6266:198;;:::o;5067:213::-;5154:3;5127:30;;:13;:23;5141:8;5127:23;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;5123:154;;;5190:13;:33;5204:18;5190:33;;;;;;;;;;;;;;;;;;;;;;;;;;;5164:13;:23;5178:8;5164:23;;;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;5264:8;5228:13;:33;5242:18;5228:33;;;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;5123:154;5067:213;:::o;7089:242::-;7171:13;7187:19;7201:4;7187:13;:19::i;:::-;7171:35;;7238:15;7210:17;:25;7228:6;7210:25;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;7288:8;7257:20;:28;7278:6;7257:28;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;:::i;:::-;;7300:25;7318:6;7300:17;:25::i;:::-;7089:242;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "DEFAULT_FALLBACK_VALUE()": "122aea81",
              "MOCKS_LIST_END()": "7cd96ee4",
              "MOCKS_LIST_END_HASH()": "2ed238dc",
              "MOCKS_LIST_START()": "67aad04a",
              "SENTINEL_ANY_MOCKS()": "f07da229",
              "givenAnyReturn(bytes)": "d6fe9778",
              "givenAnyReturnAddress(address)": "682b4797",
              "givenAnyReturnBool(bool)": "36ff0ee5",
              "givenAnyReturnUint(uint256)": "af21ac78",
              "givenAnyRevert()": "e211b8a5",
              "givenAnyRevertWithMessage(string)": "87abab65",
              "givenAnyRunOutOfGas()": "3956dc6b",
              "givenCalldataReturn(bytes,bytes)": "61936594",
              "givenCalldataReturnAddress(bytes,address)": "b3901f29",
              "givenCalldataReturnBool(bytes,bool)": "5a3855ab",
              "givenCalldataReturnUint(bytes,uint256)": "d73ca0ac",
              "givenCalldataRevert(bytes)": "eb861f69",
              "givenCalldataRevertWithMessage(bytes,string)": "9eaeed75",
              "givenCalldataRunOutOfGas(bytes)": "21fed4d6",
              "givenMethodReturn(bytes,bytes)": "c6ee167f",
              "givenMethodReturnAddress(bytes,address)": "cf11ff5d",
              "givenMethodReturnBool(bytes,bool)": "6f400756",
              "givenMethodReturnUint(bytes,uint256)": "f5afa9c1",
              "givenMethodRevert(bytes)": "aa788c55",
              "givenMethodRevertWithMessage(bytes,string)": "9a1dc86b",
              "givenMethodRunOutOfGas(bytes)": "68ab6f2f",
              "invocationCount()": "0a20119f",
              "invocationCountForCalldata(bytes)": "586984a4",
              "invocationCountForMethod(bytes)": "4937c4f6",
              "reset()": "d826f88f",
              "updateInvocationCount(bytes4,bytes)": "58cbc025"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"DEFAULT_FALLBACK_VALUE\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MOCKS_LIST_END\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MOCKS_LIST_END_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MOCKS_LIST_START\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SENTINEL_ANY_MOCKS\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenAnyReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenAnyReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenAnyReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenAnyReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"givenAnyRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenAnyRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"givenAnyRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenCalldataReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenCalldataReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenCalldataReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenCalldataReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenCalldataRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenCalldataRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenCalldataRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenMethodReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenMethodReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenMethodReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenMethodReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenMethodRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenMethodRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenMethodRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"invocationCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"invocationCountForCalldata\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"invocationCountForMethod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"methodId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"originalMsgData\",\"type\":\"bytes\"}],\"name\":\"updateInvocationCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"givenAnyReturn(bytes)\":{\"details\":\"After calling this method, the mock will return `response` when it is called with any calldata that is not mocked more specifically below (e.g. using givenMethodReturn).\",\"params\":{\"response\":\"ABI encoded response that will be returned if method is invoked\"}},\"givenCalldataReturn(bytes,bytes)\":{\"details\":\"After calling this method, the mock will return `response` when the given methodId is called with matching arguments. These exact calldataMocks will take precedence over all other calldataMocks.\",\"params\":{\"call\":\"ABI encoded calldata (methodId and arguments)\",\"response\":\"ABI encoded response that will be returned if contract is invoked with calldata\"}},\"invocationCount()\":{\"details\":\"Returns the number of times anything has been called on this mock since last reset\"},\"invocationCountForCalldata(bytes)\":{\"details\":\"Returns the number of times this mock has been called with the exact calldata since last reset.\",\"params\":{\"call\":\"ABI encoded calldata (methodId and arguments)\"}},\"reset()\":{\"details\":\"Resets all mocked methods and invocation counts.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Implementation of the MockInterface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MockContract.sol\":\"MockContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/MockContract.sol\":{\"keccak256\":\"0x1a1c8ed108b0b7d94103c54a9f2d4f64038d44f9eedf39b5bc8217c5d0835b14\",\"urls\":[\"bzz-raw://e9d67501e0e49eba34aa220b4037423b03939f47533f8d5a74ee8f997895f6d6\",\"dweb:/ipfs/QmPn85MaX7m3jX7fCcibFeTMg9YPEw2JgtARQBqFCbMN7v\"]}},\"version\":1}"
        },
        "MockInterface": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenAnyReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenAnyReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenAnyReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenAnyReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "givenAnyRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenAnyRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "givenAnyRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenCalldataReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenCalldataReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenCalldataReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenCalldataRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenMethodReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenMethodReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenMethodReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenMethodRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "invocationCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "invocationCountForCalldata",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                }
              ],
              "name": "invocationCountForMethod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "reset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "givenAnyReturn(bytes)": "d6fe9778",
              "givenAnyReturnAddress(address)": "682b4797",
              "givenAnyReturnBool(bool)": "36ff0ee5",
              "givenAnyReturnUint(uint256)": "af21ac78",
              "givenAnyRevert()": "e211b8a5",
              "givenAnyRevertWithMessage(string)": "87abab65",
              "givenAnyRunOutOfGas()": "3956dc6b",
              "givenCalldataReturn(bytes,bytes)": "61936594",
              "givenCalldataReturnAddress(bytes,address)": "b3901f29",
              "givenCalldataReturnBool(bytes,bool)": "5a3855ab",
              "givenCalldataReturnUint(bytes,uint256)": "d73ca0ac",
              "givenCalldataRevert(bytes)": "eb861f69",
              "givenCalldataRevertWithMessage(bytes,string)": "9eaeed75",
              "givenCalldataRunOutOfGas(bytes)": "21fed4d6",
              "givenMethodReturn(bytes,bytes)": "c6ee167f",
              "givenMethodReturnAddress(bytes,address)": "cf11ff5d",
              "givenMethodReturnBool(bytes,bool)": "6f400756",
              "givenMethodReturnUint(bytes,uint256)": "f5afa9c1",
              "givenMethodRevert(bytes)": "aa788c55",
              "givenMethodRevertWithMessage(bytes,string)": "9a1dc86b",
              "givenMethodRunOutOfGas(bytes)": "68ab6f2f",
              "invocationCount()": "0a20119f",
              "invocationCountForCalldata(bytes)": "586984a4",
              "invocationCountForMethod(bytes)": "4937c4f6",
              "reset()": "d826f88f"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenAnyReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenAnyReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenAnyReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenAnyReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"givenAnyRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenAnyRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"givenAnyRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenCalldataReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenCalldataReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenCalldataReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenCalldataReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenCalldataRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenCalldataRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenCalldataRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenMethodReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenMethodReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenMethodReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenMethodReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"}],\"name\":\"givenMethodRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenMethodRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"}],\"name\":\"givenMethodRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"invocationCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"invocationCountForCalldata\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"}],\"name\":\"invocationCountForMethod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"givenAnyReturn(bytes)\":{\"details\":\"After calling this method, the mock will return `response` when it is called with any calldata that is not mocked more specifically below (e.g. using givenMethodReturn).\",\"params\":{\"response\":\"ABI encoded response that will be returned if method is invoked\"}},\"givenCalldataReturn(bytes,bytes)\":{\"details\":\"After calling this method, the mock will return `response` when the given methodId is called with matching arguments. These exact calldataMocks will take precedence over all other calldataMocks.\",\"params\":{\"call\":\"ABI encoded calldata (methodId and arguments)\",\"response\":\"ABI encoded response that will be returned if contract is invoked with calldata\"}},\"givenMethodReturn(bytes,bytes)\":{\"details\":\"After calling this method, the mock will return `response` when the given methodId is called regardless of arguments. If the methodId and arguments are mocked more specifically (using `givenMethodAndArguments`) the latter will take precedence.\",\"params\":{\"method\":\"ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\",\"response\":\"ABI encoded response that will be returned if method is invoked\"}},\"invocationCount()\":{\"details\":\"Returns the number of times anything has been called on this mock since last reset\"},\"invocationCountForCalldata(bytes)\":{\"details\":\"Returns the number of times this mock has been called with the exact calldata since last reset.\",\"params\":{\"call\":\"ABI encoded calldata (methodId and arguments)\"}},\"invocationCountForMethod(bytes)\":{\"details\":\"Returns the number of times the given method has been called on this mock since last reset\",\"params\":{\"method\":\"ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\"}},\"reset()\":{\"details\":\"Resets all mocked methods and invocation counts.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MockContract.sol\":\"MockInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/MockContract.sol\":{\"keccak256\":\"0x1a1c8ed108b0b7d94103c54a9f2d4f64038d44f9eedf39b5bc8217c5d0835b14\",\"urls\":[\"bzz-raw://e9d67501e0e49eba34aa220b4037423b03939f47533f8d5a74ee8f997895f6d6\",\"dweb:/ipfs/QmPn85MaX7m3jX7fCcibFeTMg9YPEw2JgtARQBqFCbMN7v\"]}},\"version\":1}"
        }
      },
      "contracts/RewarderSimple.sol": {
        "RewarderSimple": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_rewardMultiplier",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_rewardToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_rewardDecimals",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_MASTERCHEF_V2",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "onReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardAmount",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "rewardTokens",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "rewardAmounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "61010060405234801561001157600080fd5b50604051610b9f380380610b9f8339818101604052608081101561003457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050600084116100bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610b7d6022913960400191505060405180910390fd5b604d821115610133576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f526577617264657253696d706c653a3a496e76616c696420646563696d616c7381525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561019d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6101f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180610b4b6032913960400191505060405180910390fd5b83608081815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505081600a0a60c081815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050505060805160a05160601c60c05160e05160601c6108806102cb600039806101b452508061025a528061052e5250806102ba528061038b52806103db528061047a52508061027e528061055252506108806000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806344af0fa71461003b578063d63b3c49146100bd575b600080fd5b6100bb600480360360a081101561005157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506101b2565b005b610113600480360360608110156100d357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610429565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561015a57808201518184015260208101905061013f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561019c578082015181840152602081019050610181565b5050505090500194505050505060405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061082a6021913960400191505060405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006102ac7f0000000000000000000000000000000000000000000000000000000000000000856105b190919063ffffffff16565b816102b357fe5b04905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561033f57600080fd5b505afa158015610353573d6000803e3d6000fd5b505050506040513d602081101561036957600080fd5b81019080805190602001909291905050509050808211156103d4576103cf85827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106469092919063ffffffff16565b610420565b61041f85837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106469092919063ffffffff16565b5b50505050505050565b6060806060600167ffffffffffffffff8111801561044657600080fd5b506040519080825280602002602001820160405280156104755781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106104a657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060600167ffffffffffffffff811180156104fa57600080fd5b506040519080825280602002602001820160405280156105295781602001602082028036833780820191505090505b5090507f00000000000000000000000000000000000000000000000000000000000000006105807f0000000000000000000000000000000000000000000000000000000000000000876105b190919063ffffffff16565b8161058757fe5b048160008151811061059557fe5b6020026020010181815250508181935093505050935093915050565b6000808214806105ce57508282838502925082816105cb57fe5b04145b610640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f426f72696e674d6174683a204d756c204f766572666c6f77000000000000000081525060200191505060405180910390fd5b92915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061070957805182526020820191506020810190506020830392506106e6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461076b576040519150601f19603f3d011682016040523d82523d6000602084013e610770565b606091505b50915091508180156107b057506000815114806107af575080806020019051602081101561079d57600080fd5b81019080805190602001909291905050505b5b610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f426f72696e6745524332303a205472616e73666572206661696c65640000000081525060200191505060405180910390fd5b505050505056fe4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2ea2646970667358221220698c34eeb9ac86c540f758b5df8e3ffab21940bd3499a8709bbc4b7b962f965764736f6c634300060c0033526577617264657253696d706c653a3a43616e6e6f7420636f6e7374727563742077697468207a65726f2061646472657373526577617264657253696d706c653a3a496e76616c6964206d756c7469706c696572",
              "opcodes": "PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB9F CODESIZE SUB DUP1 PUSH2 0xB9F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x0 DUP5 GT PUSH2 0xBC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB7D PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4D DUP3 GT ISZERO PUSH2 0x133 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x526577617264657253696D706C653A3A496E76616C696420646563696D616C73 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x19D JUMPI POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0x1F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB4B PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP2 PUSH1 0xA EXP PUSH1 0xC0 DUP2 DUP2 MSTORE POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xE0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE POP POP POP POP POP POP PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x880 PUSH2 0x2CB PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1B4 MSTORE POP DUP1 PUSH2 0x25A MSTORE DUP1 PUSH2 0x52E MSTORE POP DUP1 PUSH2 0x2BA MSTORE DUP1 PUSH2 0x38B MSTORE DUP1 PUSH2 0x3DB MSTORE DUP1 PUSH2 0x47A MSTORE POP DUP1 PUSH2 0x27E MSTORE DUP1 PUSH2 0x552 MSTORE POP PUSH2 0x880 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 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x44AF0FA7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0xBD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1B2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x429 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x13F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x181 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x256 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x2AC PUSH32 0x0 DUP6 PUSH2 0x5B1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2B3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x353 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3D4 JUMPI PUSH2 0x3CF DUP6 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x646 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST PUSH2 0x41F DUP6 DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x646 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x475 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH1 0x60 PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x529 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x0 PUSH2 0x580 PUSH32 0x0 DUP8 PUSH2 0x5B1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x587 JUMPI INVALID JUMPDEST DIV DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x595 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP2 SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ DUP1 PUSH2 0x5CE JUMPI POP DUP3 DUP3 DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 PUSH2 0x5CB JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x709 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x6E6 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x76B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x770 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x7B0 JUMPI POP PUSH1 0x0 DUP2 MLOAD EQ DUP1 PUSH2 0x7AF JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP JUMPDEST JUMPDEST PUSH2 0x822 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP INVALID 0x4F PUSH15 0x6C79204D4356322063616E2063616C PUSH13 0x20746869732066756E6374696F PUSH15 0x2EA2646970667358221220698C34EE 0xB9 0xAC DUP7 0xC5 BLOCKHASH 0xF7 PC 0xB5 0xDF DUP15 EXTCODEHASH STATICCALL 0xB2 NOT BLOCKHASH 0xBD CALLVALUE SWAP10 0xA8 PUSH17 0x9BBC4B7B962F965764736F6C634300060C STOP CALLER MSTORE PUSH6 0x776172646572 MSTORE8 PUSH10 0x6D706C653A3A43616E6E PUSH16 0x7420636F6E7374727563742077697468 KECCAK256 PUSH27 0x65726F2061646472657373526577617264657253696D706C653A3A 0x49 PUSH15 0x76616C6964206D756C7469706C6965 PUSH19 0x0 ",
              "sourceMap": "257:2069:5:-:0;;;564:654;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;721:1;701:17;:21;693:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;799:2;780:15;:21;;772:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:1;871:26;;:12;:26;;;;:71;;;;;940:1;914:28;;:14;:28;;;;871:71;849:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1052:17;1033:36;;;;;;1101:12;1080:34;;;;;;;;;;;;1154:15;1148:2;:21;1125:44;;;;;;1196:14;1180:30;;;;;;;;;;;;564:654;;;;257:2069;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "3679": [
                  {
                    "length": 32,
                    "start": 638
                  },
                  {
                    "length": 32,
                    "start": 1362
                  }
                ],
                "3681": [
                  {
                    "length": 32,
                    "start": 698
                  },
                  {
                    "length": 32,
                    "start": 907
                  },
                  {
                    "length": 32,
                    "start": 987
                  },
                  {
                    "length": 32,
                    "start": 1146
                  }
                ],
                "3683": [
                  {
                    "length": 32,
                    "start": 602
                  },
                  {
                    "length": 32,
                    "start": 1326
                  }
                ],
                "3685": [
                  {
                    "length": 32,
                    "start": 436
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c806344af0fa71461003b578063d63b3c49146100bd575b600080fd5b6100bb600480360360a081101561005157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506101b2565b005b610113600480360360608110156100d357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610429565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561015a57808201518184015260208101905061013f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561019c578082015181840152602081019050610181565b5050505090500194505050505060405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061082a6021913960400191505060405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006102ac7f0000000000000000000000000000000000000000000000000000000000000000856105b190919063ffffffff16565b816102b357fe5b04905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561033f57600080fd5b505afa158015610353573d6000803e3d6000fd5b505050506040513d602081101561036957600080fd5b81019080805190602001909291905050509050808211156103d4576103cf85827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106469092919063ffffffff16565b610420565b61041f85837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166106469092919063ffffffff16565b5b50505050505050565b6060806060600167ffffffffffffffff8111801561044657600080fd5b506040519080825280602002602001820160405280156104755781602001602082028036833780820191505090505b5090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106104a657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060600167ffffffffffffffff811180156104fa57600080fd5b506040519080825280602002602001820160405280156105295781602001602082028036833780820191505090505b5090507f00000000000000000000000000000000000000000000000000000000000000006105807f0000000000000000000000000000000000000000000000000000000000000000876105b190919063ffffffff16565b8161058757fe5b048160008151811061059557fe5b6020026020010181815250508181935093505050935093915050565b6000808214806105ce57508282838502925082816105cb57fe5b04145b610640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f426f72696e674d6174683a204d756c204f766572666c6f77000000000000000081525060200191505060405180910390fd5b92915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061070957805182526020820191506020810190506020830392506106e6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461076b576040519150601f19603f3d011682016040523d82523d6000602084013e610770565b606091505b50915091508180156107b057506000815114806107af575080806020019051602081101561079d57600080fd5b81019080805190602001909291905050505b5b610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f426f72696e6745524332303a205472616e73666572206661696c65640000000081525060200191505060405180910390fd5b505050505056fe4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2ea2646970667358221220698c34eeb9ac86c540f758b5df8e3ffab21940bd3499a8709bbc4b7b962f965764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x44AF0FA7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xD63B3C49 EQ PUSH2 0xBD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1B2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x113 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x429 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x13F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x181 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x256 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x82A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x2AC PUSH32 0x0 DUP6 PUSH2 0x5B1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x2B3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x353 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x3D4 JUMPI PUSH2 0x3CF DUP6 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x646 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x420 JUMP JUMPDEST PUSH2 0x41F DUP6 DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x646 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x60 PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x475 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4A6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH1 0x60 PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x529 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x0 PUSH2 0x580 PUSH32 0x0 DUP8 PUSH2 0x5B1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 PUSH2 0x587 JUMPI INVALID JUMPDEST DIV DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x595 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP2 SWAP4 POP SWAP4 POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ DUP1 PUSH2 0x5CE JUMPI POP DUP3 DUP3 DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 PUSH2 0x5CB JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x18 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x426F72696E674D6174683A204D756C204F766572666C6F770000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x709 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x6E6 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x76B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x770 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x7B0 JUMPI POP PUSH1 0x0 DUP2 MLOAD EQ DUP1 PUSH2 0x7AF JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP JUMPDEST JUMPDEST PUSH2 0x822 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x426F72696E6745524332303A205472616E73666572206661696C656400000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP INVALID 0x4F PUSH15 0x6C79204D4356322063616E2063616C PUSH13 0x20746869732066756E6374696F PUSH15 0x2EA2646970667358221220698C34EE 0xB9 0xAC DUP7 0xC5 BLOCKHASH 0xF7 PC 0xB5 0xDF DUP15 EXTCODEHASH STATICCALL 0xB2 NOT BLOCKHASH 0xBD CALLVALUE SWAP10 0xA8 PUSH17 0x9BBC4B7B962F965764736F6C634300060C STOP CALLER ",
              "sourceMap": "257:2069:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1226:456;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1690:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1226:456;2227:13;2213:27;;:10;:27;;;2191:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1343:21:::1;1404:20;1367:34;1384:16;1367:12;:16;;:34;;;;:::i;:::-;:57;;;;;;1343:81;;1435:17;1455:11;:21;;;1485:4;1455:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;1435:56;;1522:9;1506:13;:25;1502:173;;;1548:39;1573:2;1577:9;1548:11;:24;;;;:39;;;;;:::i;:::-;1502:173;;;1620:43;1645:2;1649:13;1620:11;:24;;;;:43;;;;;:::i;:::-;1502:173;2312:1;;1226:456:::0;;;;;:::o;1690:464::-;1785:28;1815:30;1858:29;1903:1;1890:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1858:47;;1936:11;1916:13;1930:1;1916:16;;;;;;;;;;;;;:32;;;;;;;;;;;1959:31;2007:1;1993:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1959:50;;2077:20;2040:34;2057:16;2040:12;:16;;:34;;;;:::i;:::-;:57;;;;;;2020:14;2035:1;2020:17;;;;;;;;;;;;;:77;;;;;2116:13;2131:14;2108:38;;;;;;1690:464;;;;;;:::o;470:137:2:-;528:9;553:1;548;:6;:28;;;;575:1;570;567;563;:5;559:9;;;558:13;;;;;;:18;548:28;540:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;470:137;;;;:::o;951:304:1:-;1036:12;1050:17;1079:5;1071:19;;1114:10;1126:2;1130:6;1091:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1071:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:103;;;;1157:7;:57;;;;;1184:1;1169:4;:11;:16;:44;;;;1200:4;1189:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1169:44;1157:57;1149:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;951:304;;;;;:::o"
            },
            "methodIdentifiers": {
              "onReward(uint256,address,address,uint256,uint256)": "44af0fa7",
              "pendingTokens(uint256,address,uint256)": "d63b3c49"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rewardDecimals\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_MASTERCHEF_V2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"rewardTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rewardAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/RewarderSimple.sol\":\"RewarderSimple\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://149f2f758deda74a5e855ff934fe93daadadb583d09440832e908365f9235d29\",\"dweb:/ipfs/QmUsZkg1zhehPbPBbf15Pv5BEnP4eaKMpJ1cBN9LGaZurC\"]},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b529d3c0ce62bf9fe78f919076e8bf6a1f06803a8977bcabfde79f1979129a6c\",\"dweb:/ipfs/QmbqHLBPKtSb9wDCrzxeRSRmZJpNdstKjCYXo5EcYEFL4e\"]},\"@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol\":{\"keccak256\":\"0x2d0e99483c5618251d4b52e8551918253bf044c63e0d09a2f1f652671f9ff762\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://455e6b5fc9912a2660e6c7a5ed664f89400cc80b3328e50134196d6e21773461\",\"dweb:/ipfs/QmUofeuCbKDdK9DMVo5A7AHys6MwqYmNQM6HaryLbr9g2g\"]},\"contracts/RewarderSimple.sol\":{\"keccak256\":\"0x6fcac6dacfe919b861bd0be79aeb4f7d04666a03da21d7de17def6b488f2a63e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c0d50d12e2fc77a7d0fb42abbcdb07097e8b76b7e7858aaeb10f032145fe0fe\",\"dweb:/ipfs/QmYHsghCcGEvftT3YRTg2MAZqGshWoRsgs2ogakNh9XycM\"]},\"contracts/interfaces/IRewarder.sol\":{\"keccak256\":\"0x0129f57bda3731f913946adf54cdeafa96e342f5ba937f4d73e5b553da06aa9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0098f65878a449c2d96f5617020180c6f453cb618bccf58da436d68d3e355ecb\",\"dweb:/ipfs/QmaFVyYo6t5Z5Lh3mW5STrh6Da485Yh1PAsiSWpagVQ1jx\"]}},\"version\":1}"
        }
      },
      "contracts/interfaces/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "totalSupply()": "18160ddd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a0cc181163d2416b1857e018ff47dca8e1d6fe015fdddb1bf764fd281a2d041\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dcdbf7659d324738c7792386e216d6aa6f932421c727fd03043e8c049ed9b23\",\"dweb:/ipfs/QmT5CNMLYxnVz7PiLdDvb8dte497d4tmantVdTRnSJEvb7\"]}},\"version\":1}"
        }
      },
      "contracts/interfaces/IMiniChefV2.sol": {
        "IMiniChefV2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_funder",
                  "type": "address"
                }
              ],
              "name": "addFunder",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "disableMigrator",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "emergencyWithdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "extension",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "maxFunding",
                  "type": "uint256"
                }
              ],
              "name": "extendRewardsViaDuration",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "funding",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minExtension",
                  "type": "uint256"
                }
              ],
              "name": "extendRewardsViaFunding",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "funding",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "fundRewards",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "harvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                }
              ],
              "name": "migrate",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_funder",
                  "type": "address"
                }
              ],
              "name": "removeFunder",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "duration",
                  "type": "uint256"
                }
              ],
              "name": "resetRewardsDuration",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                }
              ],
              "name": "updatePool",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "accRewardPerShare",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint64",
                      "name": "lastRewardTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "allocPoint",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct IMiniChefV2.PoolInfo",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_user",
                  "type": "address"
                }
              ],
              "name": "userInfo",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "withdrawAndHarvest",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "addFunder(address)": "1bbe9d8c",
              "deposit(uint256,uint256,address)": "8dbdbe6d",
              "disableMigrator()": "f6d676be",
              "emergencyWithdraw(uint256,address)": "2f940c70",
              "extendRewardsViaDuration(uint256,uint256)": "933f084f",
              "extendRewardsViaFunding(uint256,uint256)": "19610b2b",
              "fundRewards(uint256,uint256)": "28662551",
              "harvest(uint256,address)": "18fccc76",
              "migrate(uint256)": "454b0608",
              "poolLength()": "081e3eda",
              "removeFunder(address)": "dcd18dd4",
              "resetRewardsDuration(uint256)": "4b87e90f",
              "updatePool(uint256)": "51eb05a6",
              "userInfo(uint256,address)": "93f1a40b",
              "withdraw(uint256,uint256,address)": "0ad58d2f",
              "withdrawAndHarvest(uint256,uint256,address)": "d1abb907"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_funder\",\"type\":\"address\"}],\"name\":\"addFunder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableMigrator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"emergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"extension\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFunding\",\"type\":\"uint256\"}],\"name\":\"extendRewardsViaDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"funding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minExtension\",\"type\":\"uint256\"}],\"name\":\"extendRewardsViaFunding\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"funding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"fundRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"harvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_funder\",\"type\":\"address\"}],\"name\":\"removeFunder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"resetRewardsDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"}],\"name\":\"updatePool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accRewardPerShare\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastRewardTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"allocPoint\",\"type\":\"uint64\"}],\"internalType\":\"struct IMiniChefV2.PoolInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"userInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAndHarvest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMiniChefV2.sol\":\"IMiniChefV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMiniChefV2.sol\":{\"keccak256\":\"0xc2e0dbdf07793a45285888ca750cec1c2a07192cf2dce400f6749861c88f498a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ea4561632aa6e06facd285db8992986923a171556ce302aefbb53d303cd04e4\",\"dweb:/ipfs/QmUR77jN6iSeceex27Zuqo8KoyBftKx6YKK3VTmYsBcmjS\"]}},\"version\":1}"
        }
      },
      "contracts/interfaces/IRewarder.sol": {
        "IRewarder": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "newLpAmount",
                  "type": "uint256"
                }
              ],
              "name": "onReward",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "pid",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "rewardAmount",
                  "type": "uint256"
                }
              ],
              "name": "pendingTokens",
              "outputs": [
                {
                  "internalType": "contract IERC20[]",
                  "name": "",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onReward(uint256,address,address,uint256,uint256)": "44af0fa7",
              "pendingTokens(uint256,address,uint256)": "d63b3c49"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newLpAmount\",\"type\":\"uint256\"}],\"name\":\"onReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pid\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"}],\"name\":\"pendingTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IRewarder.sol\":\"IRewarder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x8004f86e4536cca55b8eeb2621fe18e1ee57d779396ddef50bce5bf70fb59867\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://149f2f758deda74a5e855ff934fe93daadadb583d09440832e908365f9235d29\",\"dweb:/ipfs/QmUsZkg1zhehPbPBbf15Pv5BEnP4eaKMpJ1cBN9LGaZurC\"]},\"@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol\":{\"keccak256\":\"0x69f1ccf716991e5d6d64dc0e3bc3828fd1990bc18400d680b1aa1960675daaaa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b529d3c0ce62bf9fe78f919076e8bf6a1f06803a8977bcabfde79f1979129a6c\",\"dweb:/ipfs/QmbqHLBPKtSb9wDCrzxeRSRmZJpNdstKjCYXo5EcYEFL4e\"]},\"contracts/interfaces/IRewarder.sol\":{\"keccak256\":\"0x0129f57bda3731f913946adf54cdeafa96e342f5ba937f4d73e5b553da06aa9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0098f65878a449c2d96f5617020180c6f453cb618bccf58da436d68d3e355ecb\",\"dweb:/ipfs/QmaFVyYo6t5Z5Lh3mW5STrh6Da485Yh1PAsiSWpagVQ1jx\"]}},\"version\":1}"
        }
      },
      "contracts/libraries/SignedSafeMath.sol": {
        "SignedSafeMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201ccfd39329d2e4ea66f84f4afe92ff66530e8adeff244c524ba1179cc93c94ca64736f6c634300060c0033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR 0xCF 0xD3 SWAP4 0x29 0xD2 0xE4 0xEA PUSH7 0xF84F4AFE92FF66 MSTORE8 0xE DUP11 0xDE SELFDESTRUCT 0x24 0x4C MSTORE 0x4B LOG1 OR SWAP13 0xC9 EXTCODECOPY SWAP5 0xCA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "62:2724:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201ccfd39329d2e4ea66f84f4afe92ff66530e8adeff244c524ba1179cc93c94ca64736f6c634300060c0033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR 0xCF 0xD3 SWAP4 0x29 0xD2 0xE4 0xEA PUSH7 0xF84F4AFE92FF66 MSTORE8 0xE DUP11 0xDE SELFDESTRUCT 0x24 0x4C MSTORE 0x4B LOG1 OR SWAP13 0xC9 EXTCODECOPY SWAP5 0xCA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
              "sourceMap": "62:2724:9:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/libraries/SignedSafeMath.sol\":{\"keccak256\":\"0x74a05f6351e182cc589e99adaf3fecfc03f984c964c0c1e2fca3e59b9124a0d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcb902caf112ebdc471a147f8e8459c9eeb3fd7980d4d112d561046d16a22a53\",\"dweb:/ipfs/QmfSxZKE3RP3gTPws1MEDWThhorQx4ApEr18FoBBdx9w2t\"]}},\"version\":1}"
        }
      },
      "openzeppelin-contracts-legacy/GSN/Context.sol": {
        "Context": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-legacy/GSN/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]}},\"version\":1}"
        }
      },
      "openzeppelin-contracts-legacy/access/Ownable.sol": {
        "Ownable": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "previousOwner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "OwnershipTransferred",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "renounceOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "newOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "owner()": "8da5cb5b",
              "renounceOwnership()": "715018a6",
              "transferOwnership(address)": "f2fde38b"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"openzeppelin-contracts-legacy/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-contracts-legacy/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"openzeppelin-contracts-legacy/access/Ownable.sol\":{\"keccak256\":\"0xf7c39c7e6d06ed3bda90cfefbcbf2ddc32c599c3d6721746546ad64946efccaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb57a28e189cd8b05748db44bdd51d608e6f1364dd1b35ad921e1bc82c10631e\",\"dweb:/ipfs/QmaWWTBbVu2pRR9XUbE4iC159NoP59cRF9ZJwhf4ghFN9i\"]}},\"version\":1}"
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "contracts/MockContract.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/MockContract.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3628",
        "formattedMessage": "contracts/MockContract.sol:78:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract MockContract is MockInterface {\n^ (Relevant source part starts here and spans across multiple lines).\ncontracts/MockContract.sol:328:2: The payable fallback function is defined here.\n\tfallback () payable external {\n ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
        "secondarySourceLocations": [
          {
            "end": 13100,
            "file": "contracts/MockContract.sol",
            "message": "The payable fallback function is defined here.",
            "start": 11828
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 13102,
          "file": "contracts/MockContract.sol",
          "start": 3610
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              65
            ]
          },
          "id": 66,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 65,
              "linearizedBaseContracts": [
                65
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "18160ddd",
                  "id": 6,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "104:2:0"
                  },
                  "returnParameters": {
                    "id": 5,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6,
                        "src": "130:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "130:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "129:9:0"
                  },
                  "scope": 65,
                  "src": "84:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "70a08231",
                  "id": 13,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 9,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13,
                        "src": "164:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "164:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "163:17:0"
                  },
                  "returnParameters": {
                    "id": 12,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 13,
                        "src": "204:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "204:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "203:9:0"
                  },
                  "scope": 65,
                  "src": "145:68:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "dd62ed3e",
                  "id": 22,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 18,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22,
                        "src": "238:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "238:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22,
                        "src": "253:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "253:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "237:32:0"
                  },
                  "returnParameters": {
                    "id": 21,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22,
                        "src": "293:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "293:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "292:9:0"
                  },
                  "scope": 65,
                  "src": "219:83:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 31,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 27,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 31,
                        "src": "325:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "325:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 31,
                        "src": "342:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "324:33:0"
                  },
                  "returnParameters": {
                    "id": 30,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 31,
                        "src": "376:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:6:0"
                  },
                  "scope": 65,
                  "src": "308:74:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 39,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 38,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 33,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 39,
                        "src": "403:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "403:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 35,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 39,
                        "src": "425:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 34,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "425:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 37,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 39,
                        "src": "445:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 36,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "445:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "402:57:0"
                  },
                  "src": "388:72:0"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 47,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 46,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 41,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 47,
                        "src": "481:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 40,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "481:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 43,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 47,
                        "src": "504:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 42,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "504:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 45,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 47,
                        "src": "529:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 44,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "529:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "480:63:0"
                  },
                  "src": "466:78:0"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d505accf",
                  "id": 64,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 62,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 49,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "585:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 48,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "585:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 51,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "600:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 50,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "600:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 53,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "617:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 52,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 55,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "632:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 54,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "632:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 57,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "650:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 56,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "650:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 59,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "659:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 58,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 61,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 64,
                        "src": "670:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 60,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "584:96:0"
                  },
                  "returnParameters": {
                    "id": 63,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "689:0:0"
                  },
                  "scope": 65,
                  "src": "569:121:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 66,
              "src": "60:633:0"
            }
          ],
          "src": "33:660:0"
        },
        "id": 0
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
          "exportedSymbols": {
            "BoringERC20": [
              281
            ]
          },
          "id": 282,
          "license": "UNLICENSED",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 67,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:23:1"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 68,
              "nodeType": "ImportDirective",
              "scope": 282,
              "sourceUnit": 66,
              "src": "67:34:1",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 281,
              "linearizedBaseContracts": [
                281
              ],
              "name": "BoringERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 106,
                    "nodeType": "Block",
                    "src": "203:197:1",
                    "statements": [
                      {
                        "assignments": [
                          76,
                          78
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 76,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 106,
                            "src": "215:12:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 75,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "215:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 78,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 106,
                            "src": "229:17:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 77,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "229:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 89,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783935643839623431",
                                  "id": 86,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "299:10:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2514000705_by_1",
                                    "typeString": "int_const 2514000705"
                                  },
                                  "value": "0x95d89b41"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2514000705_by_1",
                                    "typeString": "int_const 2514000705"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 84,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "276:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 85,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "276:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 87,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "276:34:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 81,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 70,
                                  "src": "258:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 80,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "250:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 79,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "250:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 82,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "250:14:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 83,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "250:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 88,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "250:61:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "214:97:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 95,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 90,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 76,
                              "src": "329:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 94,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 91,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 78,
                                  "src": "340:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 92,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "340:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 93,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "354:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "340:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "329:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "3f3f3f",
                            "id": 103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "387:5:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ad68b4dd5516c9b8c2050c111c09e315e44fd13499c6724a87c1b4642b615187",
                              "typeString": "literal_string \"???\""
                            },
                            "value": "???"
                          },
                          "id": 104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "329:63:1",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 98,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 78,
                                "src": "369:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 100,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "376:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 99,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "376:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "id": 101,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "375:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 96,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "358:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 97,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "358:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "358:26:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 74,
                        "id": 105,
                        "nodeType": "Return",
                        "src": "322:70:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 107,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeSymbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 71,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 70,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 107,
                        "src": "152:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 69,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "152:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "151:14:1"
                  },
                  "returnParameters": {
                    "id": 74,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 73,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 107,
                        "src": "188:13:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 72,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "188:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "187:15:1"
                  },
                  "scope": 281,
                  "src": "132:268:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 145,
                    "nodeType": "Block",
                    "src": "477:197:1",
                    "statements": [
                      {
                        "assignments": [
                          115,
                          117
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 115,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 145,
                            "src": "489:12:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 114,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "489:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 117,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 145,
                            "src": "503:17:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 116,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "503:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 128,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783036666464653033",
                                  "id": 125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "573:10:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_117300739_by_1",
                                    "typeString": "int_const 117300739"
                                  },
                                  "value": "0x06fdde03"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_117300739_by_1",
                                    "typeString": "int_const 117300739"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 123,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "550:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "550:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "550:34:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 120,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 109,
                                  "src": "532:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "524:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 118,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "524:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "524:14:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "524:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "524:61:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "488:97:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 129,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 115,
                              "src": "603:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 130,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 117,
                                  "src": "614:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "614:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "628:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "614:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "603:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "3f3f3f",
                            "id": 142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "661:5:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ad68b4dd5516c9b8c2050c111c09e315e44fd13499c6724a87c1b4642b615187",
                              "typeString": "literal_string \"???\""
                            },
                            "value": "???"
                          },
                          "id": 143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "603:63:1",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 137,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 117,
                                "src": "643:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "650:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 138,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "650:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "id": 140,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "649:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 135,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "632:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "632:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "632:26:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 113,
                        "id": 144,
                        "nodeType": "Return",
                        "src": "596:70:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 146,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeName",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 110,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 109,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 146,
                        "src": "426:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 108,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "426:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "425:14:1"
                  },
                  "returnParameters": {
                    "id": 113,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 112,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 146,
                        "src": "462:13:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 111,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "462:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "461:15:1"
                  },
                  "scope": 281,
                  "src": "408:266:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 184,
                    "nodeType": "Block",
                    "src": "748:195:1",
                    "statements": [
                      {
                        "assignments": [
                          154,
                          156
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 154,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 184,
                            "src": "760:12:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 153,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "760:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 156,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 184,
                            "src": "774:17:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 155,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "774:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 167,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783331336365353637",
                                  "id": 164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "844:10:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  },
                                  "value": "0x313ce567"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 162,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "821:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "821:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "821:34:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 159,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 148,
                                  "src": "803:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "795:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 157,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "795:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "795:14:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "795:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "795:61:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "759:97:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 168,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 154,
                              "src": "874:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 169,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 156,
                                  "src": "885:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "885:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "900:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "885:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "874:28:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "3138",
                            "id": 181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "933:2:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_18_by_1",
                              "typeString": "int_const 18"
                            },
                            "value": "18"
                          },
                          "id": 182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "874:61:1",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 176,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 156,
                                "src": "916:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 178,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "923:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint8_$",
                                      "typeString": "type(uint8)"
                                    },
                                    "typeName": {
                                      "id": 177,
                                      "name": "uint8",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "923:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  }
                                ],
                                "id": 179,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "922:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 174,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "905:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "905:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "905:25:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 152,
                        "id": 183,
                        "nodeType": "Return",
                        "src": "867:68:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 185,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeDecimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 148,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 185,
                        "src": "704:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 147,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "704:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "703:14:1"
                  },
                  "returnParameters": {
                    "id": 152,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 151,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 185,
                        "src": "741:5:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 150,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "741:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "740:7:1"
                  },
                  "scope": 281,
                  "src": "682:261:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 230,
                    "nodeType": "Block",
                    "src": "1024:231:1",
                    "statements": [
                      {
                        "assignments": [
                          195,
                          197
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 195,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 230,
                            "src": "1036:12:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 194,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1036:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 197,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 230,
                            "src": "1050:17:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 196,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1050:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 210,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30786139303539636262",
                                  "id": 205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1114:10:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2835717307_by_1",
                                    "typeString": "int_const 2835717307"
                                  },
                                  "value": "0xa9059cbb"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 206,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 189,
                                  "src": "1126:2:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 207,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 191,
                                  "src": "1130:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2835717307_by_1",
                                    "typeString": "int_const 2835717307"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 203,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1091:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1091:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1091:46:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 200,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 187,
                                  "src": "1079:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1071:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 198,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1071:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1071:14:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1071:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1071:67:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1035:103:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 212,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 195,
                                "src": "1157:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 224,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 216,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 213,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 197,
                                          "src": "1169:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 214,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1169:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 215,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1184:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "1169:16:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 219,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 197,
                                          "src": "1200:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "id": 221,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1207:4:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 220,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1207:4:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "id": 222,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "1206:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 217,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1189:3:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 218,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1189:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 223,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1189:24:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1169:44:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 225,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1168:46:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1157:57:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e6745524332303a205472616e73666572206661696c6564",
                              "id": 227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1216:30:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27",
                                "typeString": "literal_string \"BoringERC20: Transfer failed\""
                              },
                              "value": "BoringERC20: Transfer failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1a3f0851ddc9e157ae96e52ed9dfd71a8cb4b1cf2a73b26b9f3f9e0aa9469d27",
                                "typeString": "literal_string \"BoringERC20: Transfer failed\""
                              }
                            ],
                            "id": 211,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1149:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1149:98:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 229,
                        "nodeType": "ExpressionStatement",
                        "src": "1149:98:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 231,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 187,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 231,
                        "src": "973:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 186,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "973:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 189,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 231,
                        "src": "987:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 191,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 231,
                        "src": "999:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "999:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "972:42:1"
                  },
                  "returnParameters": {
                    "id": 193,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1024:0:1"
                  },
                  "scope": 281,
                  "src": "951:304:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 279,
                    "nodeType": "Block",
                    "src": "1354:241:1",
                    "statements": [
                      {
                        "assignments": [
                          243,
                          245
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 243,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 279,
                            "src": "1366:12:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 242,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1366:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 245,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 279,
                            "src": "1380:17:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 244,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1380:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 259,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783233623837326464",
                                  "id": 253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1444:10:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_599290589_by_1",
                                    "typeString": "int_const 599290589"
                                  },
                                  "value": "0x23b872dd"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 254,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 235,
                                  "src": "1456:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 255,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 237,
                                  "src": "1462:2:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 256,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 239,
                                  "src": "1466:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_599290589_by_1",
                                    "typeString": "int_const 599290589"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 251,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1421:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1421:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1421:52:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 248,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 233,
                                  "src": "1409:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1401:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 246,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1401:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1401:14:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 250,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1401:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1401:73:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1365:109:1"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 261,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 243,
                                "src": "1493:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 273,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 265,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 262,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 245,
                                          "src": "1505:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 263,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1505:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 264,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1520:1:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "1505:16:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 268,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 245,
                                          "src": "1536:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "id": 270,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1543:4:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 269,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1543:4:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "id": 271,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "1542:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 266,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1525:3:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 267,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1525:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 272,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1525:24:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1505:44:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 274,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1504:46:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1493:57:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e6745524332303a205472616e7366657246726f6d206661696c6564",
                              "id": 276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1552:34:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dffd2f381f9235cb5927387124071d63a91c90f587c3edae76629d7dc4794f26",
                                "typeString": "literal_string \"BoringERC20: TransferFrom failed\""
                              },
                              "value": "BoringERC20: TransferFrom failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dffd2f381f9235cb5927387124071d63a91c90f587c3edae76629d7dc4794f26",
                                "typeString": "literal_string \"BoringERC20: TransferFrom failed\""
                              }
                            ],
                            "id": 260,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1485:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1485:102:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 278,
                        "nodeType": "ExpressionStatement",
                        "src": "1485:102:1"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 280,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 240,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 233,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 280,
                        "src": "1289:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 232,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "1289:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 235,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 280,
                        "src": "1303:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 234,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1303:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 237,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 280,
                        "src": "1317:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 236,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1317:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 239,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 280,
                        "src": "1329:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 238,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1329:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1288:56:1"
                  },
                  "returnParameters": {
                    "id": 241,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1354:0:1"
                  },
                  "scope": 281,
                  "src": "1263:332:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 282,
              "src": "105:1493:1"
            }
          ],
          "src": "40:1558:1"
        },
        "id": 1
      },
      "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol": {
        "ast": {
          "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
          "exportedSymbols": {
            "BoringMath": [
              434
            ],
            "BoringMath128": [
              479
            ],
            "BoringMath32": [
              569
            ],
            "BoringMath64": [
              524
            ]
          },
          "id": 570,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 283,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 434,
              "linearizedBaseContracts": [
                434
              ],
              "name": "BoringMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 304,
                    "nodeType": "Block",
                    "src": "280:56:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 300,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 297,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 293,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 290,
                                      "src": "290:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 296,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 294,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 285,
                                        "src": "294:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 295,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 287,
                                        "src": "298:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "294:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "290:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 298,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "289:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 299,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 287,
                                "src": "304:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "289:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "307:26:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 292,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "281:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "281:53:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 303,
                        "nodeType": "ExpressionStatement",
                        "src": "281:53:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 305,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 285,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 305,
                        "src": "224:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "224:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 287,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 305,
                        "src": "235:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "235:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "223:22:2"
                  },
                  "returnParameters": {
                    "id": 291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 290,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 305,
                        "src": "269:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "269:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "268:11:2"
                  },
                  "scope": 434,
                  "src": "211:125:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 326,
                    "nodeType": "Block",
                    "src": "411:53:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 319,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 315,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 312,
                                      "src": "421:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 318,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 316,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 307,
                                        "src": "425:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 317,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 309,
                                        "src": "429:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "425:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "421:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 320,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "420:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 321,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 307,
                                "src": "435:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "420:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "438:23:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 314,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "412:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "412:50:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 325,
                        "nodeType": "ExpressionStatement",
                        "src": "412:50:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 327,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 307,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 327,
                        "src": "355:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 306,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "355:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 309,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 327,
                        "src": "366:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 308,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "366:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "354:22:2"
                  },
                  "returnParameters": {
                    "id": 313,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 312,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 327,
                        "src": "400:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 311,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "400:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "399:11:2"
                  },
                  "scope": 434,
                  "src": "342:122:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 354,
                    "nodeType": "Block",
                    "src": "539:68:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 337,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 331,
                                  "src": "548:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "553:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "548:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 344,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 340,
                                          "name": "c",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 334,
                                          "src": "559:1:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 343,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 341,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 329,
                                            "src": "563:1:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 342,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 331,
                                            "src": "567:1:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "563:5:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "559:9:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 345,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "558:11:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 346,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 331,
                                    "src": "570:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "558:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 348,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 329,
                                  "src": "575:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "558:18:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "548:28:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a204d756c204f766572666c6f77",
                              "id": 351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "578:26:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_efa2024ddfa13946089ac6325359d421926f574cb871587fa659a82734fa675e",
                                "typeString": "literal_string \"BoringMath: Mul Overflow\""
                              },
                              "value": "BoringMath: Mul Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_efa2024ddfa13946089ac6325359d421926f574cb871587fa659a82734fa675e",
                                "typeString": "literal_string \"BoringMath: Mul Overflow\""
                              }
                            ],
                            "id": 336,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "540:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "540:65:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 353,
                        "nodeType": "ExpressionStatement",
                        "src": "540:65:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 355,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 332,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 329,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 355,
                        "src": "483:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 328,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "483:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 331,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 355,
                        "src": "494:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 330,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "494:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "482:22:2"
                  },
                  "returnParameters": {
                    "id": 335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 334,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 355,
                        "src": "528:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "528:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "527:11:2"
                  },
                  "scope": 434,
                  "src": "470:137:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 380,
                    "nodeType": "Block",
                    "src": "673:101:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 363,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 357,
                                "src": "692:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 367,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "705:2:2",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 366,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "706:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 365,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "697:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 364,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "697:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "697:11:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "692:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a2075696e74313238204f766572666c6f77",
                              "id": 370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "710:30:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_64196137e15a5be4f7488ecfa918cfa26a6c2051ae3fb739c5de9bf8431fe9a5",
                                "typeString": "literal_string \"BoringMath: uint128 Overflow\""
                              },
                              "value": "BoringMath: uint128 Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_64196137e15a5be4f7488ecfa918cfa26a6c2051ae3fb739c5de9bf8431fe9a5",
                                "typeString": "literal_string \"BoringMath: uint128 Overflow\""
                              }
                            ],
                            "id": 362,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "684:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "684:57:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 372,
                        "nodeType": "ExpressionStatement",
                        "src": "684:57:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 373,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 360,
                            "src": "752:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 376,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 357,
                                "src": "764:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "756:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 374,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "756:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "756:10:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "752:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 379,
                        "nodeType": "ExpressionStatement",
                        "src": "752:14:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 381,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "to128",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 357,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 381,
                        "src": "628:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "628:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "627:11:2"
                  },
                  "returnParameters": {
                    "id": 361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 360,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 381,
                        "src": "662:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 359,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "662:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "661:11:2"
                  },
                  "scope": 434,
                  "src": "613:161:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 406,
                    "nodeType": "Block",
                    "src": "838:98:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 389,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 383,
                                "src": "857:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 393,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "869:2:2",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 392,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "870:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 391,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "862:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint64_$",
                                    "typeString": "type(uint64)"
                                  },
                                  "typeName": {
                                    "id": 390,
                                    "name": "uint64",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "862:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "862:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "src": "857:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a2075696e743634204f766572666c6f77",
                              "id": 396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "874:29:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b3c33265b589f76cafa7df00c0a28addc9a2c2003a13a1e0e4b875f58eb08764",
                                "typeString": "literal_string \"BoringMath: uint64 Overflow\""
                              },
                              "value": "BoringMath: uint64 Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b3c33265b589f76cafa7df00c0a28addc9a2c2003a13a1e0e4b875f58eb08764",
                                "typeString": "literal_string \"BoringMath: uint64 Overflow\""
                              }
                            ],
                            "id": 388,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "849:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "849:55:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 398,
                        "nodeType": "ExpressionStatement",
                        "src": "849:55:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 399,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 386,
                            "src": "915:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 402,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 383,
                                "src": "926:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "919:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 400,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "919:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "919:9:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "915:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 405,
                        "nodeType": "ExpressionStatement",
                        "src": "915:13:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 407,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "to64",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 383,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 407,
                        "src": "794:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 382,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "794:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "793:11:2"
                  },
                  "returnParameters": {
                    "id": 387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 386,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 407,
                        "src": "828:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 385,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "828:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "827:10:2"
                  },
                  "scope": 434,
                  "src": "780:156:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 432,
                    "nodeType": "Block",
                    "src": "1000:98:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 415,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 409,
                                "src": "1019:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 419,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "1031:2:2",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 418,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1032:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1024:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 416,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1024:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1024:10:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1019:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a2075696e743332204f766572666c6f77",
                              "id": 422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1036:29:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d8918cd18a3e78dc3bd01c63d310640381efda31e2d3ce751014519bc65013fc",
                                "typeString": "literal_string \"BoringMath: uint32 Overflow\""
                              },
                              "value": "BoringMath: uint32 Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d8918cd18a3e78dc3bd01c63d310640381efda31e2d3ce751014519bc65013fc",
                                "typeString": "literal_string \"BoringMath: uint32 Overflow\""
                              }
                            ],
                            "id": 414,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1011:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1011:55:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 424,
                        "nodeType": "ExpressionStatement",
                        "src": "1011:55:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 425,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 412,
                            "src": "1077:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 428,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 409,
                                "src": "1088:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1081:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              },
                              "typeName": {
                                "id": 426,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1081:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 429,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1081:9:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "1077:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 431,
                        "nodeType": "ExpressionStatement",
                        "src": "1077:13:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 433,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "to32",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 409,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 433,
                        "src": "956:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 408,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "956:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "955:11:2"
                  },
                  "returnParameters": {
                    "id": 413,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 412,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 433,
                        "src": "990:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 411,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "990:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "989:10:2"
                  },
                  "scope": 434,
                  "src": "942:156:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 570,
              "src": "185:916:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 479,
              "linearizedBaseContracts": [
                479
              ],
              "name": "BoringMath128",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 455,
                    "nodeType": "Block",
                    "src": "1203:56:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 448,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 444,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 441,
                                      "src": "1213:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "id": 447,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 445,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 436,
                                        "src": "1217:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 446,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 438,
                                        "src": "1221:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1217:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "1213:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "id": 449,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1212:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 450,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 438,
                                "src": "1227:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "1212:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1230:26:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 443,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1204:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1204:53:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 454,
                        "nodeType": "ExpressionStatement",
                        "src": "1204:53:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 456,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 439,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 436,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 456,
                        "src": "1147:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 435,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1147:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 438,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 456,
                        "src": "1158:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 437,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1158:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1146:22:2"
                  },
                  "returnParameters": {
                    "id": 442,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 441,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 456,
                        "src": "1192:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 440,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1192:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1191:11:2"
                  },
                  "scope": 479,
                  "src": "1134:125:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 477,
                    "nodeType": "Block",
                    "src": "1334:53:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 470,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 466,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 463,
                                      "src": "1344:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "id": 469,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 467,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 458,
                                        "src": "1348:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 468,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 460,
                                        "src": "1352:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1348:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "1344:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "id": 471,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1343:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 472,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 458,
                                "src": "1358:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "1343:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1361:23:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 465,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1335:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1335:50:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 476,
                        "nodeType": "ExpressionStatement",
                        "src": "1335:50:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 478,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 458,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 478,
                        "src": "1278:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 457,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1278:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 460,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 478,
                        "src": "1289:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 459,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1289:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1277:22:2"
                  },
                  "returnParameters": {
                    "id": 464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 463,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 478,
                        "src": "1323:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 462,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1323:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1322:11:2"
                  },
                  "scope": 479,
                  "src": "1265:122:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 570,
              "src": "1105:285:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 524,
              "linearizedBaseContracts": [
                524
              ],
              "name": "BoringMath64",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 500,
                    "nodeType": "Block",
                    "src": "1488:56:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 493,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 489,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 486,
                                      "src": "1498:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      },
                                      "id": 492,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 490,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 481,
                                        "src": "1502:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 491,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 483,
                                        "src": "1506:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "1502:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "src": "1498:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "id": 494,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1497:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 495,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 483,
                                "src": "1512:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "src": "1497:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 497,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1515:26:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 488,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1489:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1489:53:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 499,
                        "nodeType": "ExpressionStatement",
                        "src": "1489:53:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 501,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 484,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 481,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 501,
                        "src": "1435:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 480,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1435:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 483,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 501,
                        "src": "1445:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 482,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1445:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1434:20:2"
                  },
                  "returnParameters": {
                    "id": 487,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 486,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 501,
                        "src": "1478:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 485,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1478:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1477:10:2"
                  },
                  "scope": 524,
                  "src": "1422:122:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 522,
                    "nodeType": "Block",
                    "src": "1616:53:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "id": 518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 515,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 511,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 508,
                                      "src": "1626:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      },
                                      "id": 514,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 512,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 503,
                                        "src": "1630:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 513,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 505,
                                        "src": "1634:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "1630:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "src": "1626:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "id": 516,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1625:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 517,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 503,
                                "src": "1640:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "src": "1625:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1643:23:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 510,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1617:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1617:50:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 521,
                        "nodeType": "ExpressionStatement",
                        "src": "1617:50:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 523,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 503,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 523,
                        "src": "1563:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 502,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1563:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 505,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 523,
                        "src": "1573:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 504,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1573:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1562:20:2"
                  },
                  "returnParameters": {
                    "id": 509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 508,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 523,
                        "src": "1606:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 507,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "1606:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1605:10:2"
                  },
                  "scope": 524,
                  "src": "1550:119:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 570,
              "src": "1394:278:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 569,
              "linearizedBaseContracts": [
                569
              ],
              "name": "BoringMath32",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 545,
                    "nodeType": "Block",
                    "src": "1770:56:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 538,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 534,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 531,
                                      "src": "1780:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 535,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 526,
                                        "src": "1784:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 536,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 528,
                                        "src": "1788:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "1784:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "1780:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "id": 539,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1779:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 540,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 528,
                                "src": "1794:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1779:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20416464204f766572666c6f77",
                              "id": 542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1797:26:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              },
                              "value": "BoringMath: Add Overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77ffeda554f4c047bf45dac1a596ee270f922490aa5e98c6ba2b9599856e6fdf",
                                "typeString": "literal_string \"BoringMath: Add Overflow\""
                              }
                            ],
                            "id": 533,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1771:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1771:53:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 544,
                        "nodeType": "ExpressionStatement",
                        "src": "1771:53:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 546,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 526,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 546,
                        "src": "1717:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 525,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1717:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 528,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 546,
                        "src": "1727:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 527,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1727:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1716:20:2"
                  },
                  "returnParameters": {
                    "id": 532,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 531,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 546,
                        "src": "1760:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 530,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1760:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1759:10:2"
                  },
                  "scope": 569,
                  "src": "1704:122:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 567,
                    "nodeType": "Block",
                    "src": "1898:53:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 560,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 556,
                                      "name": "c",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 553,
                                      "src": "1908:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      "id": 559,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 557,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 548,
                                        "src": "1912:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 558,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 550,
                                        "src": "1916:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "1912:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "1908:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "id": 561,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1907:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 562,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 548,
                                "src": "1922:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1907:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "426f72696e674d6174683a20556e646572666c6f77",
                              "id": 564,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1925:23:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              },
                              "value": "BoringMath: Underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00354eeca4367367797d07bf5ab6743c0cc453fe689bbb72132c3c4e2b5612aa",
                                "typeString": "literal_string \"BoringMath: Underflow\""
                              }
                            ],
                            "id": 555,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1899:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1899:50:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 566,
                        "nodeType": "ExpressionStatement",
                        "src": "1899:50:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 568,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 551,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 548,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 568,
                        "src": "1845:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 547,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1845:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 550,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 568,
                        "src": "1855:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 549,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1855:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1844:20:2"
                  },
                  "returnParameters": {
                    "id": 554,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 553,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 568,
                        "src": "1888:8:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 552,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1888:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1887:10:2"
                  },
                  "scope": 569,
                  "src": "1832:119:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 570,
              "src": "1676:278:2"
            }
          ],
          "src": "33:1921:2"
        },
        "id": 2
      },
      "contracts/MiniChefV2.sol": {
        "ast": {
          "absolutePath": "contracts/MiniChefV2.sol",
          "exportedSymbols": {
            "IMigratorChef": [
              584
            ],
            "MiniChefV2": [
              2455
            ]
          },
          "id": 2456,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 571,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "35:23:3"
            },
            {
              "id": 572,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "60:33:3"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 573,
              "nodeType": "ImportDirective",
              "scope": 2456,
              "sourceUnit": 570,
              "src": "97:74:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "openzeppelin-contracts-legacy/access/Ownable.sol",
              "file": "openzeppelin-contracts-legacy/access/Ownable.sol",
              "id": 574,
              "nodeType": "ImportDirective",
              "scope": 2456,
              "sourceUnit": 4433,
              "src": "173:58:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/SignedSafeMath.sol",
              "file": "./libraries/SignedSafeMath.sol",
              "id": 575,
              "nodeType": "ImportDirective",
              "scope": 2456,
              "sourceUnit": 4301,
              "src": "233:40:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "./interfaces/IRewarder.sol",
              "id": 576,
              "nodeType": "ImportDirective",
              "scope": 2456,
              "sourceUnit": 4103,
              "src": "275:36:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 584,
              "linearizedBaseContracts": [
                584
              ],
              "name": "IMigratorChef",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ce5494bb",
                  "id": 583,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 578,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 583,
                        "src": "509:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 577,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "509:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "508:14:3"
                  },
                  "returnParameters": {
                    "id": 582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 581,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 583,
                        "src": "541:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 580,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "541:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "540:8:3"
                  },
                  "scope": 584,
                  "src": "492:57:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2456,
              "src": "315:237:3"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 586,
                    "name": "Ownable",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4432,
                    "src": "848:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Ownable_$4432",
                      "typeString": "contract Ownable"
                    }
                  },
                  "id": 587,
                  "nodeType": "InheritanceSpecifier",
                  "src": "848:7:3"
                }
              ],
              "contractDependencies": [
                4323,
                4432
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 585,
                "nodeType": "StructuredDocumentation",
                "src": "556:82:3",
                "text": "@notice The (older) MiniChefV2 contract gives out a reward tokens per block."
              },
              "fullyImplemented": true,
              "id": 2455,
              "linearizedBaseContracts": [
                2455,
                4432,
                4323
              ],
              "name": "MiniChefV2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 590,
                  "libraryName": {
                    "contractScope": null,
                    "id": 588,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 434,
                    "src": "869:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$434",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "863:29:3",
                  "typeName": {
                    "id": 589,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "884:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 593,
                  "libraryName": {
                    "contractScope": null,
                    "id": 591,
                    "name": "BoringMath128",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 479,
                    "src": "904:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath128_$479",
                      "typeString": "library BoringMath128"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "898:32:3",
                  "typeName": {
                    "id": 592,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "922:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  }
                },
                {
                  "id": 596,
                  "libraryName": {
                    "contractScope": null,
                    "id": 594,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 281,
                    "src": "942:11:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$281",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "936:29:3",
                  "typeName": {
                    "contractScope": null,
                    "id": 595,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 65,
                    "src": "958:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$65",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "id": 599,
                  "libraryName": {
                    "contractScope": null,
                    "id": 597,
                    "name": "SignedSafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4300,
                    "src": "977:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignedSafeMath_$4300",
                      "typeString": "library SignedSafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "971:32:3",
                  "typeName": {
                    "id": 598,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "996:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                },
                {
                  "canonicalName": "MiniChefV2.UserInfo",
                  "id": 604,
                  "members": [
                    {
                      "constant": false,
                      "id": 601,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 604,
                      "src": "1201:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 600,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1201:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 603,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 604,
                      "src": "1226:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 602,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1226:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 2455,
                  "src": "1174:77:3",
                  "visibility": "public"
                },
                {
                  "canonicalName": "MiniChefV2.PoolInfo",
                  "id": 611,
                  "members": [
                    {
                      "constant": false,
                      "id": 606,
                      "mutability": "mutable",
                      "name": "accRewardPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 611,
                      "src": "1472:25:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 605,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "1472:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 608,
                      "mutability": "mutable",
                      "name": "lastRewardTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 611,
                      "src": "1508:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 607,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1508:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 610,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 611,
                      "src": "1540:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 609,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1540:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 2455,
                  "src": "1445:120:3",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 612,
                    "nodeType": "StructuredDocumentation",
                    "src": "1573:45:3",
                    "text": "@notice Address of reward (PNG) contract."
                  },
                  "functionSelector": "cab34c08",
                  "id": 614,
                  "mutability": "immutable",
                  "name": "REWARD",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "1624:30:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$65",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 613,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 65,
                    "src": "1624:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$65",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7cd07e47",
                  "id": 616,
                  "mutability": "mutable",
                  "name": "migrator",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "1767:29:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMigratorChef_$584",
                    "typeString": "contract IMigratorChef"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 615,
                    "name": "IMigratorChef",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 584,
                    "src": "1767:13:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMigratorChef_$584",
                      "typeString": "contract IMigratorChef"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0c812af3",
                  "id": 618,
                  "mutability": "mutable",
                  "name": "migrationDisabled",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "1803:29:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 617,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1803:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 619,
                    "nodeType": "StructuredDocumentation",
                    "src": "1841:35:3",
                    "text": "@notice Info of each MCV2 pool."
                  },
                  "functionSelector": "1526fe27",
                  "id": 622,
                  "mutability": "mutable",
                  "name": "poolInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "1882:26:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                    "typeString": "struct MiniChefV2.PoolInfo[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 620,
                      "name": "PoolInfo",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 611,
                      "src": "1882:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PoolInfo_$611_storage_ptr",
                        "typeString": "struct MiniChefV2.PoolInfo"
                      }
                    },
                    "id": 621,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1882:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage_ptr",
                      "typeString": "struct MiniChefV2.PoolInfo[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 623,
                    "nodeType": "StructuredDocumentation",
                    "src": "1915:55:3",
                    "text": "@notice Address of the LP token for each MCV2 pool."
                  },
                  "functionSelector": "78ed5d1f",
                  "id": 626,
                  "mutability": "mutable",
                  "name": "lpToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "1976:23:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                    "typeString": "contract IERC20[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 624,
                      "name": "IERC20",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 65,
                      "src": "1976:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$65",
                        "typeString": "contract IERC20"
                      }
                    },
                    "id": 625,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1976:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage_ptr",
                      "typeString": "contract IERC20[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 627,
                    "nodeType": "StructuredDocumentation",
                    "src": "2006:57:3",
                    "text": "@notice Address of each `IRewarder` contract in MCV2."
                  },
                  "functionSelector": "c346253d",
                  "id": 630,
                  "mutability": "mutable",
                  "name": "rewarder",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "2069:27:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage",
                    "typeString": "contract IRewarder[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 628,
                      "name": "IRewarder",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 4102,
                      "src": "2069:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IRewarder_$4102",
                        "typeString": "contract IRewarder"
                      }
                    },
                    "id": 629,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2069:11:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage_ptr",
                      "typeString": "contract IRewarder[]"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 631,
                    "nodeType": "StructuredDocumentation",
                    "src": "2105:52:3",
                    "text": "@notice Info of each user that stakes LP tokens."
                  },
                  "functionSelector": "93f1a40b",
                  "id": 637,
                  "mutability": "mutable",
                  "name": "userInfo",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "2163:66:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo))"
                  },
                  "typeName": {
                    "id": 636,
                    "keyType": {
                      "id": 632,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2172:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2163:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo))"
                    },
                    "valueType": {
                      "id": 635,
                      "keyType": {
                        "id": 633,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2192:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2183:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$",
                        "typeString": "mapping(address => struct MiniChefV2.UserInfo)"
                      },
                      "valueType": {
                        "contractScope": null,
                        "id": 634,
                        "name": "UserInfo",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 604,
                        "src": "2203:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                          "typeString": "struct MiniChefV2.UserInfo"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 638,
                    "nodeType": "StructuredDocumentation",
                    "src": "2238:21:3",
                    "text": "@dev Tokens added"
                  },
                  "functionSelector": "79d12ffb",
                  "id": 642,
                  "mutability": "mutable",
                  "name": "addedTokens",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "2265:44:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 641,
                    "keyType": {
                      "id": 639,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2274:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2265:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 640,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2285:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 643,
                    "nodeType": "StructuredDocumentation",
                    "src": "2318:63:3",
                    "text": "@dev Addresses allowed to change rewardsExpiration duration"
                  },
                  "id": 647,
                  "mutability": "mutable",
                  "name": "funder",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "2387:40:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 646,
                    "keyType": {
                      "id": 644,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2396:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2387:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 645,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2407:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 648,
                    "nodeType": "StructuredDocumentation",
                    "src": "2436:88:3",
                    "text": "@dev Total allocation points. Must be the sum of all allocation points in all pools."
                  },
                  "functionSelector": "17caf6f1",
                  "id": 650,
                  "mutability": "mutable",
                  "name": "totalAllocPoint",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "2530:30:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2530:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "8f10369a",
                  "id": 652,
                  "mutability": "mutable",
                  "name": "rewardPerSecond",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "2569:30:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 651,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2569:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 655,
                  "mutability": "constant",
                  "name": "ACC_REWARD_PRECISION",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "2606:52:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2606:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "31653132",
                    "id": 654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2654:4:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000_by_1",
                      "typeString": "int_const 1000000000000"
                    },
                    "value": "1e12"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 656,
                    "nodeType": "StructuredDocumentation",
                    "src": "2667:53:3",
                    "text": "@dev Block time when the rewards per second stops"
                  },
                  "functionSelector": "b76f4aeb",
                  "id": 658,
                  "mutability": "mutable",
                  "name": "rewardsExpiration",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2455,
                  "src": "2726:32:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 657,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2726:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 668,
                  "name": "Deposit",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 660,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 668,
                        "src": "2781:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 659,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2781:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 662,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 668,
                        "src": "2803:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 661,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2803:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 664,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 668,
                        "src": "2824:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 663,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2824:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 666,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 668,
                        "src": "2840:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 665,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2840:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2780:79:3"
                  },
                  "src": "2767:93:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 678,
                  "name": "Withdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 670,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 678,
                        "src": "2881:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2881:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 672,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 678,
                        "src": "2903:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 671,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2903:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 674,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 678,
                        "src": "2924:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 673,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2924:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 676,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 678,
                        "src": "2940:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 675,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2940:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2880:79:3"
                  },
                  "src": "2866:94:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 688,
                  "name": "EmergencyWithdraw",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 680,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 688,
                        "src": "2990:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 679,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2990:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 682,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 688,
                        "src": "3012:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3012:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 684,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 688,
                        "src": "3033:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 683,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3033:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 686,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 688,
                        "src": "3049:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3049:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2989:79:3"
                  },
                  "src": "2966:103:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 696,
                  "name": "Harvest",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 690,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 696,
                        "src": "3089:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 689,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3089:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 692,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 696,
                        "src": "3111:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 691,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3111:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 694,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 696,
                        "src": "3132:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 693,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3132:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3088:59:3"
                  },
                  "src": "3075:73:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 706,
                  "name": "PoolAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 698,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 706,
                        "src": "3170:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 697,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3170:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 700,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 706,
                        "src": "3191:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 699,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3191:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 702,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 706,
                        "src": "3211:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 701,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "3211:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 704,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 706,
                        "src": "3235:26:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$4102",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 703,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4102,
                          "src": "3235:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3169:93:3"
                  },
                  "src": "3154:109:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 716,
                  "name": "PoolSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 715,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 708,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 716,
                        "src": "3283:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 707,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3283:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 710,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 716,
                        "src": "3304:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 709,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3304:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 712,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 716,
                        "src": "3324:26:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$4102",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 711,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4102,
                          "src": "3324:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 714,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 716,
                        "src": "3352:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 713,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3352:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3282:85:3"
                  },
                  "src": "3269:99:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 726,
                  "name": "PoolUpdate",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 725,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 718,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 726,
                        "src": "3391:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 717,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3391:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 720,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lastRewardTime",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 726,
                        "src": "3412:21:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 719,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "3412:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 722,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "lpSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 726,
                        "src": "3435:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 721,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3435:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 724,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "accRewardPerShare",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 726,
                        "src": "3453:25:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 723,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3453:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3390:89:3"
                  },
                  "src": "3374:106:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 730,
                  "name": "MigratorSet",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 728,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "migrator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 730,
                        "src": "3504:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 727,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3504:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3503:18:3"
                  },
                  "src": "3486:36:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 732,
                  "name": "MigratorDisabled",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 731,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3550:2:3"
                  },
                  "src": "3528:25:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 736,
                  "name": "Migrate",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 734,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 736,
                        "src": "3573:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 733,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3573:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3572:13:3"
                  },
                  "src": "3559:27:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 740,
                  "name": "FunderAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 739,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 738,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "funder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 740,
                        "src": "3610:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 737,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3610:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3609:16:3"
                  },
                  "src": "3592:34:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 744,
                  "name": "FunderRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 743,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 742,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "funder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 744,
                        "src": "3652:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 741,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3652:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3651:16:3"
                  },
                  "src": "3632:36:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 748,
                  "name": "LogRewardPerSecond",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 746,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "rewardPerSecond",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 748,
                        "src": "3699:23:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 745,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3699:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3698:25:3"
                  },
                  "src": "3674:50:3"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 752,
                  "name": "LogRewardsExpiration",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 751,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 750,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "rewardsExpiration",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 752,
                        "src": "3757:25:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 749,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3757:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3756:27:3"
                  },
                  "src": "3730:54:3"
                },
                {
                  "body": {
                    "id": 787,
                    "nodeType": "Block",
                    "src": "3977:266:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 761,
                                  "name": "_rewardToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 755,
                                  "src": "4010:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 764,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4034:1:3",
                                      "subdenomination": null,
                                      "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": 763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4026:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 762,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4026:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4026:10:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "4010:26:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 772,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 767,
                                  "name": "_firstOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 757,
                                  "src": "4053:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 770,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4076:1:3",
                                      "subdenomination": null,
                                      "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": 769,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4068:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 768,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4068:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4068:10:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "4053:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4010:68:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a3a43616e6e6f7420636f6e7374727563742077697468207a65726f2061646472657373",
                              "id": 774,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4093:48:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_752d6dde958e2888515acaf4e476a1f5274bdb84b89d97bc26cb6857a01f030f",
                                "typeString": "literal_string \"MiniChefV2::Cannot construct with zero address\""
                              },
                              "value": "MiniChefV2::Cannot construct with zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_752d6dde958e2888515acaf4e476a1f5274bdb84b89d97bc26cb6857a01f030f",
                                "typeString": "literal_string \"MiniChefV2::Cannot construct with zero address\""
                              }
                            ],
                            "id": 760,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3988:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3988:164:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 776,
                        "nodeType": "ExpressionStatement",
                        "src": "3988:164:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 777,
                            "name": "REWARD",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 614,
                            "src": "4165:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 779,
                                "name": "_rewardToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "4181:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 778,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65,
                              "src": "4174:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$65_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4174:20:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "4165:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 782,
                        "nodeType": "ExpressionStatement",
                        "src": "4165:29:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 784,
                              "name": "_firstOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 757,
                              "src": "4223:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 783,
                            "name": "transferOwnership",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4431,
                            "src": "4205:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4205:30:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 786,
                        "nodeType": "ExpressionStatement",
                        "src": "4205:30:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 753,
                    "nodeType": "StructuredDocumentation",
                    "src": "3792:117:3",
                    "text": "@param _rewardToken The reward token contract address.\n @param _firstOwner Initial owner of the contract."
                  },
                  "id": 788,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 755,
                        "mutability": "mutable",
                        "name": "_rewardToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 788,
                        "src": "3927:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 754,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3927:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 757,
                        "mutability": "mutable",
                        "name": "_firstOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 788,
                        "src": "3949:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 756,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3949:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3926:43:3"
                  },
                  "returnParameters": {
                    "id": 759,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3977:0:3"
                  },
                  "scope": 2455,
                  "src": "3915:328:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 799,
                    "nodeType": "Block",
                    "src": "4360:42:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 794,
                            "name": "pools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 792,
                            "src": "4371:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 795,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 622,
                              "src": "4379:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                                "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4379:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4371:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 798,
                        "nodeType": "ExpressionStatement",
                        "src": "4371:23:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 789,
                    "nodeType": "StructuredDocumentation",
                    "src": "4251:45:3",
                    "text": "@notice Returns the number of MCV2 pools."
                  },
                  "functionSelector": "081e3eda",
                  "id": 800,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 790,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4321:2:3"
                  },
                  "returnParameters": {
                    "id": 793,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 792,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 800,
                        "src": "4345:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 791,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4345:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4344:15:3"
                  },
                  "scope": 2455,
                  "src": "4302:100:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 809,
                    "nodeType": "Block",
                    "src": "4540:33:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 807,
                          "name": "lpToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 626,
                          "src": "4558:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                            "typeString": "contract IERC20[] storage ref"
                          }
                        },
                        "functionReturnParameters": 806,
                        "id": 808,
                        "nodeType": "Return",
                        "src": "4551:14:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 801,
                    "nodeType": "StructuredDocumentation",
                    "src": "4410:64:3",
                    "text": "@notice Returns list of all lpTokens for ease of interfacing"
                  },
                  "functionSelector": "34c0b46b",
                  "id": 810,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lpTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 802,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4497:2:3"
                  },
                  "returnParameters": {
                    "id": 806,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 805,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 810,
                        "src": "4523:15:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 803,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 65,
                            "src": "4523:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 804,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4523:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4522:17:3"
                  },
                  "scope": 2455,
                  "src": "4480:93:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 819,
                    "nodeType": "Block",
                    "src": "4716:34:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 817,
                          "name": "poolInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 622,
                          "src": "4734:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                            "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                          }
                        },
                        "functionReturnParameters": 816,
                        "id": 818,
                        "nodeType": "Return",
                        "src": "4727:15:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 811,
                    "nodeType": "StructuredDocumentation",
                    "src": "4581:66:3",
                    "text": "@notice Returns list of all pool infos for ease of interfacing"
                  },
                  "functionSelector": "61f8e66f",
                  "id": 820,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolInfos",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 812,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4671:2:3"
                  },
                  "returnParameters": {
                    "id": 816,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 815,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 820,
                        "src": "4697:17:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MiniChefV2.PoolInfo[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 813,
                            "name": "PoolInfo",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 611,
                            "src": "4697:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$611_storage_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            }
                          },
                          "id": 814,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4697:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4696:19:3"
                  },
                  "scope": 2455,
                  "src": "4653:97:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 834,
                    "nodeType": "Block",
                    "src": "4892:44:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 828,
                            "name": "allowed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 826,
                            "src": "4903:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 829,
                              "name": "funder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 647,
                              "src": "4913:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 831,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 830,
                              "name": "_funder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 823,
                              "src": "4920:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4913:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4903:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 833,
                        "nodeType": "ExpressionStatement",
                        "src": "4903:25:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 821,
                    "nodeType": "StructuredDocumentation",
                    "src": "4758:56:3",
                    "text": "@notice Returns the status of an address as a funder"
                  },
                  "functionSelector": "1ea48870",
                  "id": 835,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isFunder",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 824,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 823,
                        "mutability": "mutable",
                        "name": "_funder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 835,
                        "src": "4838:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 822,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4838:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4837:17:3"
                  },
                  "returnParameters": {
                    "id": 827,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 826,
                        "mutability": "mutable",
                        "name": "allowed",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 835,
                        "src": "4878:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 825,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4878:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4877:14:3"
                  },
                  "scope": 2455,
                  "src": "4820:116:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 856,
                    "nodeType": "Block",
                    "src": "5120:87:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 847,
                            "name": "massUpdateAllPools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1456,
                            "src": "5131:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5131:20:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 849,
                        "nodeType": "ExpressionStatement",
                        "src": "5131:20:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 851,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 838,
                              "src": "5166:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 852,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 840,
                              "src": "5179:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 853,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 842,
                              "src": "5189:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "id": 850,
                            "name": "add",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 997,
                            "src": "5162:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_contract$_IERC20_$65_$_t_contract$_IRewarder_$4102_$returns$__$",
                              "typeString": "function (uint256,contract IERC20,contract IRewarder)"
                            }
                          },
                          "id": 854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5162:37:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 855,
                        "nodeType": "ExpressionStatement",
                        "src": "5162:37:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 836,
                    "nodeType": "StructuredDocumentation",
                    "src": "4944:75:3",
                    "text": "@notice Add a single reward pool after appropriately updating all pools"
                  },
                  "functionSelector": "f624d2c5",
                  "id": 857,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 845,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 844,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "5110:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5110:9:3"
                    }
                  ],
                  "name": "addPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 843,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 838,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 857,
                        "src": "5042:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 837,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5042:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 840,
                        "mutability": "mutable",
                        "name": "_lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 857,
                        "src": "5063:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 839,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "5063:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 842,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 857,
                        "src": "5080:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$4102",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 841,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4102,
                          "src": "5080:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5041:59:3"
                  },
                  "returnParameters": {
                    "id": 846,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5120:0:3"
                  },
                  "scope": 2455,
                  "src": "5025:182:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 919,
                    "nodeType": "Block",
                    "src": "5431:398:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 873,
                                    "name": "_allocPoints",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 861,
                                    "src": "5464:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5464:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 875,
                                    "name": "_lpTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 864,
                                    "src": "5487:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_calldata_ptr",
                                      "typeString": "contract IERC20[] calldata"
                                    }
                                  },
                                  "id": 876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5487:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5464:39:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 878,
                                    "name": "_lpTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 864,
                                    "src": "5520:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_calldata_ptr",
                                      "typeString": "contract IERC20[] calldata"
                                    }
                                  },
                                  "id": 879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5520:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 880,
                                    "name": "_rewarders",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 867,
                                    "src": "5540:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_calldata_ptr",
                                      "typeString": "contract IRewarder[] calldata"
                                    }
                                  },
                                  "id": 881,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5540:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5520:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5464:93:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a20696e76616c696420706172616d65746572206c656e67746873",
                              "id": 884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5572:39:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ab45fb2d27ff44f5ddac5614f79c7e638e15eb2c8f7558e181f7cddf10af9215",
                                "typeString": "literal_string \"MiniChefV2: invalid parameter lengths\""
                              },
                              "value": "MiniChefV2: invalid parameter lengths"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ab45fb2d27ff44f5ddac5614f79c7e638e15eb2c8f7558e181f7cddf10af9215",
                                "typeString": "literal_string \"MiniChefV2: invalid parameter lengths\""
                              }
                            ],
                            "id": 872,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5442:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5442:180:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 886,
                        "nodeType": "ExpressionStatement",
                        "src": "5442:180:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 887,
                            "name": "massUpdateAllPools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1456,
                            "src": "5635:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5635:20:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 889,
                        "nodeType": "ExpressionStatement",
                        "src": "5635:20:3"
                      },
                      {
                        "assignments": [
                          891
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 891,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 919,
                            "src": "5668:11:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 890,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5668:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 894,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 892,
                            "name": "_allocPoints",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 861,
                            "src": "5682:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5682:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5668:33:3"
                      },
                      {
                        "body": {
                          "id": 917,
                          "nodeType": "Block",
                          "src": "5746:76:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 906,
                                      "name": "_allocPoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 861,
                                      "src": "5765:12:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 908,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 907,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 896,
                                      "src": "5778:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5765:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 909,
                                      "name": "_lpTokens",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 864,
                                      "src": "5782:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_calldata_ptr",
                                        "typeString": "contract IERC20[] calldata"
                                      }
                                    },
                                    "id": 911,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 910,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 896,
                                      "src": "5792:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5782:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$65",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 912,
                                      "name": "_rewarders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 867,
                                      "src": "5796:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_calldata_ptr",
                                        "typeString": "contract IRewarder[] calldata"
                                      }
                                    },
                                    "id": 914,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 913,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 896,
                                      "src": "5807:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5796:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$4102",
                                      "typeString": "contract IRewarder"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$65",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_IRewarder_$4102",
                                      "typeString": "contract IRewarder"
                                    }
                                  ],
                                  "id": 905,
                                  "name": "add",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 997,
                                  "src": "5761:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_contract$_IERC20_$65_$_t_contract$_IRewarder_$4102_$returns$__$",
                                    "typeString": "function (uint256,contract IERC20,contract IRewarder)"
                                  }
                                },
                                "id": 915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5761:49:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 916,
                              "nodeType": "ExpressionStatement",
                              "src": "5761:49:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 899,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 896,
                            "src": "5732:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 900,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 891,
                            "src": "5736:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5732:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 918,
                        "initializationExpression": {
                          "assignments": [
                            896
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 896,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 918,
                              "src": "5717:9:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 895,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5717:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 898,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5729:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5717:13:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 903,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "5741:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 902,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 896,
                              "src": "5743:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 904,
                          "nodeType": "ExpressionStatement",
                          "src": "5741:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "5712:110:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 858,
                    "nodeType": "StructuredDocumentation",
                    "src": "5217:76:3",
                    "text": "@notice Add multiple reward pools after appropriately updating all pools"
                  },
                  "functionSelector": "7973aa7b",
                  "id": 920,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 870,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 869,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "5421:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5421:9:3"
                    }
                  ],
                  "name": "addPools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 868,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 861,
                        "mutability": "mutable",
                        "name": "_allocPoints",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 920,
                        "src": "5317:31:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 859,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5317:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 860,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5317:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 864,
                        "mutability": "mutable",
                        "name": "_lpTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 920,
                        "src": "5350:27:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_calldata_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 862,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 65,
                            "src": "5350:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 863,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5350:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 867,
                        "mutability": "mutable",
                        "name": "_rewarders",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 920,
                        "src": "5379:31:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_calldata_ptr",
                          "typeString": "contract IRewarder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 865,
                            "name": "IRewarder",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4102,
                            "src": "5379:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$4102",
                              "typeString": "contract IRewarder"
                            }
                          },
                          "id": 866,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5379:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage_ptr",
                            "typeString": "contract IRewarder[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5316:95:3"
                  },
                  "returnParameters": {
                    "id": 871,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5431:0:3"
                  },
                  "scope": 2455,
                  "src": "5299:530:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 996,
                    "nodeType": "Block",
                    "src": "6248:528:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 931,
                                  "name": "addedTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 642,
                                  "src": "6267:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 936,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 934,
                                      "name": "_lpToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 925,
                                      "src": "6287:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$65",
                                        "typeString": "contract IERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IERC20_$65",
                                        "typeString": "contract IERC20"
                                      }
                                    ],
                                    "id": 933,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6279:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 932,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6279:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 935,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6279:17:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6267:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "66616c7365",
                                "id": 937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6301:5:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "src": "6267:39:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "546f6b656e20616c7265616479206164646564",
                              "id": 939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6308:21:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b07030750bf13b02a70fb14791777581902c169c67141a3966ae190a921be309",
                                "typeString": "literal_string \"Token already added\""
                              },
                              "value": "Token already added"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b07030750bf13b02a70fb14791777581902c169c67141a3966ae190a921be309",
                                "typeString": "literal_string \"Token already added\""
                              }
                            ],
                            "id": 930,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6259:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6259:71:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 941,
                        "nodeType": "ExpressionStatement",
                        "src": "6259:71:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 942,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 650,
                            "src": "6341:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 945,
                                "name": "allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 923,
                                "src": "6379:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 943,
                                "name": "totalAllocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 650,
                                "src": "6359:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 305,
                              "src": "6359:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6359:31:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6341:49:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 948,
                        "nodeType": "ExpressionStatement",
                        "src": "6341:49:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 952,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 925,
                              "src": "6414:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 949,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 626,
                              "src": "6401:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6401:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IERC20_$65_$returns$__$",
                              "typeString": "function (contract IERC20)"
                            }
                          },
                          "id": 953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6401:22:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 954,
                        "nodeType": "ExpressionStatement",
                        "src": "6401:22:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 958,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 927,
                              "src": "6448:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 955,
                              "name": "rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 630,
                              "src": "6434:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage",
                                "typeString": "contract IRewarder[] storage ref"
                              }
                            },
                            "id": 957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6434:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_IRewarder_$4102_$returns$__$",
                              "typeString": "function (contract IRewarder)"
                            }
                          },
                          "id": 959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6434:24:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 960,
                        "nodeType": "ExpressionStatement",
                        "src": "6434:24:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 965,
                                      "name": "allocPoint",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 923,
                                      "src": "6521:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 407,
                                    "src": "6521:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6521:17:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 968,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "6569:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 969,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "6569:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 970,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 407,
                                    "src": "6569:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 971,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6569:22:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 972,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6625:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 964,
                                "name": "PoolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 611,
                                "src": "6485:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_PoolInfo_$611_storage_ptr_$",
                                  "typeString": "type(struct MiniChefV2.PoolInfo storage pointer)"
                                }
                              },
                              "id": 973,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [
                                "allocPoint",
                                "lastRewardTime",
                                "accRewardPerShare"
                              ],
                              "nodeType": "FunctionCall",
                              "src": "6485:153:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 961,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 622,
                              "src": "6471:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                                "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6471:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_PoolInfo_$611_storage_$returns$__$",
                              "typeString": "function (struct MiniChefV2.PoolInfo storage ref)"
                            }
                          },
                          "id": 974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6471:168:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 975,
                        "nodeType": "ExpressionStatement",
                        "src": "6471:168:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 976,
                              "name": "addedTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 642,
                              "src": "6650:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 981,
                            "indexExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 979,
                                  "name": "_lpToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 925,
                                  "src": "6670:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20_$65",
                                    "typeString": "contract IERC20"
                                  }
                                ],
                                "id": 978,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6662:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 977,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6662:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 980,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6662:17:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6650:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 982,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6683:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "6650:37:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 984,
                        "nodeType": "ExpressionStatement",
                        "src": "6650:37:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 989,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6732:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 986,
                                    "name": "lpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 626,
                                    "src": "6713:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                      "typeString": "contract IERC20[] storage ref"
                                    }
                                  },
                                  "id": 987,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6713:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 327,
                                "src": "6713:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6713:21:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 991,
                              "name": "allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 923,
                              "src": "6736:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 992,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 925,
                              "src": "6748:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 993,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 927,
                              "src": "6758:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            ],
                            "id": 985,
                            "name": "PoolAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 706,
                            "src": "6703:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$65_$_t_contract$_IRewarder_$4102_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IERC20,contract IRewarder)"
                            }
                          },
                          "id": 994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6703:65:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 995,
                        "nodeType": "EmitStatement",
                        "src": "6698:70:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 921,
                    "nodeType": "StructuredDocumentation",
                    "src": "5837:325:3",
                    "text": "@notice Add a new LP to the pool. Can only be called by the owner.\n DO NOT add the same LP token more than once. Rewards will be messed up if you do.\n @param allocPoint AP of the new pool.\n @param _lpToken Address of the LP ERC-20 token.\n @param _rewarder Address of the rewarder delegate."
                  },
                  "id": 997,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 928,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 923,
                        "mutability": "mutable",
                        "name": "allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 997,
                        "src": "6181:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 922,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6181:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 925,
                        "mutability": "mutable",
                        "name": "_lpToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 997,
                        "src": "6201:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$65",
                          "typeString": "contract IERC20"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 924,
                          "name": "IERC20",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 65,
                          "src": "6201:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 927,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 997,
                        "src": "6218:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$4102",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 926,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4102,
                          "src": "6218:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6180:58:3"
                  },
                  "returnParameters": {
                    "id": 929,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6248:0:3"
                  },
                  "scope": 2455,
                  "src": "6168:608:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1021,
                    "nodeType": "Block",
                    "src": "6980:94:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1011,
                            "name": "massUpdateAllPools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1456,
                            "src": "6991:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 1012,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6991:20:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1013,
                        "nodeType": "ExpressionStatement",
                        "src": "6991:20:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1015,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1000,
                              "src": "7026:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1016,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1002,
                              "src": "7032:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1017,
                              "name": "_rewarder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1004,
                              "src": "7045:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1018,
                              "name": "overwrite",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1006,
                              "src": "7056:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1014,
                            "name": "set",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1153,
                            "src": "7022:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IRewarder_$4102_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IRewarder,bool)"
                            }
                          },
                          "id": 1019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7022:44:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1020,
                        "nodeType": "ExpressionStatement",
                        "src": "7022:44:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 998,
                    "nodeType": "StructuredDocumentation",
                    "src": "6784:82:3",
                    "text": "@notice Change information for one pool after appropriately updating all pools"
                  },
                  "functionSelector": "b763e7c4",
                  "id": 1022,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1009,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1008,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "6970:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6970:9:3"
                    }
                  ],
                  "name": "setPool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1007,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1000,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1022,
                        "src": "6889:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 999,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6889:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1002,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1022,
                        "src": "6903:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1001,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6903:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1004,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1022,
                        "src": "6924:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$4102",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1003,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4102,
                          "src": "6924:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1006,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1022,
                        "src": "6945:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1005,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6945:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6888:72:3"
                  },
                  "returnParameters": {
                    "id": 1010,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6980:0:3"
                  },
                  "scope": 2455,
                  "src": "6872:202:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1096,
                    "nodeType": "Block",
                    "src": "7330:447:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1041,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1026,
                                      "src": "7363:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7363:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1043,
                                      "name": "allocPoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1029,
                                      "src": "7378:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1044,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7378:18:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7363:33:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1046,
                                      "name": "allocPoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1029,
                                      "src": "7413:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1047,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7413:18:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1048,
                                      "name": "rewarders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1032,
                                      "src": "7435:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_calldata_ptr",
                                        "typeString": "contract IRewarder[] calldata"
                                      }
                                    },
                                    "id": 1049,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7435:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7413:38:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7363:88:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1052,
                                    "name": "rewarders",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1032,
                                    "src": "7468:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_calldata_ptr",
                                      "typeString": "contract IRewarder[] calldata"
                                    }
                                  },
                                  "id": 1053,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7468:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1054,
                                    "name": "overwrites",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1035,
                                    "src": "7488:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                      "typeString": "bool[] calldata"
                                    }
                                  },
                                  "id": 1055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7488:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7468:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7363:142:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a20696e76616c696420706172616d65746572206c656e67746873",
                              "id": 1058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7520:39:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ab45fb2d27ff44f5ddac5614f79c7e638e15eb2c8f7558e181f7cddf10af9215",
                                "typeString": "literal_string \"MiniChefV2: invalid parameter lengths\""
                              },
                              "value": "MiniChefV2: invalid parameter lengths"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ab45fb2d27ff44f5ddac5614f79c7e638e15eb2c8f7558e181f7cddf10af9215",
                                "typeString": "literal_string \"MiniChefV2: invalid parameter lengths\""
                              }
                            ],
                            "id": 1040,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7341:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7341:229:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1060,
                        "nodeType": "ExpressionStatement",
                        "src": "7341:229:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1061,
                            "name": "massUpdateAllPools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1456,
                            "src": "7583:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 1062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7583:20:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1063,
                        "nodeType": "ExpressionStatement",
                        "src": "7583:20:3"
                      },
                      {
                        "assignments": [
                          1065
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1065,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1096,
                            "src": "7616:11:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1064,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7616:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1068,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1066,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1026,
                            "src": "7630:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7630:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7616:25:3"
                      },
                      {
                        "body": {
                          "id": 1094,
                          "nodeType": "Block",
                          "src": "7686:84:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1080,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1026,
                                      "src": "7705:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1082,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1081,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1070,
                                      "src": "7710:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7705:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1083,
                                      "name": "allocPoints",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1029,
                                      "src": "7714:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1085,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1084,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1070,
                                      "src": "7726:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7714:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1086,
                                      "name": "rewarders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1032,
                                      "src": "7730:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_calldata_ptr",
                                        "typeString": "contract IRewarder[] calldata"
                                      }
                                    },
                                    "id": 1088,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1087,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1070,
                                      "src": "7740:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7730:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$4102",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1089,
                                      "name": "overwrites",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1035,
                                      "src": "7744:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                                        "typeString": "bool[] calldata"
                                      }
                                    },
                                    "id": 1091,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1090,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1070,
                                      "src": "7755:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7744:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_IRewarder_$4102",
                                      "typeString": "contract IRewarder"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 1079,
                                  "name": "set",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1153,
                                  "src": "7701:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IRewarder_$4102_$_t_bool_$returns$__$",
                                    "typeString": "function (uint256,uint256,contract IRewarder,bool)"
                                  }
                                },
                                "id": 1092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7701:57:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1093,
                              "nodeType": "ExpressionStatement",
                              "src": "7701:57:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1073,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1070,
                            "src": "7672:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1074,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1065,
                            "src": "7676:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7672:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1095,
                        "initializationExpression": {
                          "assignments": [
                            1070
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1070,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 1095,
                              "src": "7657:9:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1069,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7657:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1072,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7669:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7657:13:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "7681:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1076,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1070,
                              "src": "7683:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1078,
                          "nodeType": "ExpressionStatement",
                          "src": "7681:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "7652:118:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1023,
                    "nodeType": "StructuredDocumentation",
                    "src": "7082:88:3",
                    "text": "@notice Change information for multiple pools after appropriately updating all pools"
                  },
                  "functionSelector": "3ef6db91",
                  "id": 1097,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1038,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1037,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "7320:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7320:9:3"
                    }
                  ],
                  "name": "setPools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1036,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1026,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1097,
                        "src": "7194:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1024,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7194:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1025,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7194:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1029,
                        "mutability": "mutable",
                        "name": "allocPoints",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1097,
                        "src": "7219:30:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1027,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7219:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1028,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7219:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1032,
                        "mutability": "mutable",
                        "name": "rewarders",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1097,
                        "src": "7251:30:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_calldata_ptr",
                          "typeString": "contract IRewarder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 1030,
                            "name": "IRewarder",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 4102,
                            "src": "7251:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$4102",
                              "typeString": "contract IRewarder"
                            }
                          },
                          "id": 1031,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7251:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage_ptr",
                            "typeString": "contract IRewarder[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1035,
                        "mutability": "mutable",
                        "name": "overwrites",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1097,
                        "src": "7283:26:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1033,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "7283:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 1034,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "7283:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7193:117:3"
                  },
                  "returnParameters": {
                    "id": 1039,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7330:0:3"
                  },
                  "scope": 2455,
                  "src": "7176:601:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1152,
                    "nodeType": "Block",
                    "src": "8266:306:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1109,
                            "name": "totalAllocPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 650,
                            "src": "8277:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1118,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1102,
                                "src": "8346:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1112,
                                        "name": "poolInfo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 622,
                                        "src": "8315:8:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                                          "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                                        }
                                      },
                                      "id": 1114,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1113,
                                        "name": "_pid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1100,
                                        "src": "8324:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8315:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$611_storage",
                                        "typeString": "struct MiniChefV2.PoolInfo storage ref"
                                      }
                                    },
                                    "id": 1115,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "allocPoint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 610,
                                    "src": "8315:25:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1110,
                                    "name": "totalAllocPoint",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 650,
                                    "src": "8295:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1111,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 327,
                                  "src": "8295:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8295:46:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1117,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 305,
                              "src": "8295:50:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8295:63:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8277:81:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1121,
                        "nodeType": "ExpressionStatement",
                        "src": "8277:81:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1122,
                                "name": "poolInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 622,
                                "src": "8369:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                                  "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                                }
                              },
                              "id": 1124,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1123,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1100,
                                "src": "8378:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8369:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$611_storage",
                                "typeString": "struct MiniChefV2.PoolInfo storage ref"
                              }
                            },
                            "id": 1125,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "allocPoint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 610,
                            "src": "8369:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1126,
                                "name": "_allocPoint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1102,
                                "src": "8397:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "to64",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 407,
                              "src": "8397:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint64)"
                              }
                            },
                            "id": 1128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8397:18:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "8369:46:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 1130,
                        "nodeType": "ExpressionStatement",
                        "src": "8369:46:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 1131,
                          "name": "overwrite",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1106,
                          "src": "8430:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1139,
                        "nodeType": "IfStatement",
                        "src": "8426:46:3",
                        "trueBody": {
                          "id": 1138,
                          "nodeType": "Block",
                          "src": "8441:31:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1132,
                                    "name": "rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 630,
                                    "src": "8443:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage",
                                      "typeString": "contract IRewarder[] storage ref"
                                    }
                                  },
                                  "id": 1134,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1133,
                                    "name": "_pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1100,
                                    "src": "8452:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8443:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$4102",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1135,
                                  "name": "_rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1104,
                                  "src": "8460:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IRewarder_$4102",
                                    "typeString": "contract IRewarder"
                                  }
                                },
                                "src": "8443:26:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 1137,
                              "nodeType": "ExpressionStatement",
                              "src": "8443:26:3"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1141,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1100,
                              "src": "8495:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1142,
                              "name": "_allocPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1102,
                              "src": "8501:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "id": 1143,
                                "name": "overwrite",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1106,
                                "src": "8514:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1145,
                                  "name": "rewarder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 630,
                                  "src": "8538:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage",
                                    "typeString": "contract IRewarder[] storage ref"
                                  }
                                },
                                "id": 1147,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1146,
                                  "name": "_pid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1100,
                                  "src": "8547:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8538:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "id": 1148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "8514:38:3",
                              "trueExpression": {
                                "argumentTypes": null,
                                "id": 1144,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1104,
                                "src": "8526:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1149,
                              "name": "overwrite",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1106,
                              "src": "8554:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1140,
                            "name": "PoolSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 716,
                            "src": "8487:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_contract$_IRewarder_$4102_$_t_bool_$returns$__$",
                              "typeString": "function (uint256,uint256,contract IRewarder,bool)"
                            }
                          },
                          "id": 1150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8487:77:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1151,
                        "nodeType": "EmitStatement",
                        "src": "8482:82:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1098,
                    "nodeType": "StructuredDocumentation",
                    "src": "7785:381:3",
                    "text": "@notice Update the given pool's reward allocation point and `IRewarder` contract. Can only be called by the owner.\n @param _pid The index of the pool. See `poolInfo`.\n @param _allocPoint New AP of the pool.\n @param _rewarder Address of the rewarder delegate.\n @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored."
                  },
                  "id": 1153,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "set",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1107,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1100,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1153,
                        "src": "8185:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1099,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8185:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1102,
                        "mutability": "mutable",
                        "name": "_allocPoint",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1153,
                        "src": "8199:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1101,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8199:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1104,
                        "mutability": "mutable",
                        "name": "_rewarder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1153,
                        "src": "8220:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IRewarder_$4102",
                          "typeString": "contract IRewarder"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1103,
                          "name": "IRewarder",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4102,
                          "src": "8220:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1106,
                        "mutability": "mutable",
                        "name": "overwrite",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1153,
                        "src": "8241:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1105,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8241:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8184:72:3"
                  },
                  "returnParameters": {
                    "id": 1108,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8266:0:3"
                  },
                  "scope": 2455,
                  "src": "8172:400:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1178,
                    "nodeType": "Block",
                    "src": "8777:167:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "8796:18:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 1162,
                                "name": "migrationDisabled",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 618,
                                "src": "8797:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a206d6967726174696f6e20686173206265656e2064697361626c6564",
                              "id": 1164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8816:41:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c1b931e2ea5a66f1c2256bc79719e71605471d73cf397a2529f1e4311e8ffd6a",
                                "typeString": "literal_string \"MiniChefV2: migration has been disabled\""
                              },
                              "value": "MiniChefV2: migration has been disabled"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c1b931e2ea5a66f1c2256bc79719e71605471d73cf397a2529f1e4311e8ffd6a",
                                "typeString": "literal_string \"MiniChefV2: migration has been disabled\""
                              }
                            ],
                            "id": 1161,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8788:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8788:70:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1166,
                        "nodeType": "ExpressionStatement",
                        "src": "8788:70:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1167,
                            "name": "migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 616,
                            "src": "8869:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorChef_$584",
                              "typeString": "contract IMigratorChef"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1168,
                            "name": "_migrator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1156,
                            "src": "8880:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMigratorChef_$584",
                              "typeString": "contract IMigratorChef"
                            }
                          },
                          "src": "8869:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorChef_$584",
                            "typeString": "contract IMigratorChef"
                          }
                        },
                        "id": 1170,
                        "nodeType": "ExpressionStatement",
                        "src": "8869:20:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1174,
                                  "name": "_migrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1156,
                                  "src": "8925:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMigratorChef_$584",
                                    "typeString": "contract IMigratorChef"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IMigratorChef_$584",
                                    "typeString": "contract IMigratorChef"
                                  }
                                ],
                                "id": 1173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8917:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1172,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8917:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8917:18:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1171,
                            "name": "MigratorSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 730,
                            "src": "8905:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8905:31:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1177,
                        "nodeType": "EmitStatement",
                        "src": "8900:36:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1154,
                    "nodeType": "StructuredDocumentation",
                    "src": "8580:128:3",
                    "text": "@notice Set the `migrator` contract. Can only be called by the owner.\n @param _migrator The contract address to set."
                  },
                  "functionSelector": "23cf3118",
                  "id": 1179,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1159,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1158,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "8767:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8767:9:3"
                    }
                  ],
                  "name": "setMigrator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1157,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1156,
                        "mutability": "mutable",
                        "name": "_migrator",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1179,
                        "src": "8735:23:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMigratorChef_$584",
                          "typeString": "contract IMigratorChef"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1155,
                          "name": "IMigratorChef",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 584,
                          "src": "8735:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMigratorChef_$584",
                            "typeString": "contract IMigratorChef"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8734:25:3"
                  },
                  "returnParameters": {
                    "id": 1160,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8777:0:3"
                  },
                  "scope": 2455,
                  "src": "8714:230:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1192,
                    "nodeType": "Block",
                    "src": "9114:77:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1185,
                            "name": "migrationDisabled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 618,
                            "src": "9125:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 1186,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9145:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "9125:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1188,
                        "nodeType": "ExpressionStatement",
                        "src": "9125:24:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1189,
                            "name": "MigratorDisabled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 732,
                            "src": "9165:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 1190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9165:18:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1191,
                        "nodeType": "EmitStatement",
                        "src": "9160:23:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1180,
                    "nodeType": "StructuredDocumentation",
                    "src": "8952:112:3",
                    "text": "@notice Permanently disable the `migrator` functionality.\n This can only effectively be called once."
                  },
                  "functionSelector": "f6d676be",
                  "id": 1193,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1183,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1182,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "9104:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9104:9:3"
                    }
                  ],
                  "name": "disableMigrator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1181,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9094:2:3"
                  },
                  "returnParameters": {
                    "id": 1184,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9114:0:3"
                  },
                  "scope": 2455,
                  "src": "9070:121:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1276,
                    "nodeType": "Block",
                    "src": "9397:550:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "9416:18:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "id": 1202,
                                "name": "migrationDisabled",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 618,
                                "src": "9417:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a206d6967726174696f6e20686173206265656e2064697361626c6564",
                              "id": 1204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9436:41:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c1b931e2ea5a66f1c2256bc79719e71605471d73cf397a2529f1e4311e8ffd6a",
                                "typeString": "literal_string \"MiniChefV2: migration has been disabled\""
                              },
                              "value": "MiniChefV2: migration has been disabled"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c1b931e2ea5a66f1c2256bc79719e71605471d73cf397a2529f1e4311e8ffd6a",
                                "typeString": "literal_string \"MiniChefV2: migration has been disabled\""
                              }
                            ],
                            "id": 1201,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9408:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9408:70:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1206,
                        "nodeType": "ExpressionStatement",
                        "src": "9408:70:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1216,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1210,
                                    "name": "migrator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 616,
                                    "src": "9505:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMigratorChef_$584",
                                      "typeString": "contract IMigratorChef"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMigratorChef_$584",
                                      "typeString": "contract IMigratorChef"
                                    }
                                  ],
                                  "id": 1209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9497:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1208,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9497:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9497:17:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9526:1:3",
                                    "subdenomination": null,
                                    "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": 1213,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9518:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1212,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9518:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9518:10:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "9497:31:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a206e6f206d69677261746f7220736574",
                              "id": 1217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9530:29:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_580cd60de8277c15852c6acbe96c606203bcc0635a517674d2f277357dff707a",
                                "typeString": "literal_string \"MiniChefV2: no migrator set\""
                              },
                              "value": "MiniChefV2: no migrator set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_580cd60de8277c15852c6acbe96c606203bcc0635a517674d2f277357dff707a",
                                "typeString": "literal_string \"MiniChefV2: no migrator set\""
                              }
                            ],
                            "id": 1207,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9489:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9489:71:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1219,
                        "nodeType": "ExpressionStatement",
                        "src": "9489:71:3"
                      },
                      {
                        "assignments": [
                          1221
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1221,
                            "mutability": "mutable",
                            "name": "_lpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1276,
                            "src": "9571:15:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1220,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 65,
                              "src": "9571:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1225,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1222,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 626,
                            "src": "9589:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                              "typeString": "contract IERC20[] storage ref"
                            }
                          },
                          "id": 1224,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1223,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1196,
                            "src": "9597:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9589:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9571:31:3"
                      },
                      {
                        "assignments": [
                          1227
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1227,
                            "mutability": "mutable",
                            "name": "bal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1276,
                            "src": "9613:11:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1226,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9613:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1235,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1232,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "9654:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 1231,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9646:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1230,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9646:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9646:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1228,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1221,
                              "src": "9627:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13,
                            "src": "9627:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9627:33:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9613:47:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1241,
                                  "name": "migrator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 616,
                                  "src": "9696:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMigratorChef_$584",
                                    "typeString": "contract IMigratorChef"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IMigratorChef_$584",
                                    "typeString": "contract IMigratorChef"
                                  }
                                ],
                                "id": 1240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9688:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1239,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9688:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9688:17:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1243,
                              "name": "bal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1227,
                              "src": "9707:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1236,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1221,
                              "src": "9671:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31,
                            "src": "9671:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 1244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9671:40:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1245,
                        "nodeType": "ExpressionStatement",
                        "src": "9671:40:3"
                      },
                      {
                        "assignments": [
                          1247
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1247,
                            "mutability": "mutable",
                            "name": "newLpToken",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1276,
                            "src": "9722:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1246,
                              "name": "IERC20",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 65,
                              "src": "9722:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1252,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1250,
                              "name": "_lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1221,
                              "src": "9759:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1248,
                              "name": "migrator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 616,
                              "src": "9742:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMigratorChef_$584",
                                "typeString": "contract IMigratorChef"
                              }
                            },
                            "id": 1249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "migrate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 583,
                            "src": "9742:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_contract$_IERC20_$65_$returns$_t_contract$_IERC20_$65_$",
                              "typeString": "function (contract IERC20) external returns (contract IERC20)"
                            }
                          },
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9742:26:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9722:46:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1254,
                                "name": "bal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1227,
                                "src": "9787:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1259,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "9823:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                          "typeString": "contract MiniChefV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                          "typeString": "contract MiniChefV2"
                                        }
                                      ],
                                      "id": 1258,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9815:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1257,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9815:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1260,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9815:13:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1255,
                                    "name": "newLpToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1247,
                                    "src": "9794:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$65",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13,
                                  "src": "9794:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 1261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9794:35:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9787:42:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a206d696772617465642062616c616e6365206d757374206d61746368",
                              "id": 1263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9831:41:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_27ffc75475686b8d0f60988d0c883470227549bc6283407ecf45ab947efb2bc6",
                                "typeString": "literal_string \"MiniChefV2: migrated balance must match\""
                              },
                              "value": "MiniChefV2: migrated balance must match"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_27ffc75475686b8d0f60988d0c883470227549bc6283407ecf45ab947efb2bc6",
                                "typeString": "literal_string \"MiniChefV2: migrated balance must match\""
                              }
                            ],
                            "id": 1253,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9779:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9779:94:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1265,
                        "nodeType": "ExpressionStatement",
                        "src": "9779:94:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1266,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 626,
                              "src": "9884:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                "typeString": "contract IERC20[] storage ref"
                              }
                            },
                            "id": 1268,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1267,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1196,
                              "src": "9892:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9884:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1269,
                            "name": "newLpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1247,
                            "src": "9900:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "9884:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 1271,
                        "nodeType": "ExpressionStatement",
                        "src": "9884:26:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1273,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1196,
                              "src": "9934:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1272,
                            "name": "Migrate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 736,
                            "src": "9926:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 1274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9926:13:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1275,
                        "nodeType": "EmitStatement",
                        "src": "9921:18:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1194,
                    "nodeType": "StructuredDocumentation",
                    "src": "9199:144:3",
                    "text": "@notice Migrate LP token to another LP contract through the `migrator` contract.\n @param _pid The index of the pool. See `poolInfo`."
                  },
                  "functionSelector": "454b0608",
                  "id": 1277,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 1199,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1198,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "9387:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9387:9:3"
                    }
                  ],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1197,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1196,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1277,
                        "src": "9366:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1195,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9366:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9365:14:3"
                  },
                  "returnParameters": {
                    "id": 1200,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9397:0:3"
                  },
                  "scope": 2455,
                  "src": "9349:598:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1398,
                    "nodeType": "Block",
                    "src": "10262:1002:3",
                    "statements": [
                      {
                        "assignments": [
                          1288
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1288,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1398,
                            "src": "10273:20:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1287,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 611,
                              "src": "10273:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$611_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1292,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1289,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 622,
                            "src": "10296:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                              "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 1291,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1290,
                            "name": "_pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1280,
                            "src": "10305:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10296:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$611_storage",
                            "typeString": "struct MiniChefV2.PoolInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10273:37:3"
                      },
                      {
                        "assignments": [
                          1294
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1294,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1398,
                            "src": "10321:21:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1293,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 604,
                              "src": "10321:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1300,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1295,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "10345:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1297,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1296,
                              "name": "_pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1280,
                              "src": "10354:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10345:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1299,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1298,
                            "name": "_user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1282,
                            "src": "10360:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10345:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$604_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10321:45:3"
                      },
                      {
                        "assignments": [
                          1302
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1302,
                            "mutability": "mutable",
                            "name": "accRewardPerShare",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1398,
                            "src": "10377:25:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1301,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10377:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1305,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1303,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1288,
                            "src": "10405:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo memory"
                            }
                          },
                          "id": 1304,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accRewardPerShare",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 606,
                          "src": "10405:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10377:50:3"
                      },
                      {
                        "assignments": [
                          1307
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1307,
                            "mutability": "mutable",
                            "name": "lpSupply",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1398,
                            "src": "10438:16:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1306,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10438:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1317,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1314,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "10489:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 1313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10481:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1312,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10481:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10481:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1308,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 626,
                                "src": "10457:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1310,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1309,
                                "name": "_pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1280,
                                "src": "10465:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10457:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13,
                            "src": "10457:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10457:38:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10438:57:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1318,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "10510:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 1319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10510:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1320,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1288,
                                "src": "10528:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                  "typeString": "struct MiniChefV2.PoolInfo memory"
                                }
                              },
                              "id": 1321,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lastRewardTime",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 608,
                              "src": "10528:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "10510:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1323,
                              "name": "lpSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1307,
                              "src": "10551:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10563:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "10551:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10510:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1378,
                        "nodeType": "IfStatement",
                        "src": "10506:632:3",
                        "trueBody": {
                          "id": 1377,
                          "nodeType": "Block",
                          "src": "10566:572:3",
                          "statements": [
                            {
                              "assignments": [
                                1328
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1328,
                                  "mutability": "mutable",
                                  "name": "time",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1377,
                                  "src": "10581:12:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1327,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10581:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1351,
                              "initialValue": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1332,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1329,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "10596:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 1330,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "10596:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1331,
                                    "name": "rewardsExpiration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 658,
                                    "src": "10615:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10596:36:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1339,
                                      "name": "rewardsExpiration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 658,
                                      "src": "10740:17:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1340,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1288,
                                        "src": "10760:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                          "typeString": "struct MiniChefV2.PoolInfo memory"
                                        }
                                      },
                                      "id": 1341,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lastRewardTime",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 608,
                                      "src": "10760:19:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "src": "10740:39:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1348,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10904:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "id": 1349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "10740:165:3",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1345,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1288,
                                          "src": "10825:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                            "typeString": "struct MiniChefV2.PoolInfo memory"
                                          }
                                        },
                                        "id": 1346,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "lastRewardTime",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 608,
                                        "src": "10825:19:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1343,
                                        "name": "rewardsExpiration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 658,
                                        "src": "10803:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1344,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 327,
                                      "src": "10803:21:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1347,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10803:42:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "10596:309:3",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1336,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1288,
                                        "src": "10672:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                          "typeString": "struct MiniChefV2.PoolInfo memory"
                                        }
                                      },
                                      "id": 1337,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lastRewardTime",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 608,
                                      "src": "10672:19:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1333,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "10652:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 1334,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "10652:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1335,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 327,
                                    "src": "10652:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10652:40:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10581:324:3"
                            },
                            {
                              "assignments": [
                                1353
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1353,
                                  "mutability": "mutable",
                                  "name": "reward",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1377,
                                  "src": "10944:14:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1352,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10944:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1364,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1359,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1288,
                                        "src": "10991:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                          "typeString": "struct MiniChefV2.PoolInfo memory"
                                        }
                                      },
                                      "id": 1360,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "allocPoint",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 610,
                                      "src": "10991:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1356,
                                          "name": "rewardPerSecond",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 652,
                                          "src": "10970:15:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1354,
                                          "name": "time",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1328,
                                          "src": "10961:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1355,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 355,
                                        "src": "10961:8:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1357,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10961:25:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1358,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 355,
                                    "src": "10961:29:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1361,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10961:46:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1362,
                                  "name": "totalAllocPoint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 650,
                                  "src": "11010:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10961:64:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10944:81:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1365,
                                  "name": "accRewardPerShare",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1302,
                                  "src": "11040:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1373,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1370,
                                            "name": "ACC_REWARD_PRECISION",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 655,
                                            "src": "11093:20:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1368,
                                            "name": "reward",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1353,
                                            "src": "11082:6:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1369,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 355,
                                          "src": "11082:10:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1371,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11082:32:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1372,
                                        "name": "lpSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1307,
                                        "src": "11117:8:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11082:43:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1366,
                                      "name": "accRewardPerShare",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1302,
                                      "src": "11060:17:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1367,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 305,
                                    "src": "11060:21:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1374,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11060:66:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11040:86:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1376,
                              "nodeType": "ExpressionStatement",
                              "src": "11040:86:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1379,
                            "name": "pending",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1285,
                            "src": "11148:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1391,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1294,
                                      "src": "11228:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1392,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "rewardDebt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 603,
                                    "src": "11228:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1388,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1385,
                                              "name": "accRewardPerShare",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1302,
                                              "src": "11181:17:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1382,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1294,
                                                "src": "11165:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                                  "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                                }
                                              },
                                              "id": 1383,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "amount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 601,
                                              "src": "11165:11:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1384,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 355,
                                            "src": "11165:15:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 1386,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "11165:34:3",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1387,
                                          "name": "ACC_REWARD_PRECISION",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 655,
                                          "src": "11202:20:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11165:57:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1381,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11158:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 1380,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11158:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1389,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11158:65:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "id": 1390,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4239,
                                  "src": "11158:69:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                    "typeString": "function (int256,int256) pure returns (int256)"
                                  }
                                },
                                "id": 1393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11158:86:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toUInt256",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4299,
                              "src": "11158:96:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                                "typeString": "function (int256) pure returns (uint256)"
                              }
                            },
                            "id": 1395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11158:98:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11148:108:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1397,
                        "nodeType": "ExpressionStatement",
                        "src": "11148:108:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1278,
                    "nodeType": "StructuredDocumentation",
                    "src": "9955:209:3",
                    "text": "@notice View function to see pending reward on frontend.\n @param _pid The index of the pool. See `poolInfo`.\n @param _user Address of user.\n @return pending reward for a given user."
                  },
                  "functionSelector": "98969e82",
                  "id": 1399,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1283,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1280,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1399,
                        "src": "10193:12:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1279,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10193:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1282,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1399,
                        "src": "10207:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1281,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10207:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10192:29:3"
                  },
                  "returnParameters": {
                    "id": 1286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1285,
                        "mutability": "mutable",
                        "name": "pending",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1399,
                        "src": "10245:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10245:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10244:17:3"
                  },
                  "scope": 2455,
                  "src": "10170:1094:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1429,
                    "nodeType": "Block",
                    "src": "11505:134:3",
                    "statements": [
                      {
                        "assignments": [
                          1407
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1407,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1429,
                            "src": "11516:11:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1406,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11516:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1410,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1408,
                            "name": "pids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1403,
                            "src": "11530:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11530:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11516:25:3"
                      },
                      {
                        "body": {
                          "id": 1427,
                          "nodeType": "Block",
                          "src": "11586:46:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1422,
                                      "name": "pids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1403,
                                      "src": "11612:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1424,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1423,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1412,
                                      "src": "11617:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11612:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1421,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1575,
                                  "src": "11601:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$611_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                                  }
                                },
                                "id": 1425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11601:19:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                  "typeString": "struct MiniChefV2.PoolInfo memory"
                                }
                              },
                              "id": 1426,
                              "nodeType": "ExpressionStatement",
                              "src": "11601:19:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1415,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1412,
                            "src": "11572:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1416,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1407,
                            "src": "11576:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11572:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1428,
                        "initializationExpression": {
                          "assignments": [
                            1412
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1412,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 1428,
                              "src": "11557:9:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1411,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11557:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1414,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11569:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11557:13:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "11581:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1418,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1412,
                              "src": "11583:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1420,
                          "nodeType": "ExpressionStatement",
                          "src": "11581:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "11552:80:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1400,
                    "nodeType": "StructuredDocumentation",
                    "src": "11272:168:3",
                    "text": "@notice Update reward variables for all pools. Be careful of gas spending!\n @param pids Pool IDs of all to be updated. Make sure to update all active pools."
                  },
                  "functionSelector": "57a5b58c",
                  "id": 1430,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdatePools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1403,
                        "mutability": "mutable",
                        "name": "pids",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1430,
                        "src": "11471:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1401,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11471:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1402,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "11471:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11470:25:3"
                  },
                  "returnParameters": {
                    "id": 1405,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11505:0:3"
                  },
                  "scope": 2455,
                  "src": "11446:193:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1455,
                    "nodeType": "Block",
                    "src": "11768:140:3",
                    "statements": [
                      {
                        "assignments": [
                          1435
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1435,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1455,
                            "src": "11779:11:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1434,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11779:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1438,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1436,
                            "name": "poolInfo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 622,
                            "src": "11793:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                              "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                            }
                          },
                          "id": 1437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11793:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11779:29:3"
                      },
                      {
                        "body": {
                          "id": 1453,
                          "nodeType": "Block",
                          "src": "11859:42:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1450,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1440,
                                    "src": "11885:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1449,
                                  "name": "updatePool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1575,
                                  "src": "11874:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$611_memory_ptr_$",
                                    "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                                  }
                                },
                                "id": 1451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11874:15:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                  "typeString": "struct MiniChefV2.PoolInfo memory"
                                }
                              },
                              "id": 1452,
                              "nodeType": "ExpressionStatement",
                              "src": "11874:15:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1443,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1440,
                            "src": "11841:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1444,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1435,
                            "src": "11847:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11841:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1454,
                        "initializationExpression": {
                          "assignments": [
                            1440
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1440,
                              "mutability": "mutable",
                              "name": "pid",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 1454,
                              "src": "11824:11:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1439,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11824:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1442,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1441,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11838:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11824:15:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "11852:5:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1446,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1440,
                              "src": "11854:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1448,
                          "nodeType": "ExpressionStatement",
                          "src": "11852:5:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "11819:82:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1431,
                    "nodeType": "StructuredDocumentation",
                    "src": "11647:78:3",
                    "text": "@notice Update reward variables for all pools. Be careful of gas spending!"
                  },
                  "functionSelector": "c1bcb493",
                  "id": 1456,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "massUpdateAllPools",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1432,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11758:2:3"
                  },
                  "returnParameters": {
                    "id": 1433,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11768:0:3"
                  },
                  "scope": 2455,
                  "src": "11731:177:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1574,
                    "nodeType": "Block",
                    "src": "12163:1015:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1464,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1462,
                            "src": "12174:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1465,
                              "name": "poolInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 622,
                              "src": "12181:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                                "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                              }
                            },
                            "id": 1467,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1466,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1459,
                              "src": "12190:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12181:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$611_storage",
                              "typeString": "struct MiniChefV2.PoolInfo storage ref"
                            }
                          },
                          "src": "12174:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "id": 1469,
                        "nodeType": "ExpressionStatement",
                        "src": "12174:20:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1470,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "12209:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 1471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12209:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1472,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1462,
                              "src": "12227:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo memory"
                              }
                            },
                            "id": 1473,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lastRewardTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 608,
                            "src": "12227:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "12209:37:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1573,
                        "nodeType": "IfStatement",
                        "src": "12205:966:3",
                        "trueBody": {
                          "id": 1572,
                          "nodeType": "Block",
                          "src": "12248:923:3",
                          "statements": [
                            {
                              "assignments": [
                                1476
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1476,
                                  "mutability": "mutable",
                                  "name": "lpSupply",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1572,
                                  "src": "12263:16:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1475,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12263:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1486,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1483,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "12313:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                          "typeString": "contract MiniChefV2"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                          "typeString": "contract MiniChefV2"
                                        }
                                      ],
                                      "id": 1482,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12305:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1481,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12305:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 1484,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12305:13:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1477,
                                      "name": "lpToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 626,
                                      "src": "12282:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                        "typeString": "contract IERC20[] storage ref"
                                      }
                                    },
                                    "id": 1479,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1478,
                                      "name": "pid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1459,
                                      "src": "12290:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12282:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$65",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1480,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 13,
                                  "src": "12282:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 1485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12282:37:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12263:56:3"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1489,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1487,
                                  "name": "lpSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1476,
                                  "src": "12338:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1488,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12349:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12338:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1547,
                              "nodeType": "IfStatement",
                              "src": "12334:642:3",
                              "trueBody": {
                                "id": 1546,
                                "nodeType": "Block",
                                "src": "12352:624:3",
                                "statements": [
                                  {
                                    "assignments": [
                                      1491
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 1491,
                                        "mutability": "mutable",
                                        "name": "time",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 1546,
                                        "src": "12371:12:3",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 1490,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12371:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 1514,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "condition": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1495,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1492,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "12386:5:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 1493,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "timestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "12386:15:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1494,
                                          "name": "rewardsExpiration",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 658,
                                          "src": "12405:17:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "12386:36:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseExpression": {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1505,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 1502,
                                            "name": "rewardsExpiration",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 658,
                                            "src": "12538:17:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1503,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1462,
                                              "src": "12558:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                                "typeString": "struct MiniChefV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 1504,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lastRewardTime",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 608,
                                            "src": "12558:19:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "src": "12538:39:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 1511,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12710:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "id": 1512,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "12538:173:3",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1508,
                                                "name": "pool",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1462,
                                                "src": "12627:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                                  "typeString": "struct MiniChefV2.PoolInfo memory"
                                                }
                                              },
                                              "id": 1509,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "lastRewardTime",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 608,
                                              "src": "12627:19:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1506,
                                              "name": "rewardsExpiration",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 658,
                                              "src": "12605:17:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1507,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 327,
                                            "src": "12605:21:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 1510,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12605:42:3",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1513,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "Conditional",
                                      "src": "12386:325:3",
                                      "trueExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1499,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1462,
                                              "src": "12466:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                                "typeString": "struct MiniChefV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 1500,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "lastRewardTime",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 608,
                                            "src": "12466:19:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1496,
                                              "name": "block",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -4,
                                              "src": "12446:5:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_block",
                                                "typeString": "block"
                                              }
                                            },
                                            "id": 1497,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "timestamp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "12446:15:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1498,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sub",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 327,
                                          "src": "12446:19:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1501,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12446:40:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "12371:340:3"
                                  },
                                  {
                                    "assignments": [
                                      1516
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 1516,
                                        "mutability": "mutable",
                                        "name": "reward",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 1546,
                                        "src": "12754:14:3",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 1515,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12754:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 1527,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1526,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1522,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1462,
                                              "src": "12801:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                                "typeString": "struct MiniChefV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 1523,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "allocPoint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 610,
                                            "src": "12801:15:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 1519,
                                                "name": "rewardPerSecond",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 652,
                                                "src": "12780:15:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1517,
                                                "name": "time",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1491,
                                                "src": "12771:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 1518,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mul",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 355,
                                              "src": "12771:8:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 1520,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12771:25:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1521,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 355,
                                          "src": "12771:29:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1524,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12771:46:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1525,
                                        "name": "totalAllocPoint",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 650,
                                        "src": "12820:15:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12771:64:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "12754:81:3"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1544,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1528,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1462,
                                          "src": "12854:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                            "typeString": "struct MiniChefV2.PoolInfo memory"
                                          }
                                        },
                                        "id": 1530,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "memberName": "accRewardPerShare",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 606,
                                        "src": "12854:22:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "components": [
                                                  {
                                                    "argumentTypes": null,
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 1539,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "argumentTypes": null,
                                                      "arguments": [
                                                        {
                                                          "argumentTypes": null,
                                                          "id": 1536,
                                                          "name": "ACC_REWARD_PRECISION",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 655,
                                                          "src": "12918:20:3",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": null,
                                                          "id": 1534,
                                                          "name": "reward",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 1516,
                                                          "src": "12907:6:3",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "id": 1535,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 355,
                                                        "src": "12907:10:3",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                      },
                                                      "id": 1537,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "12907:32:3",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                      "argumentTypes": null,
                                                      "id": 1538,
                                                      "name": "lpSupply",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1476,
                                                      "src": "12942:8:3",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "12907:43:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 1540,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "12906:45:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 1541,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "to128",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 381,
                                              "src": "12906:51:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint128)"
                                              }
                                            },
                                            "id": 1542,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12906:53:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1531,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1462,
                                              "src": "12879:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                                "typeString": "struct MiniChefV2.PoolInfo memory"
                                              }
                                            },
                                            "id": 1532,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "accRewardPerShare",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 606,
                                            "src": "12879:22:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "id": 1533,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 456,
                                          "src": "12879:26:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_uint128_$returns$_t_uint128_$bound_to$_t_uint128_$",
                                            "typeString": "function (uint128,uint128) pure returns (uint128)"
                                          }
                                        },
                                        "id": 1543,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12879:81:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "12854:106:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "id": 1545,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12854:106:3"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1548,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1462,
                                    "src": "12990:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                      "typeString": "struct MiniChefV2.PoolInfo memory"
                                    }
                                  },
                                  "id": 1550,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "lastRewardTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 608,
                                  "src": "12990:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1551,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "13012:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 1552,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "13012:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1553,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to64",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 407,
                                    "src": "13012:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint64)"
                                    }
                                  },
                                  "id": 1554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13012:22:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "12990:44:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 1556,
                              "nodeType": "ExpressionStatement",
                              "src": "12990:44:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1557,
                                    "name": "poolInfo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 622,
                                    "src": "13049:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_PoolInfo_$611_storage_$dyn_storage",
                                      "typeString": "struct MiniChefV2.PoolInfo storage ref[] storage ref"
                                    }
                                  },
                                  "id": 1559,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1558,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1459,
                                    "src": "13058:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "13049:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$611_storage",
                                    "typeString": "struct MiniChefV2.PoolInfo storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1560,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1462,
                                  "src": "13065:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                    "typeString": "struct MiniChefV2.PoolInfo memory"
                                  }
                                },
                                "src": "13049:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolInfo_$611_storage",
                                  "typeString": "struct MiniChefV2.PoolInfo storage ref"
                                }
                              },
                              "id": 1562,
                              "nodeType": "ExpressionStatement",
                              "src": "13049:20:3"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1564,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1459,
                                    "src": "13100:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1565,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1462,
                                      "src": "13105:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                        "typeString": "struct MiniChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1566,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lastRewardTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 608,
                                    "src": "13105:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1567,
                                    "name": "lpSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1476,
                                    "src": "13126:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1568,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1462,
                                      "src": "13136:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                        "typeString": "struct MiniChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1569,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accRewardPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 606,
                                    "src": "13136:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 1563,
                                  "name": "PoolUpdate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 726,
                                  "src": "13089:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint64,uint256,uint256)"
                                  }
                                },
                                "id": 1570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13089:70:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1571,
                              "nodeType": "EmitStatement",
                              "src": "13084:75:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1457,
                    "nodeType": "StructuredDocumentation",
                    "src": "11916:170:3",
                    "text": "@notice Update reward variables of the given pool.\n @param pid The index of the pool. See `poolInfo`.\n @return pool Returns the pool that was updated."
                  },
                  "functionSelector": "51eb05a6",
                  "id": 1575,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1459,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1575,
                        "src": "12112:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12112:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12111:13:3"
                  },
                  "returnParameters": {
                    "id": 1463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1462,
                        "mutability": "mutable",
                        "name": "pool",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1575,
                        "src": "12141:20:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                          "typeString": "struct MiniChefV2.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 1461,
                          "name": "PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 611,
                          "src": "12141:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$611_storage_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12140:22:3"
                  },
                  "scope": 2455,
                  "src": "12092:1086:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1677,
                    "nodeType": "Block",
                    "src": "13488:620:3",
                    "statements": [
                      {
                        "assignments": [
                          1586
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1586,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1677,
                            "src": "13499:20:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1585,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 611,
                              "src": "13499:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$611_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1590,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1588,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1578,
                              "src": "13533:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1587,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1575,
                            "src": "13522:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$611_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 1589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13522:15:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13499:38:3"
                      },
                      {
                        "assignments": [
                          1592
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1592,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1677,
                            "src": "13548:21:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1591,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 604,
                              "src": "13548:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1598,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1593,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "13572:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1595,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1594,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1578,
                              "src": "13581:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13572:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1597,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1596,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1582,
                            "src": "13586:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13572:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$604_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13548:41:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1599,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1592,
                              "src": "13622:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1601,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 601,
                            "src": "13622:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1605,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1580,
                                "src": "13652:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1602,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1592,
                                  "src": "13636:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1603,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 601,
                                "src": "13636:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 305,
                              "src": "13636:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13636:23:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13622:37:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1608,
                        "nodeType": "ExpressionStatement",
                        "src": "13622:37:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1609,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1592,
                              "src": "13670:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1611,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 603,
                            "src": "13670:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1623,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1619,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1586,
                                            "src": "13726:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                              "typeString": "struct MiniChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1620,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accRewardPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 606,
                                          "src": "13726:22:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1617,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1580,
                                          "src": "13715:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1618,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 355,
                                        "src": "13715:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1621,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13715:34:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1622,
                                      "name": "ACC_REWARD_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 655,
                                      "src": "13752:20:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13715:57:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1616,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13708:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1615,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13708:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13708:65:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1612,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1592,
                                  "src": "13688:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1613,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 603,
                                "src": "13688:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4279,
                              "src": "13688:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13688:86:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "13670:104:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1627,
                        "nodeType": "ExpressionStatement",
                        "src": "13670:104:3"
                      },
                      {
                        "assignments": [
                          1629
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1629,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1677,
                            "src": "13812:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$4102",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1628,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4102,
                              "src": "13812:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1633,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1630,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 630,
                            "src": "13834:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1632,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1631,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1578,
                            "src": "13843:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13834:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13812:35:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1636,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1629,
                                "src": "13870:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13862:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1634,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13862:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13862:18:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13892:1:3",
                                "subdenomination": null,
                                "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": 1639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "13884:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1638,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "13884:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13884:10:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "13862:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1655,
                        "nodeType": "IfStatement",
                        "src": "13858:112:3",
                        "trueBody": {
                          "id": 1654,
                          "nodeType": "Block",
                          "src": "13896:74:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1646,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1578,
                                    "src": "13930:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1647,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1582,
                                    "src": "13935:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1648,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1582,
                                    "src": "13939:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1649,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13943:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1650,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1592,
                                      "src": "13946:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1651,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 601,
                                    "src": "13946:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1643,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1629,
                                    "src": "13911:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$4102",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1645,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4086,
                                  "src": "13911:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13911:47:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1653,
                              "nodeType": "ExpressionStatement",
                              "src": "13911:47:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1660,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14012:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14012:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1664,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "14032:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 1663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14024:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1662,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14024:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1665,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14024:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1666,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1580,
                              "src": "14039:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1656,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 626,
                                "src": "13982:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1658,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1657,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1578,
                                "src": "13990:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13982:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1659,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 280,
                            "src": "13982:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 1667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13982:64:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1668,
                        "nodeType": "ExpressionStatement",
                        "src": "13982:64:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1670,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14072:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14072:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1672,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1578,
                              "src": "14084:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1673,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1580,
                              "src": "14089:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1674,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1582,
                              "src": "14097:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1669,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 668,
                            "src": "14064:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 1675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14064:36:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1676,
                        "nodeType": "EmitStatement",
                        "src": "14059:41:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1576,
                    "nodeType": "StructuredDocumentation",
                    "src": "13186:231:3",
                    "text": "@notice Deposit LP tokens to MCV2 for reward allocation.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to deposit.\n @param to The receiver of `amount` deposit benefit."
                  },
                  "functionSelector": "8dbdbe6d",
                  "id": 1678,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1578,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1678,
                        "src": "13440:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1577,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13440:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1580,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1678,
                        "src": "13453:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13453:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1582,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1678,
                        "src": "13469:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1581,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13469:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13439:41:3"
                  },
                  "returnParameters": {
                    "id": 1584,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13488:0:3"
                  },
                  "scope": 2455,
                  "src": "13423:685:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1718,
                    "nodeType": "Block",
                    "src": "14239:168:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1699,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14289:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14289:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1703,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "14309:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 1702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14301:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1701,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14301:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14301:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1705,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1682,
                              "src": "14316:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1706,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1686,
                              "src": "14324:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1707,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1688,
                              "src": "14334:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1708,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1690,
                              "src": "14337:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1709,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1692,
                              "src": "14340:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1695,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 626,
                                "src": "14269:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1697,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1696,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1680,
                                "src": "14277:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14269:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1698,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "permit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 64,
                            "src": "14269:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                            }
                          },
                          "id": 1710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14269:73:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1711,
                        "nodeType": "ExpressionStatement",
                        "src": "14269:73:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1713,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1680,
                              "src": "14383:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1714,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1682,
                              "src": "14388:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1715,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1684,
                              "src": "14396:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1712,
                            "name": "deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1678,
                            "src": "14375:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,uint256,address)"
                            }
                          },
                          "id": 1716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14375:24:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1717,
                        "nodeType": "ExpressionStatement",
                        "src": "14375:24:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "2273ee6e",
                  "id": 1719,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "depositWithPermit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1680,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1719,
                        "src": "14143:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14143:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1682,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1719,
                        "src": "14156:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14156:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1684,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1719,
                        "src": "14172:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1683,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14172:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1686,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1719,
                        "src": "14184:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1685,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "14184:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1688,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1719,
                        "src": "14199:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1687,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "14199:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1690,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1719,
                        "src": "14208:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1689,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14208:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1692,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1719,
                        "src": "14219:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1691,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14219:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14142:87:3"
                  },
                  "returnParameters": {
                    "id": 1694,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14239:0:3"
                  },
                  "scope": 2455,
                  "src": "14116:291:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1818,
                    "nodeType": "Block",
                    "src": "14685:610:3",
                    "statements": [
                      {
                        "assignments": [
                          1730
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1730,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1818,
                            "src": "14696:20:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1729,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 611,
                              "src": "14696:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$611_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1734,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1732,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1722,
                              "src": "14730:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1731,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1575,
                            "src": "14719:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$611_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 1733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14719:15:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14696:38:3"
                      },
                      {
                        "assignments": [
                          1736
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1736,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1818,
                            "src": "14745:21:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1735,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 604,
                              "src": "14745:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1743,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1737,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "14769:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1739,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1738,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1722,
                              "src": "14778:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14769:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1742,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1740,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "14783:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14783:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14769:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$604_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14745:49:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1744,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1736,
                              "src": "14827:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1746,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 603,
                            "src": "14827:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1754,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1730,
                                            "src": "14883:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                              "typeString": "struct MiniChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1755,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accRewardPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 606,
                                          "src": "14883:22:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1752,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1724,
                                          "src": "14872:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1753,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 355,
                                        "src": "14872:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1756,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14872:34:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1757,
                                      "name": "ACC_REWARD_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 655,
                                      "src": "14909:20:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "14872:57:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1751,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14865:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1750,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14865:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14865:65:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1747,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1736,
                                  "src": "14845:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1748,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardDebt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 603,
                                "src": "14845:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4239,
                              "src": "14845:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14845:86:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "14827:104:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1762,
                        "nodeType": "ExpressionStatement",
                        "src": "14827:104:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1763,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1736,
                              "src": "14942:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1765,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 601,
                            "src": "14942:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1769,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1724,
                                "src": "14972:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1766,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1736,
                                  "src": "14956:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1767,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 601,
                                "src": "14956:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 327,
                              "src": "14956:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14956:23:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14942:37:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1772,
                        "nodeType": "ExpressionStatement",
                        "src": "14942:37:3"
                      },
                      {
                        "assignments": [
                          1774
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1774,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1818,
                            "src": "15017:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$4102",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1773,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4102,
                              "src": "15017:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1778,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1775,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 630,
                            "src": "15039:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1777,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1776,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1722,
                            "src": "15048:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15039:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15017:35:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1781,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1774,
                                "src": "15075:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15067:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1779,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15067:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15067:18:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15097:1:3",
                                "subdenomination": null,
                                "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": 1784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15089:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1783,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15089:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15089:10:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "15067:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1801,
                        "nodeType": "IfStatement",
                        "src": "15063:120:3",
                        "trueBody": {
                          "id": 1800,
                          "nodeType": "Block",
                          "src": "15101:82:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1791,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1722,
                                    "src": "15135:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1792,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "15140:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1793,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "15140:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1794,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1726,
                                    "src": "15152:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1795,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15156:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1796,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1736,
                                      "src": "15159:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1797,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 601,
                                    "src": "15159:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1788,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1774,
                                    "src": "15116:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$4102",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1790,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4086,
                                  "src": "15116:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15116:55:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1799,
                              "nodeType": "ExpressionStatement",
                              "src": "15116:55:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1806,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1726,
                              "src": "15221:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1807,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1724,
                              "src": "15225:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1802,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 626,
                                "src": "15195:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 1804,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1803,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1722,
                                "src": "15203:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15195:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1805,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 231,
                            "src": "15195:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 1808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15195:37:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1809,
                        "nodeType": "ExpressionStatement",
                        "src": "15195:37:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1811,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "15259:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15259:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1813,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1722,
                              "src": "15271:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1814,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1724,
                              "src": "15276:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1815,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1726,
                              "src": "15284:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1810,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 678,
                            "src": "15250:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 1816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15250:37:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1817,
                        "nodeType": "EmitStatement",
                        "src": "15245:42:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1720,
                    "nodeType": "StructuredDocumentation",
                    "src": "14415:198:3",
                    "text": "@notice Withdraw LP tokens from MCV2.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "0ad58d2f",
                  "id": 1819,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1722,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1819,
                        "src": "14637:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1721,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14637:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1724,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1819,
                        "src": "14650:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1723,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14650:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1726,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1819,
                        "src": "14666:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1725,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14666:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14636:41:3"
                  },
                  "returnParameters": {
                    "id": 1728,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14685:0:3"
                  },
                  "scope": 2455,
                  "src": "14619:676:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1920,
                    "nodeType": "Block",
                    "src": "15517:757:3",
                    "statements": [
                      {
                        "assignments": [
                          1828
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1828,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1920,
                            "src": "15528:20:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1827,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 611,
                              "src": "15528:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$611_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1832,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1830,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1822,
                              "src": "15562:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1829,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1575,
                            "src": "15551:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$611_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 1831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15551:15:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15528:38:3"
                      },
                      {
                        "assignments": [
                          1834
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1834,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1920,
                            "src": "15577:21:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1833,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 604,
                              "src": "15577:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1841,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1835,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "15601:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1837,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1836,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1822,
                              "src": "15610:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15601:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1840,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1838,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "15615:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15615:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15601:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$604_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15577:49:3"
                      },
                      {
                        "assignments": [
                          1843
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1843,
                            "mutability": "mutable",
                            "name": "accumulatedReward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1920,
                            "src": "15637:24:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1842,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15637:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1855,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1849,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1828,
                                      "src": "15687:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                        "typeString": "struct MiniChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1850,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accRewardPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 606,
                                    "src": "15687:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1846,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1834,
                                      "src": "15671:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1847,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 601,
                                    "src": "15671:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1848,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 355,
                                  "src": "15671:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1851,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15671:39:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1852,
                                "name": "ACC_REWARD_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 655,
                                "src": "15713:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15671:62:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15664:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 1844,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15664:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15664:70:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15637:97:3"
                      },
                      {
                        "assignments": [
                          1857
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1857,
                            "mutability": "mutable",
                            "name": "_pendingReward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1920,
                            "src": "15745:22:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1856,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15745:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1865,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1860,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1834,
                                    "src": "15792:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                      "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 1861,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 603,
                                  "src": "15792:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1858,
                                  "name": "accumulatedReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1843,
                                  "src": "15770:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4239,
                                "src": "15770:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 1862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15770:38:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 1863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4299,
                            "src": "15770:48:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 1864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15770:50:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15745:75:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1866,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1834,
                              "src": "15853:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1868,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 603,
                            "src": "15853:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1869,
                            "name": "accumulatedReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1843,
                            "src": "15871:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "15853:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1871,
                        "nodeType": "ExpressionStatement",
                        "src": "15853:35:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1872,
                            "name": "_pendingReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1857,
                            "src": "15930:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1873,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15948:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15930:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1883,
                        "nodeType": "IfStatement",
                        "src": "15926:91:3",
                        "trueBody": {
                          "id": 1882,
                          "nodeType": "Block",
                          "src": "15951:66:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1878,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1824,
                                    "src": "15986:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1879,
                                    "name": "_pendingReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1857,
                                    "src": "15990:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1875,
                                    "name": "REWARD",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 614,
                                    "src": "15966:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$65",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 1877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 231,
                                  "src": "15966:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 1880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15966:39:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1881,
                              "nodeType": "ExpressionStatement",
                              "src": "15966:39:3"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1885
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1885,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1920,
                            "src": "16029:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$4102",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1884,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4102,
                              "src": "16029:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1889,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1886,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 630,
                            "src": "16051:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 1888,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1887,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1822,
                            "src": "16060:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16051:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16029:35:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1892,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1885,
                                "src": "16087:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 1891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16079:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1890,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "16079:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16079:18:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16109:1:3",
                                "subdenomination": null,
                                "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": 1895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16101:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1894,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "16101:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16101:10:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "16079:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1912,
                        "nodeType": "IfStatement",
                        "src": "16075:134:3",
                        "trueBody": {
                          "id": 1911,
                          "nodeType": "Block",
                          "src": "16113:96:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1902,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1822,
                                    "src": "16148:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1903,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "16153:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1904,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "16153:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1905,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1824,
                                    "src": "16165:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1906,
                                    "name": "_pendingReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1857,
                                    "src": "16169:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1907,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1834,
                                      "src": "16185:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1908,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 601,
                                    "src": "16185:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1899,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1885,
                                    "src": "16128:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$4102",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 1901,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4086,
                                  "src": "16128:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 1909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16128:69:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1910,
                              "nodeType": "ExpressionStatement",
                              "src": "16128:69:3"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1914,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "16234:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16234:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1916,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1822,
                              "src": "16246:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1917,
                              "name": "_pendingReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1857,
                              "src": "16251:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1913,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 696,
                            "src": "16226:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16226:40:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1919,
                        "nodeType": "EmitStatement",
                        "src": "16221:45:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1820,
                    "nodeType": "StructuredDocumentation",
                    "src": "15303:159:3",
                    "text": "@notice Harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of rewards."
                  },
                  "functionSelector": "18fccc76",
                  "id": 1921,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1822,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1921,
                        "src": "15485:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1821,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15485:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1824,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1921,
                        "src": "15498:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1823,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15498:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15484:25:3"
                  },
                  "returnParameters": {
                    "id": 1826,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15517:0:3"
                  },
                  "scope": 2455,
                  "src": "15468:806:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2057,
                    "nodeType": "Block",
                    "src": "16626:927:3",
                    "statements": [
                      {
                        "assignments": [
                          1932
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1932,
                            "mutability": "mutable",
                            "name": "pool",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2057,
                            "src": "16637:20:3",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                              "typeString": "struct MiniChefV2.PoolInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1931,
                              "name": "PoolInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 611,
                              "src": "16637:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolInfo_$611_storage_ptr",
                                "typeString": "struct MiniChefV2.PoolInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1936,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1934,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1924,
                              "src": "16671:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1933,
                            "name": "updatePool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1575,
                            "src": "16660:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_struct$_PoolInfo_$611_memory_ptr_$",
                              "typeString": "function (uint256) returns (struct MiniChefV2.PoolInfo memory)"
                            }
                          },
                          "id": 1935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16660:15:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                            "typeString": "struct MiniChefV2.PoolInfo memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16637:38:3"
                      },
                      {
                        "assignments": [
                          1938
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1938,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2057,
                            "src": "16686:21:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 1937,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 604,
                              "src": "16686:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1945,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1939,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "16710:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 1941,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1940,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1924,
                              "src": "16719:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16710:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 1944,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1942,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "16724:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16724:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16710:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$604_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16686:49:3"
                      },
                      {
                        "assignments": [
                          1947
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1947,
                            "mutability": "mutable",
                            "name": "accumulatedReward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2057,
                            "src": "16746:24:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 1946,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16746:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1959,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1953,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1932,
                                      "src": "16796:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                        "typeString": "struct MiniChefV2.PoolInfo memory"
                                      }
                                    },
                                    "id": 1954,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accRewardPerShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 606,
                                    "src": "16796:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1950,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1938,
                                      "src": "16780:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 1951,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 601,
                                    "src": "16780:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1952,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 355,
                                  "src": "16780:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1955,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16780:39:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1956,
                                "name": "ACC_REWARD_PRECISION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 655,
                                "src": "16822:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16780:62:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16773:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 1948,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16773:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16773:70:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16746:97:3"
                      },
                      {
                        "assignments": [
                          1961
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1961,
                            "mutability": "mutable",
                            "name": "_pendingReward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2057,
                            "src": "16854:22:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1960,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16854:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1969,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1964,
                                    "name": "user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1938,
                                    "src": "16901:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                      "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                    }
                                  },
                                  "id": 1965,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "rewardDebt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 603,
                                  "src": "16901:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1962,
                                  "name": "accumulatedReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1947,
                                  "src": "16879:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 1963,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4239,
                                "src": "16879:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 1966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16879:38:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 1967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "toUInt256",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4299,
                            "src": "16879:48:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$bound_to$_t_int256_$",
                              "typeString": "function (int256) pure returns (uint256)"
                            }
                          },
                          "id": 1968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16879:50:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16854:75:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1970,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1938,
                              "src": "16962:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1972,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 603,
                            "src": "16962:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1979,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1932,
                                            "src": "17020:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_PoolInfo_$611_memory_ptr",
                                              "typeString": "struct MiniChefV2.PoolInfo memory"
                                            }
                                          },
                                          "id": 1980,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accRewardPerShare",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 606,
                                          "src": "17020:22:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1977,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1926,
                                          "src": "17009:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1978,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 355,
                                        "src": "17009:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1981,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17009:34:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1982,
                                      "name": "ACC_REWARD_PRECISION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 655,
                                      "src": "17046:20:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "17009:57:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1976,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17002:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 1975,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17002:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17002:65:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1973,
                                "name": "accumulatedReward",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1947,
                                "src": "16980:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 1974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4239,
                              "src": "16980:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 1985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16980:88:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "16962:106:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 1987,
                        "nodeType": "ExpressionStatement",
                        "src": "16962:106:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1988,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1938,
                              "src": "17079:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 1990,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 601,
                            "src": "17079:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1994,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1926,
                                "src": "17109:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1991,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1938,
                                  "src": "17093:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                    "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                  }
                                },
                                "id": 1992,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 601,
                                "src": "17093:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 327,
                              "src": "17093:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17093:23:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17079:37:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1997,
                        "nodeType": "ExpressionStatement",
                        "src": "17079:37:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2001,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1928,
                              "src": "17174:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2002,
                              "name": "_pendingReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1961,
                              "src": "17178:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1998,
                              "name": "REWARD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 614,
                              "src": "17154:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 231,
                            "src": "17154:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17154:39:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2004,
                        "nodeType": "ExpressionStatement",
                        "src": "17154:39:3"
                      },
                      {
                        "assignments": [
                          2006
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2006,
                            "mutability": "mutable",
                            "name": "_rewarder",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2057,
                            "src": "17206:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IRewarder_$4102",
                              "typeString": "contract IRewarder"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2005,
                              "name": "IRewarder",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4102,
                              "src": "17206:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IRewarder_$4102",
                                "typeString": "contract IRewarder"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2010,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2007,
                            "name": "rewarder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 630,
                            "src": "17228:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IRewarder_$4102_$dyn_storage",
                              "typeString": "contract IRewarder[] storage ref"
                            }
                          },
                          "id": 2009,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2008,
                            "name": "pid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1924,
                            "src": "17237:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17228:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IRewarder_$4102",
                            "typeString": "contract IRewarder"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17206:35:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2013,
                                "name": "_rewarder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2006,
                                "src": "17264:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IRewarder_$4102",
                                  "typeString": "contract IRewarder"
                                }
                              ],
                              "id": 2012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17256:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2011,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17256:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17256:18:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17286:1:3",
                                "subdenomination": null,
                                "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": 2016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17278:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2015,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17278:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2018,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17278:10:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "17256:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2033,
                        "nodeType": "IfStatement",
                        "src": "17252:133:3",
                        "trueBody": {
                          "id": 2032,
                          "nodeType": "Block",
                          "src": "17290:95:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2023,
                                    "name": "pid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1924,
                                    "src": "17324:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2024,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "17329:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2025,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "17329:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2026,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1928,
                                    "src": "17341:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2027,
                                    "name": "_pendingReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1961,
                                    "src": "17345:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2028,
                                      "name": "user",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1938,
                                      "src": "17361:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                        "typeString": "struct MiniChefV2.UserInfo storage pointer"
                                      }
                                    },
                                    "id": 2029,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 601,
                                    "src": "17361:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2020,
                                    "name": "_rewarder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2006,
                                    "src": "17305:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IRewarder_$4102",
                                      "typeString": "contract IRewarder"
                                    }
                                  },
                                  "id": 2022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "onReward",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4086,
                                  "src": "17305:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,address,address,uint256,uint256) external"
                                  }
                                },
                                "id": 2030,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17305:68:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2031,
                              "nodeType": "ExpressionStatement",
                              "src": "17305:68:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2038,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1928,
                              "src": "17423:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2039,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "17427:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2034,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 626,
                                "src": "17397:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2036,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2035,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1924,
                                "src": "17405:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17397:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 231,
                            "src": "17397:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17397:37:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2041,
                        "nodeType": "ExpressionStatement",
                        "src": "17397:37:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2043,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "17461:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17461:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2045,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1924,
                              "src": "17473:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2046,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "17478:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2047,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1928,
                              "src": "17486:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2042,
                            "name": "Withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 678,
                            "src": "17452:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 2048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17452:37:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2049,
                        "nodeType": "EmitStatement",
                        "src": "17447:42:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2051,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "17513:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17513:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2053,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1924,
                              "src": "17525:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2054,
                              "name": "_pendingReward",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1961,
                              "src": "17530:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2050,
                            "name": "Harvest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 696,
                            "src": "17505:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 2055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17505:40:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2056,
                        "nodeType": "EmitStatement",
                        "src": "17500:45:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1922,
                    "nodeType": "StructuredDocumentation",
                    "src": "16282:262:3",
                    "text": "@notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`.\n @param pid The index of the pool. See `poolInfo`.\n @param amount LP token amount to withdraw.\n @param to Receiver of the LP tokens and rewards."
                  },
                  "functionSelector": "d1abb907",
                  "id": 2058,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndHarvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1924,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2058,
                        "src": "16578:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1923,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16578:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1926,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2058,
                        "src": "16591:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1925,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16591:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1928,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2058,
                        "src": "16607:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1927,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16607:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16577:41:3"
                  },
                  "returnParameters": {
                    "id": 1930,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16626:0:3"
                  },
                  "scope": 2455,
                  "src": "16550:1003:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2108,
                    "nodeType": "Block",
                    "src": "17797:343:3",
                    "statements": [
                      {
                        "assignments": [
                          2067
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2067,
                            "mutability": "mutable",
                            "name": "user",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2108,
                            "src": "17808:21:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 2066,
                              "name": "UserInfo",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 604,
                              "src": "17808:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2074,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2068,
                              "name": "userInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 637,
                              "src": "17832:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(address => struct MiniChefV2.UserInfo storage ref))"
                              }
                            },
                            "id": 2070,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2069,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2061,
                              "src": "17841:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17832:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserInfo_$604_storage_$",
                              "typeString": "mapping(address => struct MiniChefV2.UserInfo storage ref)"
                            }
                          },
                          "id": 2073,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2071,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "17846:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17846:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17832:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserInfo_$604_storage",
                            "typeString": "struct MiniChefV2.UserInfo storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17808:49:3"
                      },
                      {
                        "assignments": [
                          2076
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2076,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2108,
                            "src": "17868:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2075,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17868:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2079,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2077,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2067,
                            "src": "17885:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                              "typeString": "struct MiniChefV2.UserInfo storage pointer"
                            }
                          },
                          "id": 2078,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 601,
                          "src": "17885:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17868:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2080,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2067,
                              "src": "17907:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2082,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 601,
                            "src": "17907:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17921:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17907:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2085,
                        "nodeType": "ExpressionStatement",
                        "src": "17907:15:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2086,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2067,
                              "src": "17933:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UserInfo_$604_storage_ptr",
                                "typeString": "struct MiniChefV2.UserInfo storage pointer"
                              }
                            },
                            "id": 2088,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardDebt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 603,
                            "src": "17933:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17951:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17933:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 2091,
                        "nodeType": "ExpressionStatement",
                        "src": "17933:19:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2096,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2063,
                              "src": "18059:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2097,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2076,
                              "src": "18063:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2092,
                                "name": "lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 626,
                                "src": "18033:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage",
                                  "typeString": "contract IERC20[] storage ref"
                                }
                              },
                              "id": 2094,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2093,
                                "name": "pid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2061,
                                "src": "18041:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18033:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 231,
                            "src": "18033:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                              "typeString": "function (contract IERC20,address,uint256)"
                            }
                          },
                          "id": 2098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18033:37:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2099,
                        "nodeType": "ExpressionStatement",
                        "src": "18033:37:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2101,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "18104:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "18104:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2103,
                              "name": "pid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2061,
                              "src": "18116:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2104,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2076,
                              "src": "18121:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2105,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2063,
                              "src": "18129:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2100,
                            "name": "EmergencyWithdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 688,
                            "src": "18086:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address)"
                            }
                          },
                          "id": 2106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18086:46:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2107,
                        "nodeType": "EmitStatement",
                        "src": "18081:51:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2059,
                    "nodeType": "StructuredDocumentation",
                    "src": "17561:171:3",
                    "text": "@notice Withdraw without caring about rewards. EMERGENCY ONLY.\n @param pid The index of the pool. See `poolInfo`.\n @param to Receiver of the LP tokens."
                  },
                  "functionSelector": "2f940c70",
                  "id": 2109,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "emergencyWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2064,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2061,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2109,
                        "src": "17765:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2060,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17765:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2063,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2109,
                        "src": "17778:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2062,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17778:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17764:25:3"
                  },
                  "returnParameters": {
                    "id": 2065,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17797:0:3"
                  },
                  "scope": 2455,
                  "src": "17738:402:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2127,
                    "nodeType": "Block",
                    "src": "18330:77:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2117,
                              "name": "funder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 647,
                              "src": "18341:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2119,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2118,
                              "name": "_funder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2112,
                              "src": "18348:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "18341:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 2120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18359:4:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "18341:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2122,
                        "nodeType": "ExpressionStatement",
                        "src": "18341:22:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2124,
                              "name": "_funder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2112,
                              "src": "18391:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2123,
                            "name": "FunderAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 740,
                            "src": "18379:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18379:20:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2126,
                        "nodeType": "EmitStatement",
                        "src": "18374:25:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2110,
                    "nodeType": "StructuredDocumentation",
                    "src": "18148:121:3",
                    "text": "@notice Give permission for an address to change the rewards duration\n @param _funder The address to be added"
                  },
                  "functionSelector": "1bbe9d8c",
                  "id": 2128,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2115,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2114,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "18320:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "18320:9:3"
                    }
                  ],
                  "name": "addFunder",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2113,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2112,
                        "mutability": "mutable",
                        "name": "_funder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2128,
                        "src": "18294:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2111,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18294:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18293:17:3"
                  },
                  "returnParameters": {
                    "id": 2116,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18330:0:3"
                  },
                  "scope": 2455,
                  "src": "18275:132:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2146,
                    "nodeType": "Block",
                    "src": "18604:80:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2136,
                              "name": "funder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 647,
                              "src": "18615:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2138,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2137,
                              "name": "_funder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2131,
                              "src": "18622:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "18615:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "66616c7365",
                            "id": 2139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18633:5:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "18615:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2141,
                        "nodeType": "ExpressionStatement",
                        "src": "18615:23:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2143,
                              "name": "_funder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2131,
                              "src": "18668:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2142,
                            "name": "FunderRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 744,
                            "src": "18654:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18654:22:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2145,
                        "nodeType": "EmitStatement",
                        "src": "18649:27:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2129,
                    "nodeType": "StructuredDocumentation",
                    "src": "18415:125:3",
                    "text": "@notice Remove permission for an address to change the rewards duration\n @param _funder The address to be removed"
                  },
                  "functionSelector": "dcd18dd4",
                  "id": 2147,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2134,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2133,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "18594:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "18594:9:3"
                    }
                  ],
                  "name": "removeFunder",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2132,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2131,
                        "mutability": "mutable",
                        "name": "_funder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2147,
                        "src": "18568:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2130,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18568:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18567:17:3"
                  },
                  "returnParameters": {
                    "id": 2135,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18604:0:3"
                  },
                  "scope": 2455,
                  "src": "18546:138:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2166,
                    "nodeType": "Block",
                    "src": "18714:129:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2150,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "18733:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "18733:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 2152,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4368,
                                    "src": "18747:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 2153,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18747:7:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "18733:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2160,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2155,
                                    "name": "funder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 647,
                                    "src": "18758:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 2158,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2156,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "18765:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2157,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "18765:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18758:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 2159,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18780:4:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "18758:26:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "18733:51:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a2063616c6c6572206973206e6f7420612066756e646572",
                              "id": 2162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18786:36:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ea923c50c7fdcea1362f3628579ae948d34bf76b485f82f14d7874f41ba7fb5c",
                                "typeString": "literal_string \"MiniChefV2: caller is not a funder\""
                              },
                              "value": "MiniChefV2: caller is not a funder"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ea923c50c7fdcea1362f3628579ae948d34bf76b485f82f14d7874f41ba7fb5c",
                                "typeString": "literal_string \"MiniChefV2: caller is not a funder\""
                              }
                            ],
                            "id": 2149,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "18725:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18725:98:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2164,
                        "nodeType": "ExpressionStatement",
                        "src": "18725:98:3"
                      },
                      {
                        "id": 2165,
                        "nodeType": "PlaceholderStatement",
                        "src": "18834:1:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 2167,
                  "name": "onlyFunder",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2148,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18711:2:3"
                  },
                  "src": "18692:151:3",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2287,
                    "nodeType": "Block",
                    "src": "19167:1140:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2178,
                                "name": "funding",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2170,
                                "src": "19186:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19196:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "19186:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a2066756e64696e672063616e6e6f74206265207a65726f",
                              "id": 2181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19199:36:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0c20584d5fef3490e6544a1ce717087674f1dede1297f960ceb56b41874385ee",
                                "typeString": "literal_string \"MiniChefV2: funding cannot be zero\""
                              },
                              "value": "MiniChefV2: funding cannot be zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0c20584d5fef3490e6544a1ce717087674f1dede1297f960ceb56b41874385ee",
                                "typeString": "literal_string \"MiniChefV2: funding cannot be zero\""
                              }
                            ],
                            "id": 2177,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "19178:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19178:58:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2183,
                        "nodeType": "ExpressionStatement",
                        "src": "19178:58:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2187,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "19273:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "19273:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2191,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "19293:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 2190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19285:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2189,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19285:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19285:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2193,
                              "name": "funding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2170,
                              "src": "19300:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2184,
                              "name": "REWARD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 614,
                              "src": "19249:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2186,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 280,
                            "src": "19249:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 2194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19249:59:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2195,
                        "nodeType": "ExpressionStatement",
                        "src": "19249:59:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2196,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "19325:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 2197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "19325:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2198,
                            "name": "rewardsExpiration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 658,
                            "src": "19344:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19325:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2277,
                          "nodeType": "Block",
                          "src": "19613:579:3",
                          "statements": [
                            {
                              "assignments": [
                                2226
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2226,
                                  "mutability": "mutable",
                                  "name": "remainingTime",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2277,
                                  "src": "19628:21:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2225,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "19628:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2232,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2229,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "19674:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 2230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "19674:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2227,
                                    "name": "rewardsExpiration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 658,
                                    "src": "19652:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2228,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 327,
                                  "src": "19652:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2231,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19652:38:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "19628:62:3"
                            },
                            {
                              "assignments": [
                                2234
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2234,
                                  "mutability": "mutable",
                                  "name": "remainingRewards",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2277,
                                  "src": "19705:24:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2233,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "19705:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2239,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2237,
                                    "name": "rewardPerSecond",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 652,
                                    "src": "19750:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2235,
                                    "name": "remainingTime",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2226,
                                    "src": "19732:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2236,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 355,
                                  "src": "19732:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19732:34:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "19705:61:3"
                            },
                            {
                              "assignments": [
                                2241
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2241,
                                  "mutability": "mutable",
                                  "name": "newRewardsExpiration",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2277,
                                  "src": "19781:28:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2240,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "19781:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2246,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2244,
                                    "name": "duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2172,
                                    "src": "19834:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2242,
                                    "name": "rewardsExpiration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 658,
                                    "src": "19812:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 305,
                                  "src": "19812:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19812:31:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "19781:62:3"
                            },
                            {
                              "assignments": [
                                2248
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2248,
                                  "mutability": "mutable",
                                  "name": "newRewardPerSecond",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2277,
                                  "src": "19858:26:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2247,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "19858:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2260,
                              "initialValue": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2259,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2251,
                                      "name": "funding",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2170,
                                      "src": "19908:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2249,
                                      "name": "remainingRewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2234,
                                      "src": "19887:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 305,
                                    "src": "19887:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2252,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19887:29:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2255,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "19945:5:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 2256,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "timestamp",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "19945:15:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2253,
                                          "name": "newRewardsExpiration",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2241,
                                          "src": "19920:20:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2254,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 327,
                                        "src": "19920:24:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2257,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "19920:41:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 2258,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "19919:43:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19887:75:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "19858:104:3"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2261,
                                  "name": "newRewardPerSecond",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2248,
                                  "src": "19981:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2262,
                                  "name": "rewardPerSecond",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 652,
                                  "src": "20003:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19981:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2268,
                              "nodeType": "IfStatement",
                              "src": "19977:98:3",
                              "trueBody": {
                                "id": 2267,
                                "nodeType": "Block",
                                "src": "20020:55:3",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 2264,
                                        "name": "massUpdateAllPools",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1456,
                                        "src": "20039:18:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                          "typeString": "function ()"
                                        }
                                      },
                                      "id": 2265,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20039:20:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2266,
                                    "nodeType": "ExpressionStatement",
                                    "src": "20039:20:3"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2269,
                                  "name": "rewardsExpiration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 658,
                                  "src": "20089:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2270,
                                  "name": "newRewardsExpiration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2241,
                                  "src": "20109:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20089:40:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2272,
                              "nodeType": "ExpressionStatement",
                              "src": "20089:40:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2273,
                                  "name": "rewardPerSecond",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 652,
                                  "src": "20144:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2274,
                                  "name": "newRewardPerSecond",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2248,
                                  "src": "20162:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20144:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2276,
                              "nodeType": "ExpressionStatement",
                              "src": "20144:36:3"
                            }
                          ]
                        },
                        "id": 2278,
                        "nodeType": "IfStatement",
                        "src": "19321:871:3",
                        "trueBody": {
                          "id": 2224,
                          "nodeType": "Block",
                          "src": "19363:244:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2203,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2201,
                                      "name": "duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2172,
                                      "src": "19386:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2202,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19397:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "19386:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "4d696e694368656656323a20726577617264206475726174696f6e2063616e6e6f74206265207a65726f",
                                    "id": 2204,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19400:44:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_f7b0afa066340f1db54dffdb1929120a2d76135bfcc449cef0bc36edd5075058",
                                      "typeString": "literal_string \"MiniChefV2: reward duration cannot be zero\""
                                    },
                                    "value": "MiniChefV2: reward duration cannot be zero"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_f7b0afa066340f1db54dffdb1929120a2d76135bfcc449cef0bc36edd5075058",
                                      "typeString": "literal_string \"MiniChefV2: reward duration cannot be zero\""
                                    }
                                  ],
                                  "id": 2200,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "19378:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19378:67:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2206,
                              "nodeType": "ExpressionStatement",
                              "src": "19378:67:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2207,
                                  "name": "massUpdateAllPools",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1456,
                                  "src": "19460:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 2208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19460:20:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2209,
                              "nodeType": "ExpressionStatement",
                              "src": "19460:20:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2210,
                                  "name": "rewardsExpiration",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 658,
                                  "src": "19495:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2214,
                                      "name": "duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2172,
                                      "src": "19535:8:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2211,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "19515:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 2212,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "19515:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2213,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 305,
                                    "src": "19515:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2215,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19515:29:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19495:49:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2217,
                              "nodeType": "ExpressionStatement",
                              "src": "19495:49:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2218,
                                  "name": "rewardPerSecond",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 652,
                                  "src": "19559:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2221,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2219,
                                    "name": "funding",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2170,
                                    "src": "19577:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2220,
                                    "name": "duration",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2172,
                                    "src": "19587:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19577:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19559:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2223,
                              "nodeType": "ExpressionStatement",
                              "src": "19559:36:3"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2280,
                              "name": "rewardPerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 652,
                              "src": "20228:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2279,
                            "name": "LogRewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 748,
                            "src": "20209:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20209:35:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2282,
                        "nodeType": "EmitStatement",
                        "src": "20204:40:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2284,
                              "name": "rewardsExpiration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 658,
                              "src": "20281:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2283,
                            "name": "LogRewardsExpiration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 752,
                            "src": "20260:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20260:39:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2286,
                        "nodeType": "EmitStatement",
                        "src": "20255:44:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2168,
                    "nodeType": "StructuredDocumentation",
                    "src": "18851:234:3",
                    "text": "@notice Add funding and potentially extend duration of the rolling reward period\n @param funding Amount of reward token to add\n @param duration Total time (seconds) during which the additional funds are distributed"
                  },
                  "functionSelector": "28662551",
                  "id": 2288,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2175,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2174,
                        "name": "onlyFunder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2167,
                        "src": "19156:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "19156:10:3"
                    }
                  ],
                  "name": "fundRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2170,
                        "mutability": "mutable",
                        "name": "funding",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2288,
                        "src": "19112:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2169,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19112:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2172,
                        "mutability": "mutable",
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2288,
                        "src": "19129:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2171,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19129:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19111:35:3"
                  },
                  "returnParameters": {
                    "id": 2176,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19167:0:3"
                  },
                  "scope": 2455,
                  "src": "19091:1216:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2348,
                    "nodeType": "Block",
                    "src": "20562:522:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2297,
                                "name": "duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2291,
                                "src": "20581:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20592:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "20581:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a20726577617264206475726174696f6e2063616e6e6f74206265207a65726f",
                              "id": 2300,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20595:44:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f7b0afa066340f1db54dffdb1929120a2d76135bfcc449cef0bc36edd5075058",
                                "typeString": "literal_string \"MiniChefV2: reward duration cannot be zero\""
                              },
                              "value": "MiniChefV2: reward duration cannot be zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f7b0afa066340f1db54dffdb1929120a2d76135bfcc449cef0bc36edd5075058",
                                "typeString": "literal_string \"MiniChefV2: reward duration cannot be zero\""
                              }
                            ],
                            "id": 2296,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "20573:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20573:67:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2302,
                        "nodeType": "ExpressionStatement",
                        "src": "20573:67:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2303,
                            "name": "massUpdateAllPools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1456,
                            "src": "20653:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 2304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20653:20:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2305,
                        "nodeType": "ExpressionStatement",
                        "src": "20653:20:3"
                      },
                      {
                        "assignments": [
                          2307
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2307,
                            "mutability": "mutable",
                            "name": "remainingTime",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2348,
                            "src": "20686:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2306,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20686:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2313,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2310,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "20732:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "20732:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2308,
                              "name": "rewardsExpiration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 658,
                              "src": "20710:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 327,
                            "src": "20710:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20710:38:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20686:62:3"
                      },
                      {
                        "assignments": [
                          2315
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2315,
                            "mutability": "mutable",
                            "name": "remainingRewards",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2348,
                            "src": "20759:24:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2314,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20759:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2320,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2318,
                              "name": "rewardPerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 652,
                              "src": "20804:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2316,
                              "name": "remainingTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2307,
                              "src": "20786:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 355,
                            "src": "20786:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20786:34:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20759:61:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2321,
                            "name": "rewardsExpiration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 658,
                            "src": "20831:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2325,
                                "name": "duration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2291,
                                "src": "20871:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2322,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "20851:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 2323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "20851:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 305,
                              "src": "20851:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2326,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20851:29:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20831:49:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2328,
                        "nodeType": "ExpressionStatement",
                        "src": "20831:49:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2329,
                            "name": "rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 652,
                            "src": "20891:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2330,
                              "name": "remainingRewards",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2315,
                              "src": "20909:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2333,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "20951:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 2334,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "20951:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2331,
                                      "name": "rewardsExpiration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 658,
                                      "src": "20929:17:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 327,
                                    "src": "20929:21:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20929:38:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 2336,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "20928:40:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "20909:59:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20891:77:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2339,
                        "nodeType": "ExpressionStatement",
                        "src": "20891:77:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2341,
                              "name": "rewardPerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 652,
                              "src": "21005:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2340,
                            "name": "LogRewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 748,
                            "src": "20986:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20986:35:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2343,
                        "nodeType": "EmitStatement",
                        "src": "20981:40:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2345,
                              "name": "rewardsExpiration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 658,
                              "src": "21058:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2344,
                            "name": "LogRewardsExpiration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 752,
                            "src": "21037:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21037:39:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2347,
                        "nodeType": "EmitStatement",
                        "src": "21032:44:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2289,
                    "nodeType": "StructuredDocumentation",
                    "src": "20315:174:3",
                    "text": "@notice Allocate the existing rewards during a newly defined period starting now\n @param duration Time (seconds) to fully distribute the currently present rewards"
                  },
                  "functionSelector": "4b87e90f",
                  "id": 2349,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 2294,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2293,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "20552:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "20552:9:3"
                    }
                  ],
                  "name": "resetRewardsDuration",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2292,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2291,
                        "mutability": "mutable",
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2349,
                        "src": "20525:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2290,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20525:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20524:18:3"
                  },
                  "returnParameters": {
                    "id": 2295,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20562:0:3"
                  },
                  "scope": 2455,
                  "src": "20495:589:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2400,
                    "nodeType": "Block",
                    "src": "21423:449:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2358,
                                "name": "funding",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2352,
                                "src": "21442:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "21452:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "21442:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a2066756e64696e6720616d6f756e742063616e6e6f74206265207a65726f",
                              "id": 2361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21455:43:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e631e955b37848e1270ed65eee698102762d0f9dd45888df9b0fc1c4c81bdf9",
                                "typeString": "literal_string \"MiniChefV2: funding amount cannot be zero\""
                              },
                              "value": "MiniChefV2: funding amount cannot be zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e631e955b37848e1270ed65eee698102762d0f9dd45888df9b0fc1c4c81bdf9",
                                "typeString": "literal_string \"MiniChefV2: funding amount cannot be zero\""
                              }
                            ],
                            "id": 2357,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21434:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21434:65:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2363,
                        "nodeType": "ExpressionStatement",
                        "src": "21434:65:3"
                      },
                      {
                        "assignments": [
                          2365
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2365,
                            "mutability": "mutable",
                            "name": "extensionDuration",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2400,
                            "src": "21512:25:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2364,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21512:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2369,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2366,
                            "name": "funding",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2352,
                            "src": "21540:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2367,
                            "name": "rewardPerSecond",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 652,
                            "src": "21550:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21540:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21512:53:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2371,
                                "name": "extensionDuration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2365,
                                "src": "21584:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2372,
                                "name": "minExtension",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2354,
                                "src": "21605:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "21584:33:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a20696e73756666696369656e7420657874656e73696f6e206c696d6974",
                              "id": 2374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21619:42:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1154b970bb6c63b9fcc447d243fd4b7cc4aae0b1af841337bbee2e87033a9f6a",
                                "typeString": "literal_string \"MiniChefV2: insufficient extension limit\""
                              },
                              "value": "MiniChefV2: insufficient extension limit"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1154b970bb6c63b9fcc447d243fd4b7cc4aae0b1af841337bbee2e87033a9f6a",
                                "typeString": "literal_string \"MiniChefV2: insufficient extension limit\""
                              }
                            ],
                            "id": 2370,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "21576:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21576:86:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2376,
                        "nodeType": "ExpressionStatement",
                        "src": "21576:86:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2377,
                            "name": "rewardsExpiration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 658,
                            "src": "21675:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2380,
                                "name": "extensionDuration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2365,
                                "src": "21717:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2378,
                                "name": "rewardsExpiration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 658,
                                "src": "21695:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 305,
                              "src": "21695:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21695:40:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21675:60:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2383,
                        "nodeType": "ExpressionStatement",
                        "src": "21675:60:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2387,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "21772:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "21772:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2391,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "21792:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 2390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21784:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2389,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21784:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21784:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2393,
                              "name": "funding",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "21799:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2384,
                              "name": "REWARD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 614,
                              "src": "21748:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 280,
                            "src": "21748:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 2394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21748:59:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2395,
                        "nodeType": "ExpressionStatement",
                        "src": "21748:59:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2397,
                              "name": "rewardsExpiration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 658,
                              "src": "21846:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2396,
                            "name": "LogRewardsExpiration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 752,
                            "src": "21825:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21825:39:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2399,
                        "nodeType": "EmitStatement",
                        "src": "21820:44:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2350,
                    "nodeType": "StructuredDocumentation",
                    "src": "21092:244:3",
                    "text": "@notice Extends the rolling reward period by adding funds without changing the reward rate\n @param funding Amount of reward token to add\n @notice minExtension Minimum time (seconds) that the reward duration must be increased"
                  },
                  "functionSelector": "19610b2b",
                  "id": 2401,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "extendRewardsViaFunding",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2352,
                        "mutability": "mutable",
                        "name": "funding",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2401,
                        "src": "21375:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2351,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21375:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2354,
                        "mutability": "mutable",
                        "name": "minExtension",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2401,
                        "src": "21392:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2353,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21392:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21374:39:3"
                  },
                  "returnParameters": {
                    "id": 2356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21423:0:3"
                  },
                  "scope": 2455,
                  "src": "21342:530:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2453,
                    "nodeType": "Block",
                    "src": "22215:452:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2410,
                                "name": "extension",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2404,
                                "src": "22234:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22246:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "22234:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a20657874656e73696f6e206475726174696f6e2063616e6e6f74206265207a65726f",
                              "id": 2413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22249:47:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1d11a2cd0e5e2832af910bac159b210d261b8835c57f496c647a85dfb01e7a99",
                                "typeString": "literal_string \"MiniChefV2: extension duration cannot be zero\""
                              },
                              "value": "MiniChefV2: extension duration cannot be zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1d11a2cd0e5e2832af910bac159b210d261b8835c57f496c647a85dfb01e7a99",
                                "typeString": "literal_string \"MiniChefV2: extension duration cannot be zero\""
                              }
                            ],
                            "id": 2409,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22226:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22226:71:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2415,
                        "nodeType": "ExpressionStatement",
                        "src": "22226:71:3"
                      },
                      {
                        "assignments": [
                          2417
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2417,
                            "mutability": "mutable",
                            "name": "fundingRequired",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2453,
                            "src": "22310:23:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2416,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22310:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2422,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2420,
                              "name": "extension",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2404,
                              "src": "22356:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2418,
                              "name": "rewardPerSecond",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 652,
                              "src": "22336:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 355,
                            "src": "22336:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22336:30:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22310:56:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2424,
                                "name": "fundingRequired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2417,
                                "src": "22385:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2425,
                                "name": "maxFunding",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2406,
                                "src": "22404:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "22385:29:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d696e694368656656323a20696e73756666696369656e742066756e64696e67206c696d6974",
                              "id": 2427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22416:40:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2dc3acb0ad5b00270b5ba92e98d2c43e63217ec1f93ecd86bffd5e1decc6b536",
                                "typeString": "literal_string \"MiniChefV2: insufficient funding limit\""
                              },
                              "value": "MiniChefV2: insufficient funding limit"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2dc3acb0ad5b00270b5ba92e98d2c43e63217ec1f93ecd86bffd5e1decc6b536",
                                "typeString": "literal_string \"MiniChefV2: insufficient funding limit\""
                              }
                            ],
                            "id": 2423,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "22377:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22377:80:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2429,
                        "nodeType": "ExpressionStatement",
                        "src": "22377:80:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2430,
                            "name": "rewardsExpiration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 658,
                            "src": "22470:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2433,
                                "name": "extension",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2404,
                                "src": "22512:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2431,
                                "name": "rewardsExpiration",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 658,
                                "src": "22490:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 305,
                              "src": "22490:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22490:32:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22470:52:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2436,
                        "nodeType": "ExpressionStatement",
                        "src": "22470:52:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2440,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "22559:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "22559:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2444,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "22579:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MiniChefV2_$2455",
                                    "typeString": "contract MiniChefV2"
                                  }
                                ],
                                "id": 2443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "22571:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2442,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "22571:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22571:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2446,
                              "name": "fundingRequired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2417,
                              "src": "22586:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2437,
                              "name": "REWARD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 614,
                              "src": "22535:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 280,
                            "src": "22535:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                              "typeString": "function (contract IERC20,address,address,uint256)"
                            }
                          },
                          "id": 2447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22535:67:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2448,
                        "nodeType": "ExpressionStatement",
                        "src": "22535:67:3"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2450,
                              "name": "rewardsExpiration",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 658,
                              "src": "22641:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2449,
                            "name": "LogRewardsExpiration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 752,
                            "src": "22620:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22620:39:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2452,
                        "nodeType": "EmitStatement",
                        "src": "22615:44:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2402,
                    "nodeType": "StructuredDocumentation",
                    "src": "21880:247:3",
                    "text": "@notice Extends the rolling reward period by adding funds without changing the reward rate\n @param extension Time (seconds) to increase the rewards duration\n @param maxFunding Maximum amount of the reward token that can be used"
                  },
                  "functionSelector": "933f084f",
                  "id": 2454,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "extendRewardsViaDuration",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2404,
                        "mutability": "mutable",
                        "name": "extension",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2454,
                        "src": "22167:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2403,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22167:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2406,
                        "mutability": "mutable",
                        "name": "maxFunding",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2454,
                        "src": "22186:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2405,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22186:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "22166:39:3"
                  },
                  "returnParameters": {
                    "id": 2408,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22215:0:3"
                  },
                  "scope": 2455,
                  "src": "22133:534:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2456,
              "src": "825:21845:3"
            }
          ],
          "src": "35:22637:3"
        },
        "id": 3
      },
      "contracts/MockContract.sol": {
        "ast": {
          "absolutePath": "contracts/MockContract.sol",
          "exportedSymbols": {
            "MockContract": [
              3664
            ],
            "MockInterface": [
              2608
            ]
          },
          "id": 3665,
          "license": null,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2457,
              "literals": [
                "solidity",
                "^",
                "0.6",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 2608,
              "linearizedBaseContracts": [
                2608
              ],
              "name": "MockInterface",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 2458,
                    "nodeType": "StructuredDocumentation",
                    "src": "52:279:4",
                    "text": " @dev After calling this method, the mock will return `response` when it is called\n with any calldata that is not mocked more specifically below\n (e.g. using givenMethodReturn).\n @param response ABI encoded response that will be returned if method is invoked"
                  },
                  "functionSelector": "d6fe9778",
                  "id": 2463,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2460,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2463,
                        "src": "357:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2459,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "357:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "356:25:4"
                  },
                  "returnParameters": {
                    "id": 2462,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "390:0:4"
                  },
                  "scope": 2608,
                  "src": "333:58:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "36ff0ee5",
                  "id": 2468,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2465,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2468,
                        "src": "421:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2464,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "421:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "420:15:4"
                  },
                  "returnParameters": {
                    "id": 2467,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "444:0:4"
                  },
                  "scope": 2608,
                  "src": "393:52:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "af21ac78",
                  "id": 2473,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2470,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2473,
                        "src": "475:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2469,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "475:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "474:15:4"
                  },
                  "returnParameters": {
                    "id": 2472,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "498:0:4"
                  },
                  "scope": 2608,
                  "src": "447:52:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "682b4797",
                  "id": 2478,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2475,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2478,
                        "src": "532:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2474,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "532:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "531:18:4"
                  },
                  "returnParameters": {
                    "id": 2477,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "558:0:4"
                  },
                  "scope": 2608,
                  "src": "501:58:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "e211b8a5",
                  "id": 2481,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2479,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "585:2:4"
                  },
                  "returnParameters": {
                    "id": 2480,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "596:0:4"
                  },
                  "scope": 2608,
                  "src": "562:35:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "87abab65",
                  "id": 2486,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2484,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2483,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2486,
                        "src": "634:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2482,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "634:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "633:25:4"
                  },
                  "returnParameters": {
                    "id": 2485,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "667:0:4"
                  },
                  "scope": 2608,
                  "src": "599:69:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "3956dc6b",
                  "id": 2489,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2487,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "698:2:4"
                  },
                  "returnParameters": {
                    "id": 2488,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "709:0:4"
                  },
                  "scope": 2608,
                  "src": "670:40:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 2490,
                    "nodeType": "StructuredDocumentation",
                    "src": "713:497:4",
                    "text": " @dev After calling this method, the mock will return `response` when the given\n methodId is called regardless of arguments. If the methodId and arguments\n are mocked more specifically (using `givenMethodAndArguments`) the latter\n will take precedence.\n @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\n @param response ABI encoded response that will be returned if method is invoked"
                  },
                  "functionSelector": "c6ee167f",
                  "id": 2497,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2492,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2497,
                        "src": "1239:21:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2491,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1239:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2494,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2497,
                        "src": "1262:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2493,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1262:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1238:48:4"
                  },
                  "returnParameters": {
                    "id": 2496,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1295:0:4"
                  },
                  "scope": 2608,
                  "src": "1212:84:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "6f400756",
                  "id": 2504,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2502,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2499,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2504,
                        "src": "1329:21:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2498,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1329:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2501,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2504,
                        "src": "1352:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2500,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1352:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1328:38:4"
                  },
                  "returnParameters": {
                    "id": 2503,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1375:0:4"
                  },
                  "scope": 2608,
                  "src": "1298:78:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "f5afa9c1",
                  "id": 2511,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2506,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2511,
                        "src": "1409:21:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2505,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1409:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2508,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2511,
                        "src": "1432:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2507,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1432:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1408:38:4"
                  },
                  "returnParameters": {
                    "id": 2510,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1455:0:4"
                  },
                  "scope": 2608,
                  "src": "1378:78:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "cf11ff5d",
                  "id": 2518,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2513,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2518,
                        "src": "1492:21:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2512,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1492:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2515,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2518,
                        "src": "1515:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2514,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1515:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1491:41:4"
                  },
                  "returnParameters": {
                    "id": 2517,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1541:0:4"
                  },
                  "scope": 2608,
                  "src": "1458:84:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "aa788c55",
                  "id": 2523,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2520,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2523,
                        "src": "1572:21:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2519,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1572:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1571:23:4"
                  },
                  "returnParameters": {
                    "id": 2522,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1603:0:4"
                  },
                  "scope": 2608,
                  "src": "1545:59:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "9a1dc86b",
                  "id": 2530,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2525,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2530,
                        "src": "1644:21:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2524,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1644:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2527,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2530,
                        "src": "1667:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2526,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1667:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1643:48:4"
                  },
                  "returnParameters": {
                    "id": 2529,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1700:0:4"
                  },
                  "scope": 2608,
                  "src": "1606:95:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "68ab6f2f",
                  "id": 2535,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2532,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2535,
                        "src": "1735:21:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2531,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1735:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1734:23:4"
                  },
                  "returnParameters": {
                    "id": 2534,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1766:0:4"
                  },
                  "scope": 2608,
                  "src": "1703:64:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 2536,
                    "nodeType": "StructuredDocumentation",
                    "src": "1770:382:4",
                    "text": " @dev After calling this method, the mock will return `response` when the given\n methodId is called with matching arguments. These exact calldataMocks will take\n precedence over all other calldataMocks.\n @param call ABI encoded calldata (methodId and arguments)\n @param response ABI encoded response that will be returned if contract is invoked with calldata"
                  },
                  "functionSelector": "61936594",
                  "id": 2543,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2541,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2538,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2543,
                        "src": "2183:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2537,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2183:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2540,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2543,
                        "src": "2204:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2539,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2204:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2182:46:4"
                  },
                  "returnParameters": {
                    "id": 2542,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2237:0:4"
                  },
                  "scope": 2608,
                  "src": "2154:84:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "5a3855ab",
                  "id": 2550,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2545,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2550,
                        "src": "2273:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2544,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2273:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2547,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2550,
                        "src": "2294:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2546,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2294:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2272:36:4"
                  },
                  "returnParameters": {
                    "id": 2549,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2317:0:4"
                  },
                  "scope": 2608,
                  "src": "2240:78:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d73ca0ac",
                  "id": 2557,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2552,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2557,
                        "src": "2353:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2551,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2353:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2554,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2557,
                        "src": "2374:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2553,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2374:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2352:36:4"
                  },
                  "returnParameters": {
                    "id": 2556,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2397:0:4"
                  },
                  "scope": 2608,
                  "src": "2320:78:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "b3901f29",
                  "id": 2564,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2562,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2559,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2564,
                        "src": "2436:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2558,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2436:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2561,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2564,
                        "src": "2457:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2560,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2457:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2435:39:4"
                  },
                  "returnParameters": {
                    "id": 2563,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2483:0:4"
                  },
                  "scope": 2608,
                  "src": "2400:84:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "eb861f69",
                  "id": 2569,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2567,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2566,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2569,
                        "src": "2516:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2565,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2516:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2515:21:4"
                  },
                  "returnParameters": {
                    "id": 2568,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2545:0:4"
                  },
                  "scope": 2608,
                  "src": "2487:59:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "9eaeed75",
                  "id": 2576,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2571,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2576,
                        "src": "2588:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2570,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2588:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2573,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2576,
                        "src": "2609:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2572,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2609:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2587:46:4"
                  },
                  "returnParameters": {
                    "id": 2575,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2642:0:4"
                  },
                  "scope": 2608,
                  "src": "2548:95:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "21fed4d6",
                  "id": 2581,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2578,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2581,
                        "src": "2679:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2577,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2679:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2678:21:4"
                  },
                  "returnParameters": {
                    "id": 2580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2708:0:4"
                  },
                  "scope": 2608,
                  "src": "2645:64:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 2582,
                    "nodeType": "StructuredDocumentation",
                    "src": "2712:100:4",
                    "text": " @dev Returns the number of times anything has been called on this mock since last reset"
                  },
                  "functionSelector": "0a20119f",
                  "id": 2587,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2583,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2838:2:4"
                  },
                  "returnParameters": {
                    "id": 2586,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2585,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2587,
                        "src": "2859:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2584,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2859:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2858:6:4"
                  },
                  "scope": 2608,
                  "src": "2814:51:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 2588,
                    "nodeType": "StructuredDocumentation",
                    "src": "2868:248:4",
                    "text": " @dev Returns the number of times the given method has been called on this mock since last reset\n @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it"
                  },
                  "functionSelector": "4937c4f6",
                  "id": 2595,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCountForMethod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2591,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2590,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2595,
                        "src": "3152:21:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2589,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3152:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3151:23:4"
                  },
                  "returnParameters": {
                    "id": 2594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2593,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2595,
                        "src": "3193:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2592,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3193:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3192:6:4"
                  },
                  "scope": 2608,
                  "src": "3118:81:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 2596,
                    "nodeType": "StructuredDocumentation",
                    "src": "3202:175:4",
                    "text": " @dev Returns the number of times this mock has been called with the exact calldata since last reset.\n @param call ABI encoded calldata (methodId and arguments)"
                  },
                  "functionSelector": "586984a4",
                  "id": 2603,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCountForCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2598,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2603,
                        "src": "3415:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2597,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3415:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3414:21:4"
                  },
                  "returnParameters": {
                    "id": 2602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2601,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2603,
                        "src": "3454:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2600,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3454:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3453:6:4"
                  },
                  "scope": 2608,
                  "src": "3379:81:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 2604,
                    "nodeType": "StructuredDocumentation",
                    "src": "3463:66:4",
                    "text": " @dev Resets all mocked methods and invocation counts."
                  },
                  "functionSelector": "d826f88f",
                  "id": 2607,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3546:2:4"
                  },
                  "returnParameters": {
                    "id": 2606,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3557:0:4"
                  },
                  "scope": 2608,
                  "src": "3532:26:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3665,
              "src": "25:3535:4"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 2610,
                    "name": "MockInterface",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2608,
                    "src": "3635:13:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MockInterface_$2608",
                      "typeString": "contract MockInterface"
                    }
                  },
                  "id": 2611,
                  "nodeType": "InheritanceSpecifier",
                  "src": "3635:13:4"
                }
              ],
              "contractDependencies": [
                2608
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 2609,
                "nodeType": "StructuredDocumentation",
                "src": "3562:47:4",
                "text": " Implementation of the MockInterface."
              },
              "fullyImplemented": true,
              "id": 3664,
              "linearizedBaseContracts": [
                3664,
                2608
              ],
              "name": "MockContract",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "MockContract.MockType",
                  "id": 2615,
                  "members": [
                    {
                      "id": 2612,
                      "name": "Return",
                      "nodeType": "EnumValue",
                      "src": "3668:6:4"
                    },
                    {
                      "id": 2613,
                      "name": "Revert",
                      "nodeType": "EnumValue",
                      "src": "3676:6:4"
                    },
                    {
                      "id": 2614,
                      "name": "OutOfGas",
                      "nodeType": "EnumValue",
                      "src": "3684:8:4"
                    }
                  ],
                  "name": "MockType",
                  "nodeType": "EnumDefinition",
                  "src": "3652:42:4"
                },
                {
                  "constant": true,
                  "functionSelector": "67aad04a",
                  "id": 2618,
                  "mutability": "constant",
                  "name": "MOCKS_LIST_START",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "3698:50:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2616,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3698:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "01",
                    "id": 2617,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3741:7:4",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2",
                      "typeString": "literal_string \"\u0001\""
                    },
                    "value": "\u0001"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "7cd96ee4",
                  "id": 2621,
                  "mutability": "constant",
                  "name": "MOCKS_LIST_END",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "3751:45:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2619,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3751:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "30786666",
                    "id": 2620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3790:6:4",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_420daffad4b177bce28bead5f76f7bc97ef63c3aae74c496db8ce6aafe9e6513",
                      "typeString": "literal_string \"0xff\""
                    },
                    "value": "0xff"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "2ed238dc",
                  "id": 2626,
                  "mutability": "constant",
                  "name": "MOCKS_LIST_END_HASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "3799:71:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2622,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3799:7:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2624,
                        "name": "MOCKS_LIST_END",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2621,
                        "src": "3855:14:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2623,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "3845:9:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3845:25:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f07da229",
                  "id": 2629,
                  "mutability": "constant",
                  "name": "SENTINEL_ANY_MOCKS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "3873:51:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 2627,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3873:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "01",
                    "id": 2628,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3917:7:4",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2",
                      "typeString": "literal_string \"\u0001\""
                    },
                    "value": "\u0001"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "122aea81",
                  "id": 2635,
                  "mutability": "constant",
                  "name": "DEFAULT_FALLBACK_VALUE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "3927:64:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2630,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3927:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 2633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3985:5:4",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2631,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "3974:3:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 2632,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3974:10:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 2634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3974:17:4",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 2639,
                  "mutability": "mutable",
                  "name": "calldataMocks",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4056:39:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                    "typeString": "mapping(bytes32 => bytes)"
                  },
                  "typeName": {
                    "id": 2638,
                    "keyType": {
                      "id": 2636,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4064:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4056:25:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                      "typeString": "mapping(bytes32 => bytes)"
                    },
                    "valueType": {
                      "id": 2637,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4075:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2643,
                  "mutability": "mutable",
                  "name": "calldataMockTypes",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4098:44:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$2615_$",
                    "typeString": "mapping(bytes => enum MockContract.MockType)"
                  },
                  "typeName": {
                    "id": 2642,
                    "keyType": {
                      "id": 2640,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4106:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4098:26:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$2615_$",
                      "typeString": "mapping(bytes => enum MockContract.MockType)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 2641,
                      "name": "MockType",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 2615,
                      "src": "4115:8:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_MockType_$2615",
                        "typeString": "enum MockContract.MockType"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2647,
                  "mutability": "mutable",
                  "name": "calldataExpectations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4145:44:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                    "typeString": "mapping(bytes => bytes)"
                  },
                  "typeName": {
                    "id": 2646,
                    "keyType": {
                      "id": 2644,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4153:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4145:23:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                      "typeString": "mapping(bytes => bytes)"
                    },
                    "valueType": {
                      "id": 2645,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4162:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2651,
                  "mutability": "mutable",
                  "name": "calldataRevertMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4192:46:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                    "typeString": "mapping(bytes => string)"
                  },
                  "typeName": {
                    "id": 2650,
                    "keyType": {
                      "id": 2648,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4200:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4192:24:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                      "typeString": "mapping(bytes => string)"
                    },
                    "valueType": {
                      "id": 2649,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "4209:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2655,
                  "mutability": "mutable",
                  "name": "calldataInvocations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4241:44:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "typeName": {
                    "id": 2654,
                    "keyType": {
                      "id": 2652,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4249:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4241:24:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                      "typeString": "mapping(bytes32 => uint256)"
                    },
                    "valueType": {
                      "id": 2653,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "4260:4:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2659,
                  "mutability": "mutable",
                  "name": "methodIdMocks",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4289:39:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                    "typeString": "mapping(bytes4 => bytes4)"
                  },
                  "typeName": {
                    "id": 2658,
                    "keyType": {
                      "id": 2656,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4297:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4289:25:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                      "typeString": "mapping(bytes4 => bytes4)"
                    },
                    "valueType": {
                      "id": 2657,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4307:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2663,
                  "mutability": "mutable",
                  "name": "methodIdMockTypes",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4331:45:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$2615_$",
                    "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                  },
                  "typeName": {
                    "id": 2662,
                    "keyType": {
                      "id": 2660,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4339:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4331:27:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$2615_$",
                      "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 2661,
                      "name": "MockType",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 2615,
                      "src": "4349:8:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_MockType_$2615",
                        "typeString": "enum MockContract.MockType"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2667,
                  "mutability": "mutable",
                  "name": "methodIdExpectations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4379:45:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                    "typeString": "mapping(bytes4 => bytes)"
                  },
                  "typeName": {
                    "id": 2666,
                    "keyType": {
                      "id": 2664,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4387:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4379:24:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                      "typeString": "mapping(bytes4 => bytes)"
                    },
                    "valueType": {
                      "id": 2665,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4397:5:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2671,
                  "mutability": "mutable",
                  "name": "methodIdRevertMessages",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4427:48:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                    "typeString": "mapping(bytes4 => string)"
                  },
                  "typeName": {
                    "id": 2670,
                    "keyType": {
                      "id": 2668,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4435:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4427:25:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                      "typeString": "mapping(bytes4 => string)"
                    },
                    "valueType": {
                      "id": 2669,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "4445:6:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2675,
                  "mutability": "mutable",
                  "name": "methodIdInvocations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4478:44:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "typeName": {
                    "id": 2674,
                    "keyType": {
                      "id": 2672,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4486:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4478:24:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                      "typeString": "mapping(bytes32 => uint256)"
                    },
                    "valueType": {
                      "id": 2673,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "4497:4:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2677,
                  "mutability": "mutable",
                  "name": "fallbackMockType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4526:25:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_MockType_$2615",
                    "typeString": "enum MockContract.MockType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2676,
                    "name": "MockType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2615,
                    "src": "4526:8:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_MockType_$2615",
                      "typeString": "enum MockContract.MockType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2680,
                  "mutability": "mutable",
                  "name": "fallbackExpectation",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4554:50:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2678,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4554:5:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "id": 2679,
                    "name": "DEFAULT_FALLBACK_VALUE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2635,
                    "src": "4582:22:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2682,
                  "mutability": "mutable",
                  "name": "fallbackRevertMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4607:28:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2681,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4607:6:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2684,
                  "mutability": "mutable",
                  "name": "invocations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4638:16:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2683,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4638:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2686,
                  "mutability": "mutable",
                  "name": "resetCount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3664,
                  "src": "4657:15:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2685,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4657:4:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2701,
                    "nodeType": "Block",
                    "src": "4697:114:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2689,
                              "name": "calldataMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2639,
                              "src": "4701:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes32 => bytes storage ref)"
                              }
                            },
                            "id": 2691,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2690,
                              "name": "MOCKS_LIST_START",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2618,
                              "src": "4715:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4701:31:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2692,
                            "name": "MOCKS_LIST_END",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2621,
                            "src": "4735:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "4701:48:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 2694,
                        "nodeType": "ExpressionStatement",
                        "src": "4701:48:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2695,
                              "name": "methodIdMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2659,
                              "src": "4753:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                "typeString": "mapping(bytes4 => bytes4)"
                              }
                            },
                            "id": 2697,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2696,
                              "name": "SENTINEL_ANY_MOCKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2629,
                              "src": "4767:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4753:33:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2698,
                            "name": "SENTINEL_ANY_MOCKS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2629,
                            "src": "4789:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "4753:54:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 2700,
                        "nodeType": "ExpressionStatement",
                        "src": "4753:54:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 2702,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2687,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4687:2:4"
                  },
                  "returnParameters": {
                    "id": 2688,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4697:0:4"
                  },
                  "scope": 3664,
                  "src": "4676:135:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2735,
                    "nodeType": "Block",
                    "src": "4868:196:4",
                    "statements": [
                      {
                        "assignments": [
                          2708
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2708,
                            "mutability": "mutable",
                            "name": "callHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2735,
                            "src": "4872:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2707,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4872:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2712,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2710,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2704,
                              "src": "4901:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2709,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4891:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4891:15:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4872:34:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2713,
                                "name": "calldataMocks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2639,
                                "src": "4914:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                  "typeString": "mapping(bytes32 => bytes storage ref)"
                                }
                              },
                              "id": 2715,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2714,
                                "name": "callHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2708,
                                "src": "4928:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4914:23:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 2716,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4914:30:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4948:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4914:35:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2734,
                        "nodeType": "IfStatement",
                        "src": "4910:151:4",
                        "trueBody": {
                          "id": 2733,
                          "nodeType": "Block",
                          "src": "4951:110:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2719,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2639,
                                    "src": "4956:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 2721,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2720,
                                    "name": "callHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2708,
                                    "src": "4970:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4956:23:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2722,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2639,
                                    "src": "4982:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 2724,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2723,
                                    "name": "MOCKS_LIST_START",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2618,
                                    "src": "4996:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4982:31:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "4956:57:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 2726,
                              "nodeType": "ExpressionStatement",
                              "src": "4956:57:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2731,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2727,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2639,
                                    "src": "5018:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 2729,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2728,
                                    "name": "MOCKS_LIST_START",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2618,
                                    "src": "5032:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5018:31:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2730,
                                  "name": "call",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2704,
                                  "src": "5052:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "5018:38:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 2732,
                              "nodeType": "ExpressionStatement",
                              "src": "5018:38:4"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 2736,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "trackCalldataMock",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2704,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2736,
                        "src": "4841:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2703,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4841:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4840:19:4"
                  },
                  "returnParameters": {
                    "id": 2706,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4868:0:4"
                  },
                  "scope": 3664,
                  "src": "4814:250:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2762,
                    "nodeType": "Block",
                    "src": "5119:161:4",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 2745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2741,
                              "name": "methodIdMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2659,
                              "src": "5127:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                "typeString": "mapping(bytes4 => bytes4)"
                              }
                            },
                            "id": 2743,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2742,
                              "name": "methodId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2738,
                              "src": "5141:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5127:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 2744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5154:3:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0x0"
                          },
                          "src": "5127:30:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2761,
                        "nodeType": "IfStatement",
                        "src": "5123:154:4",
                        "trueBody": {
                          "id": 2760,
                          "nodeType": "Block",
                          "src": "5159:118:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2752,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2746,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2659,
                                    "src": "5164:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 2748,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2747,
                                    "name": "methodId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2738,
                                    "src": "5178:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5164:23:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2749,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2659,
                                    "src": "5190:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 2751,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2750,
                                    "name": "SENTINEL_ANY_MOCKS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2629,
                                    "src": "5204:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5190:33:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "5164:59:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 2753,
                              "nodeType": "ExpressionStatement",
                              "src": "5164:59:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2754,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2659,
                                    "src": "5228:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 2756,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2755,
                                    "name": "SENTINEL_ANY_MOCKS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2629,
                                    "src": "5242:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5228:33:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 2757,
                                  "name": "methodId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2738,
                                  "src": "5264:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "5228:44:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 2759,
                              "nodeType": "ExpressionStatement",
                              "src": "5228:44:4"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 2763,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "trackMethodIdMock",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2739,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2738,
                        "mutability": "mutable",
                        "name": "methodId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2763,
                        "src": "5094:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2737,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "5094:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5093:17:4"
                  },
                  "returnParameters": {
                    "id": 2740,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5119:0:4"
                  },
                  "scope": 3664,
                  "src": "5067:213:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2777,
                    "nodeType": "Block",
                    "src": "5340:76:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2768,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2677,
                            "src": "5344:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2769,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "5363:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 2770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Return",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5363:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "5344:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 2772,
                        "nodeType": "ExpressionStatement",
                        "src": "5344:34:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2773,
                            "name": "fallbackExpectation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2680,
                            "src": "5382:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2774,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2765,
                            "src": "5404:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "5382:30:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 2776,
                        "nodeType": "ExpressionStatement",
                        "src": "5382:30:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 2778,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_givenAnyReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2765,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2778,
                        "src": "5308:21:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2764,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5308:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5307:23:4"
                  },
                  "returnParameters": {
                    "id": 2767,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5340:0:4"
                  },
                  "scope": 3664,
                  "src": "5283:133:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2463
                  ],
                  "body": {
                    "id": 2788,
                    "nodeType": "Block",
                    "src": "5486:33:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2785,
                              "name": "response",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2780,
                              "src": "5506:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 2784,
                            "name": "_givenAnyReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2778,
                            "src": "5490:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 2786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5490:25:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2787,
                        "nodeType": "ExpressionStatement",
                        "src": "5490:25:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d6fe9778",
                  "id": 2789,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2782,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5468:8:4"
                  },
                  "parameters": {
                    "id": 2781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2780,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2789,
                        "src": "5443:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2779,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5443:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5442:25:4"
                  },
                  "returnParameters": {
                    "id": 2783,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5486:0:4"
                  },
                  "scope": 3664,
                  "src": "5419:100:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2468
                  ],
                  "body": {
                    "id": 2808,
                    "nodeType": "Block",
                    "src": "5583:74:4",
                    "statements": [
                      {
                        "assignments": [
                          2796
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2796,
                            "mutability": "mutable",
                            "name": "flag",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2808,
                            "src": "5587:9:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2795,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5587:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2801,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 2797,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2791,
                            "src": "5599:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5614:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "id": 2800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "5599:16:4",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2798,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5610:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5587:28:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2804,
                                  "name": "flag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2796,
                                  "src": "5647:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2803,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3481,
                                "src": "5635:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 2805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5635:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2802,
                            "name": "_givenAnyReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2778,
                            "src": "5619:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 2806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5619:34:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2807,
                        "nodeType": "ExpressionStatement",
                        "src": "5619:34:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "36ff0ee5",
                  "id": 2809,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2793,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5565:8:4"
                  },
                  "parameters": {
                    "id": 2792,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2791,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2809,
                        "src": "5550:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2790,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5550:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5549:15:4"
                  },
                  "returnParameters": {
                    "id": 2794,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5583:0:4"
                  },
                  "scope": 3664,
                  "src": "5522:135:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2473
                  ],
                  "body": {
                    "id": 2821,
                    "nodeType": "Block",
                    "src": "5721:47:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2817,
                                  "name": "response",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2811,
                                  "src": "5753:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2816,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3481,
                                "src": "5741:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 2818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5741:21:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2815,
                            "name": "_givenAnyReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2778,
                            "src": "5725:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 2819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5725:38:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2820,
                        "nodeType": "ExpressionStatement",
                        "src": "5725:38:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "af21ac78",
                  "id": 2822,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2813,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5703:8:4"
                  },
                  "parameters": {
                    "id": 2812,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2811,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2822,
                        "src": "5688:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2810,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5688:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5687:15:4"
                  },
                  "returnParameters": {
                    "id": 2814,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5721:0:4"
                  },
                  "scope": 3664,
                  "src": "5660:108:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2478
                  ],
                  "body": {
                    "id": 2837,
                    "nodeType": "Block",
                    "src": "5838:52:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2832,
                                      "name": "response",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2824,
                                      "src": "5875:8:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2831,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5870:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 2830,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5870:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5870:14:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2829,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3481,
                                "src": "5858:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 2834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5858:27:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2828,
                            "name": "_givenAnyReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2778,
                            "src": "5842:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 2835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5842:44:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2836,
                        "nodeType": "ExpressionStatement",
                        "src": "5842:44:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "682b4797",
                  "id": 2838,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2826,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5820:8:4"
                  },
                  "parameters": {
                    "id": 2825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2824,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2838,
                        "src": "5802:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2823,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5802:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5801:18:4"
                  },
                  "returnParameters": {
                    "id": 2827,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5838:0:4"
                  },
                  "scope": 3664,
                  "src": "5771:119:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2481
                  ],
                  "body": {
                    "id": 2851,
                    "nodeType": "Block",
                    "src": "5937:72:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2842,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2677,
                            "src": "5941:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2843,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "5960:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 2844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5960:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "5941:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 2846,
                        "nodeType": "ExpressionStatement",
                        "src": "5941:34:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2847,
                            "name": "fallbackRevertMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2682,
                            "src": "5979:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 2848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6003:2:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          },
                          "src": "5979:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 2850,
                        "nodeType": "ExpressionStatement",
                        "src": "5979:26:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "e211b8a5",
                  "id": 2852,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2840,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5919:8:4"
                  },
                  "parameters": {
                    "id": 2839,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5916:2:4"
                  },
                  "returnParameters": {
                    "id": 2841,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5937:0:4"
                  },
                  "scope": 3664,
                  "src": "5893:116:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2486
                  ],
                  "body": {
                    "id": 2867,
                    "nodeType": "Block",
                    "src": "6090:77:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2858,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2677,
                            "src": "6094:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2859,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "6113:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 2860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6113:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "6094:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 2862,
                        "nodeType": "ExpressionStatement",
                        "src": "6094:34:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2863,
                            "name": "fallbackRevertMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2682,
                            "src": "6132:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2864,
                            "name": "message",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2854,
                            "src": "6156:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "6132:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 2866,
                        "nodeType": "ExpressionStatement",
                        "src": "6132:31:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "87abab65",
                  "id": 2868,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2856,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6072:8:4"
                  },
                  "parameters": {
                    "id": 2855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2854,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2868,
                        "src": "6047:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2853,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6047:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6046:25:4"
                  },
                  "returnParameters": {
                    "id": 2857,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6090:0:4"
                  },
                  "scope": 3664,
                  "src": "6012:155:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2489
                  ],
                  "body": {
                    "id": 2877,
                    "nodeType": "Block",
                    "src": "6219:44:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2872,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2677,
                            "src": "6223:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2873,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "6242:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 2874,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "OutOfGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6242:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "6223:36:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 2876,
                        "nodeType": "ExpressionStatement",
                        "src": "6223:36:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "3956dc6b",
                  "id": 2878,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2870,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6201:8:4"
                  },
                  "parameters": {
                    "id": 2869,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6198:2:4"
                  },
                  "returnParameters": {
                    "id": 2871,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6219:0:4"
                  },
                  "scope": 3664,
                  "src": "6170:93:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2902,
                    "nodeType": "Block",
                    "src": "6347:117:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2885,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2643,
                              "src": "6351:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 2887,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2886,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2880,
                              "src": "6369:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6351:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2888,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "6377:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 2889,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Return",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6377:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "6351:41:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 2891,
                        "nodeType": "ExpressionStatement",
                        "src": "6351:41:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2892,
                              "name": "calldataExpectations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2647,
                              "src": "6396:20:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes memory => bytes storage ref)"
                              }
                            },
                            "id": 2894,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2893,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2880,
                              "src": "6417:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6396:26:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2895,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2882,
                            "src": "6425:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "6396:37:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 2897,
                        "nodeType": "ExpressionStatement",
                        "src": "6396:37:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2899,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2880,
                              "src": "6455:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2898,
                            "name": "trackCalldataMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2736,
                            "src": "6437:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 2900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6437:23:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2901,
                        "nodeType": "ExpressionStatement",
                        "src": "6437:23:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 2903,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_givenCalldataReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2883,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2880,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2903,
                        "src": "6296:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2879,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6296:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2882,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2903,
                        "src": "6315:21:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2881,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6315:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6295:42:4"
                  },
                  "returnParameters": {
                    "id": 2884,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6347:0:4"
                  },
                  "scope": 3664,
                  "src": "6266:198:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    2543
                  ],
                  "body": {
                    "id": 2916,
                    "nodeType": "Block",
                    "src": "6561:44:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2912,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2905,
                              "src": "6586:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2913,
                              "name": "response",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2907,
                              "src": "6592:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 2911,
                            "name": "_givenCalldataReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2903,
                            "src": "6565:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 2914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6565:36:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2915,
                        "nodeType": "ExpressionStatement",
                        "src": "6565:36:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "61936594",
                  "id": 2917,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2909,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6542:8:4"
                  },
                  "parameters": {
                    "id": 2908,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2905,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2917,
                        "src": "6496:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2904,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6496:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2907,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2917,
                        "src": "6517:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2906,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6517:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6495:46:4"
                  },
                  "returnParameters": {
                    "id": 2910,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6561:0:4"
                  },
                  "scope": 3664,
                  "src": "6467:138:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2550
                  ],
                  "body": {
                    "id": 2939,
                    "nodeType": "Block",
                    "src": "6695:85:4",
                    "statements": [
                      {
                        "assignments": [
                          2926
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2926,
                            "mutability": "mutable",
                            "name": "flag",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2939,
                            "src": "6699:9:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2925,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6699:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2931,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 2927,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2921,
                            "src": "6711:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6726:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "id": 2930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "6711:16:4",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2928,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6722:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6699:28:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2933,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2919,
                              "src": "6752:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2935,
                                  "name": "flag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2926,
                                  "src": "6770:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2934,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3481,
                                "src": "6758:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 2936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6758:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2932,
                            "name": "_givenCalldataReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2903,
                            "src": "6731:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 2937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6731:45:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2938,
                        "nodeType": "ExpressionStatement",
                        "src": "6731:45:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "5a3855ab",
                  "id": 2940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2923,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6677:8:4"
                  },
                  "parameters": {
                    "id": 2922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2919,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2940,
                        "src": "6641:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2918,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6641:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2921,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2940,
                        "src": "6662:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2920,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6662:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6640:36:4"
                  },
                  "returnParameters": {
                    "id": 2924,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6695:0:4"
                  },
                  "scope": 3664,
                  "src": "6608:172:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2557
                  ],
                  "body": {
                    "id": 2955,
                    "nodeType": "Block",
                    "src": "6870:57:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2949,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2942,
                              "src": "6895:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2951,
                                  "name": "response",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2944,
                                  "src": "6913:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2950,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3481,
                                "src": "6901:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 2952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6901:21:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2948,
                            "name": "_givenCalldataReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2903,
                            "src": "6874:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 2953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6874:49:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2954,
                        "nodeType": "ExpressionStatement",
                        "src": "6874:49:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d73ca0ac",
                  "id": 2956,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2946,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6852:8:4"
                  },
                  "parameters": {
                    "id": 2945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2942,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2956,
                        "src": "6816:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2941,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6816:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2944,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2956,
                        "src": "6837:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2943,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6837:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6815:36:4"
                  },
                  "returnParameters": {
                    "id": 2947,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6870:0:4"
                  },
                  "scope": 3664,
                  "src": "6783:144:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2564
                  ],
                  "body": {
                    "id": 2974,
                    "nodeType": "Block",
                    "src": "7023:63:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2965,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2958,
                              "src": "7048:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2969,
                                      "name": "response",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2960,
                                      "src": "7071:8:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7066:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 2967,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7066:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2970,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7066:14:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2966,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3481,
                                "src": "7054:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 2971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7054:27:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2964,
                            "name": "_givenCalldataReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2903,
                            "src": "7027:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 2972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7027:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2973,
                        "nodeType": "ExpressionStatement",
                        "src": "7027:55:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "b3901f29",
                  "id": 2975,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2962,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7005:8:4"
                  },
                  "parameters": {
                    "id": 2961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2958,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2975,
                        "src": "6966:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2957,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6966:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2960,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2975,
                        "src": "6987:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2959,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6987:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6965:39:4"
                  },
                  "returnParameters": {
                    "id": 2963,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7023:0:4"
                  },
                  "scope": 3664,
                  "src": "6930:156:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3005,
                    "nodeType": "Block",
                    "src": "7167:164:4",
                    "statements": [
                      {
                        "assignments": [
                          2983
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2983,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3005,
                            "src": "7171:13:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 2982,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "7171:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2987,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2985,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2977,
                              "src": "7201:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2984,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3465,
                            "src": "7187:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 2986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7187:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7171:35:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2988,
                              "name": "methodIdMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2663,
                              "src": "7210:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                              }
                            },
                            "id": 2990,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2989,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2983,
                              "src": "7228:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7210:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2991,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "7238:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 2992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Return",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7238:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "7210:43:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 2994,
                        "nodeType": "ExpressionStatement",
                        "src": "7210:43:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2995,
                              "name": "methodIdExpectations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2667,
                              "src": "7257:20:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes4 => bytes storage ref)"
                              }
                            },
                            "id": 2997,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2996,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2983,
                              "src": "7278:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7257:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 2998,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2979,
                            "src": "7288:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "7257:39:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 3000,
                        "nodeType": "ExpressionStatement",
                        "src": "7257:39:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3002,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2983,
                              "src": "7318:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 3001,
                            "name": "trackMethodIdMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2763,
                            "src": "7300:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 3003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7300:25:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3004,
                        "nodeType": "ExpressionStatement",
                        "src": "7300:25:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3006,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_givenMethodReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2977,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3006,
                        "src": "7117:17:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2976,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7117:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2979,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3006,
                        "src": "7136:21:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2978,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7136:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7116:42:4"
                  },
                  "returnParameters": {
                    "id": 2981,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7167:0:4"
                  },
                  "scope": 3664,
                  "src": "7089:242:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    2497
                  ],
                  "body": {
                    "id": 3019,
                    "nodeType": "Block",
                    "src": "7425:42:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3015,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3008,
                              "src": "7448:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3016,
                              "name": "response",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3010,
                              "src": "7454:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3014,
                            "name": "_givenMethodReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3006,
                            "src": "7429:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 3017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7429:34:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3018,
                        "nodeType": "ExpressionStatement",
                        "src": "7429:34:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "c6ee167f",
                  "id": 3020,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3012,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7407:8:4"
                  },
                  "parameters": {
                    "id": 3011,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3008,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3020,
                        "src": "7361:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3007,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7361:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3010,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3020,
                        "src": "7382:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3009,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7382:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7360:46:4"
                  },
                  "returnParameters": {
                    "id": 3013,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7425:0:4"
                  },
                  "scope": 3664,
                  "src": "7334:133:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2504
                  ],
                  "body": {
                    "id": 3042,
                    "nodeType": "Block",
                    "src": "7555:83:4",
                    "statements": [
                      {
                        "assignments": [
                          3029
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3029,
                            "mutability": "mutable",
                            "name": "flag",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3042,
                            "src": "7559:9:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3028,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7559:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3034,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 3030,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3024,
                            "src": "7571:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7586:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "id": 3033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "7571:16:4",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7582:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7559:28:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3036,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3022,
                              "src": "7610:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3038,
                                  "name": "flag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3029,
                                  "src": "7628:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3037,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3481,
                                "src": "7616:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 3039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7616:17:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3035,
                            "name": "_givenMethodReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3006,
                            "src": "7591:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 3040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7591:43:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3041,
                        "nodeType": "ExpressionStatement",
                        "src": "7591:43:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "6f400756",
                  "id": 3043,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3026,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7537:8:4"
                  },
                  "parameters": {
                    "id": 3025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3022,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3043,
                        "src": "7501:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3021,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7501:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3024,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3043,
                        "src": "7522:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3023,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7522:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7500:36:4"
                  },
                  "returnParameters": {
                    "id": 3027,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7555:0:4"
                  },
                  "scope": 3664,
                  "src": "7470:168:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2511
                  ],
                  "body": {
                    "id": 3058,
                    "nodeType": "Block",
                    "src": "7726:55:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3052,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3045,
                              "src": "7749:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3054,
                                  "name": "response",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3047,
                                  "src": "7767:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3053,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3481,
                                "src": "7755:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 3055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7755:21:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3051,
                            "name": "_givenMethodReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3006,
                            "src": "7730:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 3056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7730:47:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3057,
                        "nodeType": "ExpressionStatement",
                        "src": "7730:47:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "f5afa9c1",
                  "id": 3059,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3049,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7708:8:4"
                  },
                  "parameters": {
                    "id": 3048,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3045,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3059,
                        "src": "7672:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3044,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7672:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3047,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3059,
                        "src": "7693:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3046,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7693:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7671:36:4"
                  },
                  "returnParameters": {
                    "id": 3050,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7726:0:4"
                  },
                  "scope": 3664,
                  "src": "7641:140:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2518
                  ],
                  "body": {
                    "id": 3077,
                    "nodeType": "Block",
                    "src": "7875:61:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3068,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3061,
                              "src": "7898:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3072,
                                      "name": "response",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3063,
                                      "src": "7921:8:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7916:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 3070,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7916:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 3073,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7916:14:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3069,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3481,
                                "src": "7904:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 3074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7904:27:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3067,
                            "name": "_givenMethodReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3006,
                            "src": "7879:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 3075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7879:53:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3076,
                        "nodeType": "ExpressionStatement",
                        "src": "7879:53:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "cf11ff5d",
                  "id": 3078,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3065,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7857:8:4"
                  },
                  "parameters": {
                    "id": 3064,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3061,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3078,
                        "src": "7818:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3060,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7818:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3063,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3078,
                        "src": "7839:16:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3062,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7839:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7817:39:4"
                  },
                  "returnParameters": {
                    "id": 3066,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7875:0:4"
                  },
                  "scope": 3664,
                  "src": "7784:152:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2569
                  ],
                  "body": {
                    "id": 3101,
                    "nodeType": "Block",
                    "src": "8007:112:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3084,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2643,
                              "src": "8011:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 3086,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3085,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3080,
                              "src": "8029:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8011:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3087,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "8037:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 3088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8037:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8011:41:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 3090,
                        "nodeType": "ExpressionStatement",
                        "src": "8011:41:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3091,
                              "name": "calldataRevertMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2651,
                              "src": "8056:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                                "typeString": "mapping(bytes memory => string storage ref)"
                              }
                            },
                            "id": 3093,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3092,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3080,
                              "src": "8078:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8056:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 3094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8086:2:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          },
                          "src": "8056:32:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 3096,
                        "nodeType": "ExpressionStatement",
                        "src": "8056:32:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3098,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3080,
                              "src": "8110:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3097,
                            "name": "trackCalldataMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2736,
                            "src": "8092:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 3099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8092:23:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3100,
                        "nodeType": "ExpressionStatement",
                        "src": "8092:23:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "eb861f69",
                  "id": 3102,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3082,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7989:8:4"
                  },
                  "parameters": {
                    "id": 3081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3080,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3102,
                        "src": "7968:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3079,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7968:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7967:21:4"
                  },
                  "returnParameters": {
                    "id": 3083,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8007:0:4"
                  },
                  "scope": 3664,
                  "src": "7939:180:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2523
                  ],
                  "body": {
                    "id": 3125,
                    "nodeType": "Block",
                    "src": "8188:121:4",
                    "statements": [
                      {
                        "assignments": [
                          3109
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3109,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3125,
                            "src": "8192:13:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3108,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "8192:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3113,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3111,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3104,
                              "src": "8222:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3110,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3465,
                            "src": "8208:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 3112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8208:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8192:35:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3114,
                              "name": "methodIdMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2663,
                              "src": "8231:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                              }
                            },
                            "id": 3116,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3115,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3109,
                              "src": "8249:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8231:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3117,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "8259:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 3118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8259:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8231:43:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 3120,
                        "nodeType": "ExpressionStatement",
                        "src": "8231:43:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3122,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3109,
                              "src": "8296:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 3121,
                            "name": "trackMethodIdMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2763,
                            "src": "8278:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 3123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8278:25:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3124,
                        "nodeType": "ExpressionStatement",
                        "src": "8278:25:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "aa788c55",
                  "id": 3126,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3106,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8170:8:4"
                  },
                  "parameters": {
                    "id": 3105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3104,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3126,
                        "src": "8149:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3103,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8149:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8148:21:4"
                  },
                  "returnParameters": {
                    "id": 3107,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8188:0:4"
                  },
                  "scope": 3664,
                  "src": "8122:187:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2576
                  ],
                  "body": {
                    "id": 3151,
                    "nodeType": "Block",
                    "src": "8416:117:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3134,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2643,
                              "src": "8420:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 3136,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3135,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3128,
                              "src": "8438:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8420:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3137,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "8446:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 3138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8446:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8420:41:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 3140,
                        "nodeType": "ExpressionStatement",
                        "src": "8420:41:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3141,
                              "name": "calldataRevertMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2651,
                              "src": "8465:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                                "typeString": "mapping(bytes memory => string storage ref)"
                              }
                            },
                            "id": 3143,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3142,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3128,
                              "src": "8487:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8465:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3144,
                            "name": "message",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3130,
                            "src": "8495:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "8465:37:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 3146,
                        "nodeType": "ExpressionStatement",
                        "src": "8465:37:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3148,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3128,
                              "src": "8524:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3147,
                            "name": "trackCalldataMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2736,
                            "src": "8506:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 3149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8506:23:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3150,
                        "nodeType": "ExpressionStatement",
                        "src": "8506:23:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "9eaeed75",
                  "id": 3152,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3132,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8398:8:4"
                  },
                  "parameters": {
                    "id": 3131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3128,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3152,
                        "src": "8352:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3127,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8352:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3130,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3152,
                        "src": "8373:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3129,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8373:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8351:46:4"
                  },
                  "returnParameters": {
                    "id": 3133,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8416:0:4"
                  },
                  "scope": 3664,
                  "src": "8312:221:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2530
                  ],
                  "body": {
                    "id": 3183,
                    "nodeType": "Block",
                    "src": "8638:165:4",
                    "statements": [
                      {
                        "assignments": [
                          3161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3161,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3183,
                            "src": "8642:13:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3160,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "8642:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3165,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3163,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3154,
                              "src": "8672:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3162,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3465,
                            "src": "8658:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 3164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8658:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8642:35:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3166,
                              "name": "methodIdMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2663,
                              "src": "8681:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                              }
                            },
                            "id": 3168,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3167,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3161,
                              "src": "8699:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8681:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3169,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "8709:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 3170,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8709:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8681:43:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 3172,
                        "nodeType": "ExpressionStatement",
                        "src": "8681:43:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3173,
                              "name": "methodIdRevertMessages",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2671,
                              "src": "8728:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                                "typeString": "mapping(bytes4 => string storage ref)"
                              }
                            },
                            "id": 3175,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3174,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3161,
                              "src": "8751:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8728:30:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3176,
                            "name": "message",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3156,
                            "src": "8761:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "8728:40:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 3178,
                        "nodeType": "ExpressionStatement",
                        "src": "8728:40:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3180,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3161,
                              "src": "8790:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 3179,
                            "name": "trackMethodIdMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2763,
                            "src": "8772:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 3181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8772:25:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3182,
                        "nodeType": "ExpressionStatement",
                        "src": "8772:25:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "9a1dc86b",
                  "id": 3184,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3158,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8620:8:4"
                  },
                  "parameters": {
                    "id": 3157,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3154,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3184,
                        "src": "8574:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3153,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8574:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3156,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3184,
                        "src": "8595:23:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3155,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8595:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8573:46:4"
                  },
                  "returnParameters": {
                    "id": 3159,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8638:0:4"
                  },
                  "scope": 3664,
                  "src": "8536:267:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2581
                  ],
                  "body": {
                    "id": 3201,
                    "nodeType": "Block",
                    "src": "8879:78:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3190,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2643,
                              "src": "8883:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 3192,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3191,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3186,
                              "src": "8901:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8883:23:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3193,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "8909:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 3194,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "OutOfGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8909:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8883:43:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 3196,
                        "nodeType": "ExpressionStatement",
                        "src": "8883:43:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3198,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3186,
                              "src": "8948:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3197,
                            "name": "trackCalldataMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2736,
                            "src": "8930:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 3199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8930:23:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3200,
                        "nodeType": "ExpressionStatement",
                        "src": "8930:23:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "21fed4d6",
                  "id": 3202,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3188,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8861:8:4"
                  },
                  "parameters": {
                    "id": 3187,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3186,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3202,
                        "src": "8840:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3185,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8840:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8839:21:4"
                  },
                  "returnParameters": {
                    "id": 3189,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8879:0:4"
                  },
                  "scope": 3664,
                  "src": "8806:151:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2535
                  ],
                  "body": {
                    "id": 3225,
                    "nodeType": "Block",
                    "src": "9031:122:4",
                    "statements": [
                      {
                        "assignments": [
                          3209
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3209,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3225,
                            "src": "9035:13:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3208,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "9035:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3213,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3211,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3204,
                              "src": "9065:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3210,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3465,
                            "src": "9051:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 3212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9051:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9035:35:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3214,
                              "name": "methodIdMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2663,
                              "src": "9074:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                              }
                            },
                            "id": 3216,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3215,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3209,
                              "src": "9092:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9074:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3217,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "9102:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 3218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "OutOfGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9102:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "9074:45:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 3220,
                        "nodeType": "ExpressionStatement",
                        "src": "9074:45:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3222,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3209,
                              "src": "9141:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 3221,
                            "name": "trackMethodIdMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2763,
                            "src": "9123:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 3223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9123:25:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3224,
                        "nodeType": "ExpressionStatement",
                        "src": "9123:25:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "68ab6f2f",
                  "id": 3226,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3206,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9013:8:4"
                  },
                  "parameters": {
                    "id": 3205,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3204,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3226,
                        "src": "8992:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3203,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8992:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8991:21:4"
                  },
                  "returnParameters": {
                    "id": 3207,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9031:0:4"
                  },
                  "scope": 3664,
                  "src": "8960:193:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2587
                  ],
                  "body": {
                    "id": 3234,
                    "nodeType": "Block",
                    "src": "9216:26:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3232,
                          "name": "invocations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2684,
                          "src": "9227:11:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3231,
                        "id": 3233,
                        "nodeType": "Return",
                        "src": "9220:18:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "0a20119f",
                  "id": 3235,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCount",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3228,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9183:8:4"
                  },
                  "parameters": {
                    "id": 3227,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9180:2:4"
                  },
                  "returnParameters": {
                    "id": 3231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3230,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3235,
                        "src": "9210:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3229,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9210:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9209:6:4"
                  },
                  "scope": 3664,
                  "src": "9156:86:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2595
                  ],
                  "body": {
                    "id": 3259,
                    "nodeType": "Block",
                    "src": "9333:122:4",
                    "statements": [
                      {
                        "assignments": [
                          3244
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3244,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3259,
                            "src": "9337:13:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3243,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "9337:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3248,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3246,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3237,
                              "src": "9367:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3245,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3465,
                            "src": "9353:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 3247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9353:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9337:35:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3249,
                            "name": "methodIdInvocations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2675,
                            "src": "9383:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 3257,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3253,
                                    "name": "resetCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2686,
                                    "src": "9430:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3254,
                                    "name": "method",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3244,
                                    "src": "9442:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3251,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "9413:3:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 3252,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9413:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 3255,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9413:36:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3250,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "9403:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9403:47:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9383:68:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3242,
                        "id": 3258,
                        "nodeType": "Return",
                        "src": "9376:75:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "4937c4f6",
                  "id": 3260,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCountForMethod",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3239,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9300:8:4"
                  },
                  "parameters": {
                    "id": 3238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3237,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3260,
                        "src": "9279:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3236,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9279:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9278:21:4"
                  },
                  "returnParameters": {
                    "id": 3242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3241,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3260,
                        "src": "9327:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3240,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9327:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9326:6:4"
                  },
                  "scope": 3664,
                  "src": "9245:210:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2603
                  ],
                  "body": {
                    "id": 3278,
                    "nodeType": "Block",
                    "src": "9548:81:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3268,
                            "name": "calldataInvocations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2655,
                            "src": "9559:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 3276,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3272,
                                    "name": "resetCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2686,
                                    "src": "9606:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3273,
                                    "name": "call",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3262,
                                    "src": "9618:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3270,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "9589:3:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 3271,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9589:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 3274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9589:34:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3269,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "9579:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9579:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9559:66:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3267,
                        "id": 3277,
                        "nodeType": "Return",
                        "src": "9552:73:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "586984a4",
                  "id": 3279,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCountForCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3264,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9515:8:4"
                  },
                  "parameters": {
                    "id": 3263,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3262,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3279,
                        "src": "9494:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3261,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9494:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9493:21:4"
                  },
                  "returnParameters": {
                    "id": 3267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3266,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3279,
                        "src": "9542:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3265,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9542:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9541:6:4"
                  },
                  "scope": 3664,
                  "src": "9458:171:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2607
                  ],
                  "body": {
                    "id": 3412,
                    "nodeType": "Block",
                    "src": "9667:1285:4",
                    "statements": [
                      {
                        "assignments": [
                          3284
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3284,
                            "mutability": "mutable",
                            "name": "nextMock",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3412,
                            "src": "9706:21:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3283,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9706:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3288,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3285,
                            "name": "calldataMocks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2639,
                            "src": "9730:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 3287,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3286,
                            "name": "MOCKS_LIST_START",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2618,
                            "src": "9744:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9730:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9706:55:4"
                      },
                      {
                        "assignments": [
                          3290
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3290,
                            "mutability": "mutable",
                            "name": "mockHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3412,
                            "src": "9765:16:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3289,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9765:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3294,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3292,
                              "name": "nextMock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3284,
                              "src": "9794:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3291,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "9784:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9784:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9765:38:4"
                      },
                      {
                        "body": {
                          "id": 3335,
                          "nodeType": "Block",
                          "src": "9875:355:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3298,
                                    "name": "calldataMockTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2643,
                                    "src": "9906:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$2615_$",
                                      "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3300,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3299,
                                    "name": "nextMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3284,
                                    "src": "9924:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9906:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3301,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "9936:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Return",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9936:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "9906:45:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_MockType_$2615",
                                  "typeString": "enum MockContract.MockType"
                                }
                              },
                              "id": 3304,
                              "nodeType": "ExpressionStatement",
                              "src": "9906:45:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3305,
                                    "name": "calldataExpectations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2647,
                                    "src": "9956:20:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes memory => bytes storage ref)"
                                    }
                                  },
                                  "id": 3307,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3306,
                                    "name": "nextMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3284,
                                    "src": "9977:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9956:30:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 3308,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9989:5:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "9956:38:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 3310,
                              "nodeType": "ExpressionStatement",
                              "src": "9956:38:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3311,
                                    "name": "calldataRevertMessage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2651,
                                    "src": "9999:21:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                                      "typeString": "mapping(bytes memory => string storage ref)"
                                    }
                                  },
                                  "id": 3313,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3312,
                                    "name": "nextMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3284,
                                    "src": "10021:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9999:31:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 3314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10033:2:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "9999:36:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 3316,
                              "nodeType": "ExpressionStatement",
                              "src": "9999:36:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3317,
                                  "name": "nextMock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3284,
                                  "src": "10070:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3318,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2639,
                                    "src": "10081:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 3320,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3319,
                                    "name": "mockHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3290,
                                    "src": "10095:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10081:23:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "10070:34:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3322,
                              "nodeType": "ExpressionStatement",
                              "src": "10070:34:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3327,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3323,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2639,
                                    "src": "10139:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 3325,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3324,
                                    "name": "mockHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3290,
                                    "src": "10153:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10139:23:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 3326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10165:2:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "10139:28:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 3328,
                              "nodeType": "ExpressionStatement",
                              "src": "10139:28:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3329,
                                  "name": "mockHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3290,
                                  "src": "10195:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3331,
                                      "name": "nextMock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3284,
                                      "src": "10216:8:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 3330,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "10206:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 3332,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10206:19:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "10195:30:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 3334,
                              "nodeType": "ExpressionStatement",
                              "src": "10195:30:4"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3295,
                            "name": "mockHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3290,
                            "src": "9842:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3296,
                            "name": "MOCKS_LIST_END_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2626,
                            "src": "9854:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9842:31:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3336,
                        "nodeType": "WhileStatement",
                        "src": "9836:394:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3337,
                              "name": "calldataMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2639,
                              "src": "10249:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes32 => bytes storage ref)"
                              }
                            },
                            "id": 3339,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3338,
                              "name": "MOCKS_LIST_START",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2618,
                              "src": "10263:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10249:31:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3340,
                            "name": "MOCKS_LIST_END",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2621,
                            "src": "10283:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "10249:48:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 3342,
                        "nodeType": "ExpressionStatement",
                        "src": "10249:48:4"
                      },
                      {
                        "assignments": [
                          3344
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3344,
                            "mutability": "mutable",
                            "name": "nextAnyMock",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3412,
                            "src": "10335:18:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3343,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "10335:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3348,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3345,
                            "name": "methodIdMocks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2659,
                            "src": "10356:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                              "typeString": "mapping(bytes4 => bytes4)"
                            }
                          },
                          "id": 3347,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 3346,
                            "name": "SENTINEL_ANY_MOCKS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2629,
                            "src": "10370:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10356:33:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10335:54:4"
                      },
                      {
                        "body": {
                          "id": 3387,
                          "nodeType": "Block",
                          "src": "10434:316:4",
                          "statements": [
                            {
                              "assignments": [
                                3353
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3353,
                                  "mutability": "mutable",
                                  "name": "currentAnyMock",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3387,
                                  "src": "10439:21:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 3352,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10439:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3355,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 3354,
                                "name": "nextAnyMock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3344,
                                "src": "10463:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10439:35:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3361,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3356,
                                    "name": "methodIdMockTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2663,
                                    "src": "10479:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$2615_$",
                                      "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3358,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3357,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3353,
                                    "src": "10497:14:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10479:33:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3359,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "10515:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Return",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10515:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "10479:51:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_MockType_$2615",
                                  "typeString": "enum MockContract.MockType"
                                }
                              },
                              "id": 3362,
                              "nodeType": "ExpressionStatement",
                              "src": "10479:51:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3363,
                                    "name": "methodIdExpectations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2667,
                                    "src": "10535:20:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes4 => bytes storage ref)"
                                    }
                                  },
                                  "id": 3365,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3364,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3353,
                                    "src": "10556:14:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10535:36:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 3366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10574:5:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "10535:44:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 3368,
                              "nodeType": "ExpressionStatement",
                              "src": "10535:44:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3369,
                                    "name": "methodIdRevertMessages",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2671,
                                    "src": "10584:22:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                                      "typeString": "mapping(bytes4 => string storage ref)"
                                    }
                                  },
                                  "id": 3371,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3370,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3353,
                                    "src": "10607:14:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10584:38:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 3372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10625:2:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "10584:43:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 3374,
                              "nodeType": "ExpressionStatement",
                              "src": "10584:43:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3375,
                                  "name": "nextAnyMock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3344,
                                  "src": "10632:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3376,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2659,
                                    "src": "10646:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 3378,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3377,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3353,
                                    "src": "10660:14:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10646:29:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "10632:43:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 3380,
                              "nodeType": "ExpressionStatement",
                              "src": "10632:43:4"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3381,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2659,
                                    "src": "10710:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 3383,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3382,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3353,
                                    "src": "10724:14:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10710:29:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 3384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10742:3:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                },
                                "src": "10710:35:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 3386,
                              "nodeType": "ExpressionStatement",
                              "src": "10710:35:4"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 3351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3349,
                            "name": "nextAnyMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3344,
                            "src": "10399:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3350,
                            "name": "SENTINEL_ANY_MOCKS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2629,
                            "src": "10414:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "10399:33:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3388,
                        "nodeType": "WhileStatement",
                        "src": "10393:357:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3389,
                              "name": "methodIdMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2659,
                              "src": "10769:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                "typeString": "mapping(bytes4 => bytes4)"
                              }
                            },
                            "id": 3391,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3390,
                              "name": "SENTINEL_ANY_MOCKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2629,
                              "src": "10783:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10769:33:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3392,
                            "name": "SENTINEL_ANY_MOCKS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2629,
                            "src": "10805:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "10769:54:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 3394,
                        "nodeType": "ExpressionStatement",
                        "src": "10769:54:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3395,
                            "name": "fallbackExpectation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2680,
                            "src": "10828:19:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3396,
                            "name": "DEFAULT_FALLBACK_VALUE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2635,
                            "src": "10850:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "10828:44:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 3398,
                        "nodeType": "ExpressionStatement",
                        "src": "10828:44:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3399,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2677,
                            "src": "10876:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3400,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "10895:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 3401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Return",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10895:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "10876:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 3403,
                        "nodeType": "ExpressionStatement",
                        "src": "10876:34:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3404,
                            "name": "invocations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2684,
                            "src": "10914:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10928:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10914:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3407,
                        "nodeType": "ExpressionStatement",
                        "src": "10914:15:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3408,
                            "name": "resetCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2686,
                            "src": "10933:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10947:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "10933:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3411,
                        "nodeType": "ExpressionStatement",
                        "src": "10933:15:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d826f88f",
                  "id": 3413,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reset",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3281,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9649:8:4"
                  },
                  "parameters": {
                    "id": 3280,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9646:2:4"
                  },
                  "returnParameters": {
                    "id": 3282,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9667:0:4"
                  },
                  "scope": 3664,
                  "src": "9632:1320:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3423,
                    "nodeType": "Block",
                    "src": "10984:159:4",
                    "statements": [
                      {
                        "body": {
                          "id": 3421,
                          "nodeType": "Block",
                          "src": "11000:140:4",
                          "statements": [
                            {
                              "assignments": [
                                3418
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3418,
                                  "mutability": "mutable",
                                  "name": "s",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3421,
                                  "src": "11005:6:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 3417,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11005:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3419,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11005:6:4"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "11025:111:4",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11076:55:4",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "gas",
                                                "nodeType": "YulIdentifier",
                                                "src": "11090:3:4"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11090:5:4"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11097:4:4",
                                              "type": "",
                                              "value": "2000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "11086:3:4"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11086:16:4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11104:1:4",
                                          "type": "",
                                          "value": "6"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11107:1:4",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11110:3:4",
                                          "type": "",
                                          "value": "0x0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11115:4:4",
                                          "type": "",
                                          "value": "0xc0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11121:3:4",
                                          "type": "",
                                          "value": "0x0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11126:4:4",
                                          "type": "",
                                          "value": "0x60"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "call",
                                        "nodeType": "YulIdentifier",
                                        "src": "11081:4:4"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11081:50:4"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "s",
                                        "nodeType": "YulIdentifier",
                                        "src": "11076:1:4"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "istanbul",
                              "externalReferences": [
                                {
                                  "declaration": 3418,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "11076:1:4",
                                  "valueSize": 1
                                }
                              ],
                              "id": 3420,
                              "nodeType": "InlineAssembly",
                              "src": "11016:120:4"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10994:4:4",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "id": 3422,
                        "nodeType": "WhileStatement",
                        "src": "10988:152:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3424,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "useAllGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3414,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10973:2:4"
                  },
                  "returnParameters": {
                    "id": 3415,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10984:0:4"
                  },
                  "scope": 3664,
                  "src": "10955:188:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3464,
                    "nodeType": "Block",
                    "src": "11215:111:4",
                    "statements": [
                      {
                        "assignments": [
                          3432
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3432,
                            "mutability": "mutable",
                            "name": "out",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3464,
                            "src": "11219:10:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3431,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "11219:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3433,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11219:10:4"
                      },
                      {
                        "body": {
                          "id": 3460,
                          "nodeType": "Block",
                          "src": "11262:47:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3444,
                                  "name": "out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3432,
                                  "src": "11267:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "|=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 3457,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        },
                                        "id": 3451,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 3447,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3426,
                                            "src": "11281:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 3449,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 3448,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3435,
                                            "src": "11283:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "11281:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30784646",
                                          "id": 3450,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11288:4:4",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_255_by_1",
                                            "typeString": "int_const 255"
                                          },
                                          "value": "0xFF"
                                        },
                                        "src": "11281:11:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "id": 3446,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11274:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes4_$",
                                        "typeString": "type(bytes4)"
                                      },
                                      "typeName": {
                                        "id": 3445,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11274:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 3452,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11274:19:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3455,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 3453,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3435,
                                          "src": "11298:1:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "38",
                                          "id": 3454,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11302:1:4",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_8_by_1",
                                            "typeString": "int_const 8"
                                          },
                                          "value": "8"
                                        },
                                        "src": "11298:5:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3456,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "11297:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11274:30:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "11267:37:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 3459,
                              "nodeType": "ExpressionStatement",
                              "src": "11267:37:4"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3438,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3435,
                            "src": "11250:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 3439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11254:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "11250:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3461,
                        "initializationExpression": {
                          "assignments": [
                            3435
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3435,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 3461,
                              "src": "11238:6:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3434,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "11238:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 3437,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11247:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11238:10:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "11257:3:4",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 3441,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3435,
                              "src": "11257:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3443,
                          "nodeType": "ExpressionStatement",
                          "src": "11257:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "11233:76:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3462,
                          "name": "out",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3432,
                          "src": "11319:3:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 3430,
                        "id": 3463,
                        "nodeType": "Return",
                        "src": "11312:10:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3465,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bytesToBytes4",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3426,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3465,
                        "src": "11169:14:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3425,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11169:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11168:16:4"
                  },
                  "returnParameters": {
                    "id": 3430,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3429,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3465,
                        "src": "11207:6:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3428,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "11207:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11206:8:4"
                  },
                  "scope": 3664,
                  "src": "11146:180:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3480,
                    "nodeType": "Block",
                    "src": "11399:62:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3472,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3470,
                            "src": "11403:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 3475,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11417:2:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                }
                              ],
                              "id": 3474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "11407:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 3473,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "11411:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 3476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11407:13:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "11403:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 3478,
                        "nodeType": "ExpressionStatement",
                        "src": "11403:17:4"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "11433:25:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "b",
                                        "nodeType": "YulIdentifier",
                                        "src": "11446:1:4"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11449:2:4",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11442:3:4"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11442:10:4"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11454:1:4"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11435:6:4"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11435:21:4"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11435:21:4"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 3470,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11446:1:4",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3467,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11454:1:4",
                            "valueSize": 1
                          }
                        ],
                        "id": 3479,
                        "nodeType": "InlineAssembly",
                        "src": "11424:34:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3481,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uintToBytes",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3468,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3467,
                        "mutability": "mutable",
                        "name": "x",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3481,
                        "src": "11350:9:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3466,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11350:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11349:11:4"
                  },
                  "returnParameters": {
                    "id": 3471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3470,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3481,
                        "src": "11383:14:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3469,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11383:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11382:16:4"
                  },
                  "scope": 3664,
                  "src": "11329:132:4",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3527,
                    "nodeType": "Block",
                    "src": "11549:276:4",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 3495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3489,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "11561:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11561:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3493,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "11583:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockContract_$3664",
                                      "typeString": "contract MockContract"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MockContract_$3664",
                                      "typeString": "contract MockContract"
                                    }
                                  ],
                                  "id": 3492,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11575:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3491,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11575:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11575:13:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11561:27:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43616e206f6e6c792062652063616c6c65642066726f6d2074686520636f6e747261637420697473656c66",
                              "id": 3496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11590:45:4",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c2a7706aa95c4ff646dc7931f50c2cd85f9e54da282acbb69564a5e8efec9d9",
                                "typeString": "literal_string \"Can only be called from the contract itself\""
                              },
                              "value": "Can only be called from the contract itself"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c2a7706aa95c4ff646dc7931f50c2cd85f9e54da282acbb69564a5e8efec9d9",
                                "typeString": "literal_string \"Can only be called from the contract itself\""
                              }
                            ],
                            "id": 3488,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11553:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11553:83:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3498,
                        "nodeType": "ExpressionStatement",
                        "src": "11553:83:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3499,
                            "name": "invocations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2684,
                            "src": "11640:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11655:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11640:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3502,
                        "nodeType": "ExpressionStatement",
                        "src": "11640:16:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3503,
                              "name": "methodIdInvocations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2675,
                              "src": "11660:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 3511,
                            "indexExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3507,
                                      "name": "resetCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2686,
                                      "src": "11707:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3508,
                                      "name": "methodId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3483,
                                      "src": "11719:8:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3505,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "11690:3:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 3506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11690:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 3509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11690:38:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 3504,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "11680:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 3510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11680:49:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11660:70:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11734:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11660:75:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3514,
                        "nodeType": "ExpressionStatement",
                        "src": "11660:75:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3515,
                              "name": "calldataInvocations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2655,
                              "src": "11739:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 3523,
                            "indexExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3519,
                                      "name": "resetCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2686,
                                      "src": "11786:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3520,
                                      "name": "originalMsgData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3485,
                                      "src": "11798:15:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3517,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "11769:3:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 3518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11769:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 3521,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11769:45:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 3516,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "11759:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 3522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11759:56:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11739:77:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11820:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11739:82:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3526,
                        "nodeType": "ExpressionStatement",
                        "src": "11739:82:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "58cbc025",
                  "id": 3528,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateInvocationCount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3486,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3483,
                        "mutability": "mutable",
                        "name": "methodId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3528,
                        "src": "11495:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3482,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "11495:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3485,
                        "mutability": "mutable",
                        "name": "originalMsgData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3528,
                        "src": "11512:28:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3484,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11512:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11494:47:4"
                  },
                  "returnParameters": {
                    "id": 3487,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11549:0:4"
                  },
                  "scope": 3664,
                  "src": "11464:361:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3662,
                    "nodeType": "Block",
                    "src": "11857:1243:4",
                    "statements": [
                      {
                        "assignments": [
                          3532
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3532,
                            "mutability": "mutable",
                            "name": "methodId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3662,
                            "src": "11861:15:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 3531,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "11861:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3533,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11861:15:4"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "11889:36:4",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11894:27:4",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11919:1:4",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11906:12:4"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11906:15:4"
                              },
                              "variableNames": [
                                {
                                  "name": "methodId",
                                  "nodeType": "YulIdentifier",
                                  "src": "11894:8:4"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 3532,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11894:8:4",
                            "valueSize": 1
                          }
                        ],
                        "id": 3534,
                        "nodeType": "InlineAssembly",
                        "src": "11880:45:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          },
                          "id": 3541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3535,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2643,
                              "src": "11976:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 3538,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3536,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11994:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11994:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11976:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3539,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "12007:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 3540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12007:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "11976:46:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3550,
                        "nodeType": "IfStatement",
                        "src": "11972:101:4",
                        "trueBody": {
                          "id": 3549,
                          "nodeType": "Block",
                          "src": "12024:49:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3543,
                                      "name": "calldataRevertMessage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2651,
                                      "src": "12036:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                                        "typeString": "mapping(bytes memory => string storage ref)"
                                      }
                                    },
                                    "id": 3546,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3544,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "12058:3:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 3545,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "12058:8:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12036:31:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 3542,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -19,
                                    -19
                                  ],
                                  "referencedDeclaration": -19,
                                  "src": "12029:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 3547,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12029:39:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3548,
                              "nodeType": "ExpressionStatement",
                              "src": "12029:39:4"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_MockType_$2615",
                            "typeString": "enum MockContract.MockType"
                          },
                          "id": 3557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3551,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2643,
                              "src": "12080:17:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$2615_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 3554,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3552,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12098:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12098:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12080:27:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3555,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2615,
                              "src": "12111:8:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 3556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "OutOfGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12111:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$2615",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "12080:48:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3562,
                        "nodeType": "IfStatement",
                        "src": "12076:75:4",
                        "trueBody": {
                          "id": 3561,
                          "nodeType": "Block",
                          "src": "12130:21:4",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3558,
                                  "name": "useAllGas",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3424,
                                  "src": "12135:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 3559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12135:11:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3560,
                              "nodeType": "ExpressionStatement",
                              "src": "12135:11:4"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          3564
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3564,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3662,
                            "src": "12154:19:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3563,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12154:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3569,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3565,
                            "name": "calldataExpectations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2647,
                            "src": "12176:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes memory => bytes storage ref)"
                            }
                          },
                          "id": 3568,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3566,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "12197:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12197:8:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12176:30:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12154:52:4"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3570,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3564,
                              "src": "12251:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12251:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3572,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12268:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12251:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3606,
                        "nodeType": "IfStatement",
                        "src": "12247:262:4",
                        "trueBody": {
                          "id": 3605,
                          "nodeType": "Block",
                          "src": "12271:238:4",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MockType_$2615",
                                  "typeString": "enum MockContract.MockType"
                                },
                                "id": 3579,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3574,
                                    "name": "methodIdMockTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2663,
                                    "src": "12280:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$2615_$",
                                      "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3576,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3575,
                                    "name": "methodId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3532,
                                    "src": "12298:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12280:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3577,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "12311:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Revert",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12311:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "12280:46:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3587,
                              "nodeType": "IfStatement",
                              "src": "12276:104:4",
                              "trueBody": {
                                "id": 3586,
                                "nodeType": "Block",
                                "src": "12328:52:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 3581,
                                            "name": "methodIdRevertMessages",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2671,
                                            "src": "12341:22:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                                              "typeString": "mapping(bytes4 => string storage ref)"
                                            }
                                          },
                                          "id": 3583,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 3582,
                                            "name": "methodId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3532,
                                            "src": "12364:8:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "12341:32:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        ],
                                        "id": 3580,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "12334:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 3584,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12334:40:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3585,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12334:40:4"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MockType_$2615",
                                  "typeString": "enum MockContract.MockType"
                                },
                                "id": 3593,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3588,
                                    "name": "methodIdMockTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2663,
                                    "src": "12388:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$2615_$",
                                      "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3590,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3589,
                                    "name": "methodId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3532,
                                    "src": "12406:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12388:27:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3591,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "12419:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3592,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "OutOfGas",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12419:17:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "12388:48:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3598,
                              "nodeType": "IfStatement",
                              "src": "12384:77:4",
                              "trueBody": {
                                "id": 3597,
                                "nodeType": "Block",
                                "src": "12438:23:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 3594,
                                        "name": "useAllGas",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3424,
                                        "src": "12444:9:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                          "typeString": "function ()"
                                        }
                                      },
                                      "id": 3595,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12444:11:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3596,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12444:11:4"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3599,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3564,
                                  "src": "12465:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3600,
                                    "name": "methodIdExpectations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2667,
                                    "src": "12474:20:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes4 => bytes storage ref)"
                                    }
                                  },
                                  "id": 3602,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3601,
                                    "name": "methodId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3532,
                                    "src": "12495:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12474:30:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "12465:39:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3604,
                              "nodeType": "ExpressionStatement",
                              "src": "12465:39:4"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3607,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3564,
                              "src": "12554:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12554:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12571:1:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12554:18:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3635,
                        "nodeType": "IfStatement",
                        "src": "12550:218:4",
                        "trueBody": {
                          "id": 3634,
                          "nodeType": "Block",
                          "src": "12574:194:4",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MockType_$2615",
                                  "typeString": "enum MockContract.MockType"
                                },
                                "id": 3614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3611,
                                  "name": "fallbackMockType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2677,
                                  "src": "12583:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3612,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "12603:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Revert",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12603:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "12583:35:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3620,
                              "nodeType": "IfStatement",
                              "src": "12579:82:4",
                              "trueBody": {
                                "id": 3619,
                                "nodeType": "Block",
                                "src": "12620:41:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3616,
                                          "name": "fallbackRevertMessage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2682,
                                          "src": "12633:21:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        ],
                                        "id": 3615,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "12626:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 3617,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12626:29:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3618,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12626:29:4"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MockType_$2615",
                                  "typeString": "enum MockContract.MockType"
                                },
                                "id": 3624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3621,
                                  "name": "fallbackMockType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2677,
                                  "src": "12669:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3622,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2615,
                                    "src": "12689:8:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$2615_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 3623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "OutOfGas",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12689:17:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$2615",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "12669:37:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 3629,
                              "nodeType": "IfStatement",
                              "src": "12665:66:4",
                              "trueBody": {
                                "id": 3628,
                                "nodeType": "Block",
                                "src": "12708:23:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 3625,
                                        "name": "useAllGas",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3424,
                                        "src": "12714:9:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                          "typeString": "function ()"
                                        }
                                      },
                                      "id": 3626,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12714:11:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3627,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12714:11:4"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 3630,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3564,
                                  "src": "12735:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 3631,
                                  "name": "fallbackExpectation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2680,
                                  "src": "12744:19:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "12735:28:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3633,
                              "nodeType": "ExpressionStatement",
                              "src": "12735:28:4"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          null,
                          3637
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 3637,
                            "mutability": "mutable",
                            "name": "r",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3662,
                            "src": "12874:14:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3636,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12874:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3653,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "757064617465496e766f636174696f6e436f756e74286279746573342c627974657329",
                                  "id": 3647,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12948:37:4",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_58cbc02545e9fd028c06e31b6a7d0ce4387bbca3b805ff49a3ac81031a7a267c",
                                    "typeString": "literal_string \"updateInvocationCount(bytes4,bytes)\""
                                  },
                                  "value": "updateInvocationCount(bytes4,bytes)"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3648,
                                  "name": "methodId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3532,
                                  "src": "12987:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3649,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "12997:3:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 3650,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12997:8:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_58cbc02545e9fd028c06e31b6a7d0ce4387bbca3b805ff49a3ac81031a7a267c",
                                    "typeString": "literal_string \"updateInvocationCount(bytes4,bytes)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3645,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12924:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12924:23:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 3651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12924:82:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3640,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "12900:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockContract_$3664",
                                      "typeString": "contract MockContract"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MockContract_$3664",
                                      "typeString": "contract MockContract"
                                    }
                                  ],
                                  "id": 3639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12892:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3638,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12892:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12892:13:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 3642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12892:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 3644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "gas"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "hexValue": "313030303030",
                                "id": 3643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12916:6:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000_by_1",
                                  "typeString": "int_const 100000"
                                },
                                "value": "100000"
                              }
                            ],
                            "src": "12892:31:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 3652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12892:115:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12871:136:4"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3655,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3637,
                                  "src": "13018:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 3656,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13018:8:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3657,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13030:1:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13018:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3654,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "13011:6:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13011:21:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3660,
                        "nodeType": "ExpressionStatement",
                        "src": "13011:21:4"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "13048:49:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13064:4:4",
                                        "type": "",
                                        "value": "0x20"
                                      },
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "13070:6:4"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13060:3:4"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13060:17:4"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "13085:6:4"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13079:5:4"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13079:13:4"
                                  }
                                ],
                                "functionName": {
                                  "name": "return",
                                  "nodeType": "YulIdentifier",
                                  "src": "13053:6:4"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13053:40:4"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13053:40:4"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 3564,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13070:6:4",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3564,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13085:6:4",
                            "valueSize": 1
                          }
                        ],
                        "id": 3661,
                        "nodeType": "InlineAssembly",
                        "src": "13039:58:4"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3663,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3529,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11837:2:4"
                  },
                  "returnParameters": {
                    "id": 3530,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11857:0:4"
                  },
                  "scope": 3664,
                  "src": "11828:1272:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3665,
              "src": "3610:9492:4"
            }
          ],
          "src": "0:13103:4"
        },
        "id": 4
      },
      "contracts/RewarderSimple.sol": {
        "ast": {
          "absolutePath": "contracts/RewarderSimple.sol",
          "exportedSymbols": {
            "RewarderSimple": [
              3877
            ]
          },
          "id": 3878,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3666,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "35:23:5"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 3667,
              "nodeType": "ImportDirective",
              "scope": 3878,
              "sourceUnit": 282,
              "src": "62:75:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringMath.sol",
              "id": 3668,
              "nodeType": "ImportDirective",
              "scope": 3878,
              "sourceUnit": 570,
              "src": "139:74:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IRewarder.sol",
              "file": "./interfaces/IRewarder.sol",
              "id": 3669,
              "nodeType": "ImportDirective",
              "scope": 3878,
              "sourceUnit": 4103,
              "src": "217:36:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 3670,
                    "name": "IRewarder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4102,
                    "src": "284:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IRewarder_$4102",
                      "typeString": "contract IRewarder"
                    }
                  },
                  "id": 3671,
                  "nodeType": "InheritanceSpecifier",
                  "src": "284:9:5"
                }
              ],
              "contractDependencies": [
                4102
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 3877,
              "linearizedBaseContracts": [
                3877,
                4102
              ],
              "name": "RewarderSimple",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3674,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3672,
                    "name": "BoringMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 434,
                    "src": "307:10:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringMath_$434",
                      "typeString": "library BoringMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "301:29:5",
                  "typeName": {
                    "id": 3673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "322:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 3677,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3675,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 281,
                    "src": "342:11:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$281",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "336:29:5",
                  "typeName": {
                    "contractScope": null,
                    "id": 3676,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 65,
                    "src": "358:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$65",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 3679,
                  "mutability": "immutable",
                  "name": "rewardMultiplier",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3877,
                  "src": "371:42:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3678,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "371:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3681,
                  "mutability": "immutable",
                  "name": "rewardToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3877,
                  "src": "420:36:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$65",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3680,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 65,
                    "src": "420:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$65",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3683,
                  "mutability": "immutable",
                  "name": "REWARD_TOKEN_DIVISOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3877,
                  "src": "463:46:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3682,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "463:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 3685,
                  "mutability": "immutable",
                  "name": "MASTERCHEF_V2",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3877,
                  "src": "516:39:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3684,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "516:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3747,
                    "nodeType": "Block",
                    "src": "682:536:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3697,
                                "name": "_rewardMultiplier",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3687,
                                "src": "701:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3698,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "721:1:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "701:21:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "526577617264657253696d706c653a3a496e76616c6964206d756c7469706c696572",
                              "id": 3700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "724:36:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ad8a05c3e26c4d61dea867efcdddf9401965d07c833b0cd37d5d275097cf7d8d",
                                "typeString": "literal_string \"RewarderSimple::Invalid multiplier\""
                              },
                              "value": "RewarderSimple::Invalid multiplier"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ad8a05c3e26c4d61dea867efcdddf9401965d07c833b0cd37d5d275097cf7d8d",
                                "typeString": "literal_string \"RewarderSimple::Invalid multiplier\""
                              }
                            ],
                            "id": 3696,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "693:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "693:68:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3702,
                        "nodeType": "ExpressionStatement",
                        "src": "693:68:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3704,
                                "name": "_rewardDecimals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3691,
                                "src": "780:15:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3737",
                                "id": 3705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "799:2:5",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_77_by_1",
                                  "typeString": "int_const 77"
                                },
                                "value": "77"
                              },
                              "src": "780:21:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "526577617264657253696d706c653a3a496e76616c696420646563696d616c73",
                              "id": 3707,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "803:34:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_161d116c76e9abfbdc846268d5a70f7039dd83783079a86d6a6a012ba1bf952b",
                                "typeString": "literal_string \"RewarderSimple::Invalid decimals\""
                              },
                              "value": "RewarderSimple::Invalid decimals"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_161d116c76e9abfbdc846268d5a70f7039dd83783079a86d6a6a012ba1bf952b",
                                "typeString": "literal_string \"RewarderSimple::Invalid decimals\""
                              }
                            ],
                            "id": 3703,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "772:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "772:66:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3709,
                        "nodeType": "ExpressionStatement",
                        "src": "772:66:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3711,
                                  "name": "_rewardToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3689,
                                  "src": "871:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3714,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "895:1:5",
                                      "subdenomination": null,
                                      "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": 3713,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "887:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3712,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "887:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 3715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "887:10:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "871:26:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3717,
                                  "name": "_MASTERCHEF_V2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3693,
                                  "src": "914:14:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3720,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "940:1:5",
                                      "subdenomination": null,
                                      "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": 3719,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "932:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3718,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "932:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 3721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "932:10:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "914:28:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "871:71:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "526577617264657253696d706c653a3a43616e6e6f7420636f6e7374727563742077697468207a65726f2061646472657373",
                              "id": 3724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "957:52:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44fa1dae170d52b8edd6711638e1c30e7450f883839b3fe0dbdf2cedb977cb48",
                                "typeString": "literal_string \"RewarderSimple::Cannot construct with zero address\""
                              },
                              "value": "RewarderSimple::Cannot construct with zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44fa1dae170d52b8edd6711638e1c30e7450f883839b3fe0dbdf2cedb977cb48",
                                "typeString": "literal_string \"RewarderSimple::Cannot construct with zero address\""
                              }
                            ],
                            "id": 3710,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "849:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "849:171:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3726,
                        "nodeType": "ExpressionStatement",
                        "src": "849:171:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3727,
                            "name": "rewardMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3679,
                            "src": "1033:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3728,
                            "name": "_rewardMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3687,
                            "src": "1052:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1033:36:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3730,
                        "nodeType": "ExpressionStatement",
                        "src": "1033:36:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3731,
                            "name": "rewardToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3681,
                            "src": "1080:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3733,
                                "name": "_rewardToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3689,
                                "src": "1101:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3732,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65,
                              "src": "1094:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$65_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 3734,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1094:20:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "1080:34:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 3736,
                        "nodeType": "ExpressionStatement",
                        "src": "1080:34:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3737,
                            "name": "REWARD_TOKEN_DIVISOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3683,
                            "src": "1125:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3740,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "hexValue": "3130",
                              "id": 3738,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1148:2:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3739,
                              "name": "_rewardDecimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3691,
                              "src": "1154:15:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1148:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1125:44:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3742,
                        "nodeType": "ExpressionStatement",
                        "src": "1125:44:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3743,
                            "name": "MASTERCHEF_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3685,
                            "src": "1180:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3744,
                            "name": "_MASTERCHEF_V2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3693,
                            "src": "1196:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1180:30:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3746,
                        "nodeType": "ExpressionStatement",
                        "src": "1180:30:5"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3748,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3694,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3687,
                        "mutability": "mutable",
                        "name": "_rewardMultiplier",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3748,
                        "src": "577:25:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3686,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "577:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3689,
                        "mutability": "mutable",
                        "name": "_rewardToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3748,
                        "src": "604:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3688,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "604:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3691,
                        "mutability": "mutable",
                        "name": "_rewardDecimals",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3748,
                        "src": "626:23:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3690,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "626:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3693,
                        "mutability": "mutable",
                        "name": "_MASTERCHEF_V2",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3748,
                        "src": "651:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3692,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "651:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "576:98:5"
                  },
                  "returnParameters": {
                    "id": 3695,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "682:0:5"
                  },
                  "scope": 3877,
                  "src": "564:654:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4086
                  ],
                  "body": {
                    "id": 3803,
                    "nodeType": "Block",
                    "src": "1332:350:5",
                    "statements": [
                      {
                        "assignments": [
                          3765
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3765,
                            "mutability": "mutable",
                            "name": "pendingReward",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3803,
                            "src": "1343:21:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3764,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1343:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3772,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3768,
                                "name": "rewardMultiplier",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3679,
                                "src": "1384:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3766,
                                "name": "rewardAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3756,
                                "src": "1367:12:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 355,
                              "src": "1367:16:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1367:34:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3770,
                            "name": "REWARD_TOKEN_DIVISOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3683,
                            "src": "1404:20:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1367:57:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1343:81:5"
                      },
                      {
                        "assignments": [
                          3774
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3774,
                            "mutability": "mutable",
                            "name": "rewardBal",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3803,
                            "src": "1435:17:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3773,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1435:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3782,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3779,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1485:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_RewarderSimple_$3877",
                                    "typeString": "contract RewarderSimple"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_RewarderSimple_$3877",
                                    "typeString": "contract RewarderSimple"
                                  }
                                ],
                                "id": 3778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1477:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3777,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1477:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3780,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1477:13:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3775,
                              "name": "rewardToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3681,
                              "src": "1455:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$65",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 3776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13,
                            "src": "1455:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 3781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1455:36:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1435:56:5"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3783,
                            "name": "pendingReward",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3765,
                            "src": "1506:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3784,
                            "name": "rewardBal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3774,
                            "src": "1522:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1506:25:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3801,
                          "nodeType": "Block",
                          "src": "1605:70:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3797,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3754,
                                    "src": "1645:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3798,
                                    "name": "pendingReward",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3765,
                                    "src": "1649:13:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3794,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3681,
                                    "src": "1620:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$65",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 3796,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 231,
                                  "src": "1620:24:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 3799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1620:43:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3800,
                              "nodeType": "ExpressionStatement",
                              "src": "1620:43:5"
                            }
                          ]
                        },
                        "id": 3802,
                        "nodeType": "IfStatement",
                        "src": "1502:173:5",
                        "trueBody": {
                          "id": 3793,
                          "nodeType": "Block",
                          "src": "1533:66:5",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3789,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3754,
                                    "src": "1573:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3790,
                                    "name": "rewardBal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3774,
                                    "src": "1577:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3786,
                                    "name": "rewardToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3681,
                                    "src": "1548:11:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$65",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 3788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 231,
                                  "src": "1548:24:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$65_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$65_$",
                                    "typeString": "function (contract IERC20,address,uint256)"
                                  }
                                },
                                "id": 3791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1548:39:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3792,
                              "nodeType": "ExpressionStatement",
                              "src": "1548:39:5"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "44af0fa7",
                  "id": 3804,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 3761,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 3760,
                        "name": "onlyMCV2",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3876,
                        "src": "1305:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1305:8:5"
                    }
                  ],
                  "name": "onReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3762,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1314:8:5"
                  },
                  "parameters": {
                    "id": 3759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3750,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3804,
                        "src": "1244:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3749,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1244:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3752,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3804,
                        "src": "1253:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3751,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1253:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3754,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3804,
                        "src": "1262:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3753,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1262:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3756,
                        "mutability": "mutable",
                        "name": "rewardAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3804,
                        "src": "1274:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3755,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1274:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3758,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3804,
                        "src": "1296:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3757,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1296:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1243:61:5"
                  },
                  "returnParameters": {
                    "id": 3763,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1332:0:5"
                  },
                  "scope": 3877,
                  "src": "1226:456:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    4101
                  ],
                  "body": {
                    "id": 3863,
                    "nodeType": "Block",
                    "src": "1847:307:5",
                    "statements": [
                      {
                        "assignments": [
                          3823
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3823,
                            "mutability": "mutable",
                            "name": "_rewardTokens",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3863,
                            "src": "1858:29:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_memory_ptr",
                              "typeString": "contract IERC20[]"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 3821,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 65,
                                "src": "1858:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$65",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 3822,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1858:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3829,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1903:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 3826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1890:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$65_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (contract IERC20[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "contractScope": null,
                                "id": 3824,
                                "name": "IERC20",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 65,
                                "src": "1894:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$65",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 3825,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1894:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage_ptr",
                                "typeString": "contract IERC20[]"
                              }
                            }
                          },
                          "id": 3828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1890:15:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_memory_ptr",
                            "typeString": "contract IERC20[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1858:47:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3830,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3823,
                              "src": "1916:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            "id": 3832,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1930:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1916:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3833,
                                "name": "rewardToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3681,
                                "src": "1936:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$65",
                                  "typeString": "contract IERC20"
                                }
                              }
                            ],
                            "id": 3834,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1935:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "1916:32:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$65",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 3836,
                        "nodeType": "ExpressionStatement",
                        "src": "1916:32:5"
                      },
                      {
                        "assignments": [
                          3841
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3841,
                            "mutability": "mutable",
                            "name": "_rewardAmounts",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3863,
                            "src": "1959:31:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 3839,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1959:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3840,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1959:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3847,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2007:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 3844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1993:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 3842,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1997:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3843,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "1997:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 3846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1993:16:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1959:50:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3848,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3841,
                              "src": "2020:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3850,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2035:1:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2020:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3853,
                                  "name": "rewardMultiplier",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3679,
                                  "src": "2057:16:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3851,
                                  "name": "rewardAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3810,
                                  "src": "2040:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3852,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 355,
                                "src": "2040:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2040:34:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3855,
                              "name": "REWARD_TOKEN_DIVISOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3683,
                              "src": "2077:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2040:57:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2020:77:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3858,
                        "nodeType": "ExpressionStatement",
                        "src": "2020:77:5"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3859,
                              "name": "_rewardTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3823,
                              "src": "2116:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_memory_ptr",
                                "typeString": "contract IERC20[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3860,
                              "name": "_rewardAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3841,
                              "src": "2131:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 3861,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2115:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$65_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(contract IERC20[] memory,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 3819,
                        "id": 3862,
                        "nodeType": "Return",
                        "src": "2108:38:5"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 3864,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3812,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1753:8:5"
                  },
                  "parameters": {
                    "id": 3811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3806,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3864,
                        "src": "1713:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3805,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1713:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3808,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3864,
                        "src": "1722:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3807,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1722:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3810,
                        "mutability": "mutable",
                        "name": "rewardAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3864,
                        "src": "1731:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3809,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1731:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1712:40:5"
                  },
                  "returnParameters": {
                    "id": 3819,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3815,
                        "mutability": "mutable",
                        "name": "rewardTokens",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3864,
                        "src": "1785:28:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 3813,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 65,
                            "src": "1785:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 3814,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1785:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3818,
                        "mutability": "mutable",
                        "name": "rewardAmounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3864,
                        "src": "1815:30:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3816,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1815:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3817,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1815:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1784:62:5"
                  },
                  "scope": 3877,
                  "src": "1690:464:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3875,
                    "nodeType": "Block",
                    "src": "2180:141:5",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3867,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2213:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3868,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2213:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3869,
                                "name": "MASTERCHEF_V2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3685,
                                "src": "2227:13:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2213:27:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f6e6c79204d4356322063616e2063616c6c20746869732066756e6374696f6e2e",
                              "id": 3871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2255:35:5",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              },
                              "value": "Only MCV2 can call this function."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3119d70f54e65f7fc05dc3fff78f1ae1d0c82eaf50b477c40260718556fca1cd",
                                "typeString": "literal_string \"Only MCV2 can call this function.\""
                              }
                            ],
                            "id": 3866,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2191:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2191:110:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3873,
                        "nodeType": "ExpressionStatement",
                        "src": "2191:110:5"
                      },
                      {
                        "id": 3874,
                        "nodeType": "PlaceholderStatement",
                        "src": "2312:1:5"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3876,
                  "name": "onlyMCV2",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3865,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2180:0:5"
                  },
                  "src": "2162:159:5",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3878,
              "src": "257:2069:5"
            }
          ],
          "src": "35:2291:5"
        },
        "id": 5
      },
      "contracts/interfaces/IERC20.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              3943
            ]
          },
          "id": 3944,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3879,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:6"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 3943,
              "linearizedBaseContracts": [
                3943
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "18160ddd",
                  "id": 3884,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3880,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "104:2:6"
                  },
                  "returnParameters": {
                    "id": 3883,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3882,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3884,
                        "src": "130:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3881,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "130:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "129:9:6"
                  },
                  "scope": 3943,
                  "src": "84:55:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "70a08231",
                  "id": 3891,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3887,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3886,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3891,
                        "src": "164:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3885,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "164:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "163:17:6"
                  },
                  "returnParameters": {
                    "id": 3890,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3889,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3891,
                        "src": "204:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3888,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "204:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "203:9:6"
                  },
                  "scope": 3943,
                  "src": "145:68:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "dd62ed3e",
                  "id": 3900,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3896,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3893,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3900,
                        "src": "238:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3892,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "238:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3895,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3900,
                        "src": "253:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3894,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "253:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "237:32:6"
                  },
                  "returnParameters": {
                    "id": 3899,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3898,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3900,
                        "src": "293:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3897,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "293:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "292:9:6"
                  },
                  "scope": 3943,
                  "src": "219:83:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 3909,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3902,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3909,
                        "src": "325:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3901,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "325:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3904,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3909,
                        "src": "342:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3903,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "342:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "324:33:6"
                  },
                  "returnParameters": {
                    "id": 3908,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3907,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3909,
                        "src": "376:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3906,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "376:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "375:6:6"
                  },
                  "scope": 3943,
                  "src": "308:74:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3917,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3911,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3917,
                        "src": "403:20:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3910,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "403:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3913,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3917,
                        "src": "425:18:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3912,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "425:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3915,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3917,
                        "src": "445:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "445:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "402:57:6"
                  },
                  "src": "388:72:6"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3925,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3924,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3919,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3925,
                        "src": "481:21:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3918,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "481:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3921,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3925,
                        "src": "504:23:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3920,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "504:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3923,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3925,
                        "src": "529:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3922,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "529:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "480:63:6"
                  },
                  "src": "466:78:6"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d505accf",
                  "id": 3942,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3940,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3927,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3942,
                        "src": "585:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3926,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "585:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3929,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3942,
                        "src": "600:15:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3928,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "600:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3931,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3942,
                        "src": "617:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3930,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3933,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3942,
                        "src": "632:16:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3932,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "632:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3935,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3942,
                        "src": "650:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3934,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "650:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3937,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3942,
                        "src": "659:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3936,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3939,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3942,
                        "src": "670:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3938,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "584:96:6"
                  },
                  "returnParameters": {
                    "id": 3941,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "689:0:6"
                  },
                  "scope": 3943,
                  "src": "569:121:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3944,
              "src": "60:633:6"
            }
          ],
          "src": "33:662:6"
        },
        "id": 6
      },
      "contracts/interfaces/IMiniChefV2.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IMiniChefV2.sol",
          "exportedSymbols": {
            "IMiniChefV2": [
              4067
            ]
          },
          "id": 4068,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3945,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "35:23:7"
            },
            {
              "id": 3946,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "60:33:7"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 4067,
              "linearizedBaseContracts": [
                4067
              ],
              "name": "IMiniChefV2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "IMiniChefV2.UserInfo",
                  "id": 3951,
                  "members": [
                    {
                      "constant": false,
                      "id": 3948,
                      "mutability": "mutable",
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3951,
                      "src": "153:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3947,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "153:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3950,
                      "mutability": "mutable",
                      "name": "rewardDebt",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3951,
                      "src": "178:18:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3949,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "178:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "UserInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4067,
                  "src": "126:78:7",
                  "visibility": "public"
                },
                {
                  "canonicalName": "IMiniChefV2.PoolInfo",
                  "id": 3958,
                  "members": [
                    {
                      "constant": false,
                      "id": 3953,
                      "mutability": "mutable",
                      "name": "accRewardPerShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3958,
                      "src": "239:25:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 3952,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "239:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3955,
                      "mutability": "mutable",
                      "name": "lastRewardTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3958,
                      "src": "275:21:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3954,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "275:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3957,
                      "mutability": "mutable",
                      "name": "allocPoint",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3958,
                      "src": "307:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 3956,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "307:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "name": "PoolInfo",
                  "nodeType": "StructDefinition",
                  "scope": 4067,
                  "src": "212:120:7",
                  "visibility": "public"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "081e3eda",
                  "id": 3963,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3959,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "359:2:7"
                  },
                  "returnParameters": {
                    "id": 3962,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3961,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3963,
                        "src": "385:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3960,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "385:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "384:9:7"
                  },
                  "scope": 4067,
                  "src": "340:54:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "51eb05a6",
                  "id": 3970,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updatePool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3965,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3970,
                        "src": "420:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "420:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "419:13:7"
                  },
                  "returnParameters": {
                    "id": 3969,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3968,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3970,
                        "src": "451:27:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PoolInfo_$3958_memory_ptr",
                          "typeString": "struct IMiniChefV2.PoolInfo"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 3967,
                          "name": "IMiniChefV2.PoolInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3958,
                          "src": "451:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PoolInfo_$3958_storage_ptr",
                            "typeString": "struct IMiniChefV2.PoolInfo"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "450:29:7"
                  },
                  "scope": 4067,
                  "src": "400:80:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "93f1a40b",
                  "id": 3981,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "userInfo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3972,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3981,
                        "src": "504:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3971,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "504:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3974,
                        "mutability": "mutable",
                        "name": "_user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3981,
                        "src": "518:13:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "518:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "503:29:7"
                  },
                  "returnParameters": {
                    "id": 3980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3977,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3981,
                        "src": "556:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3976,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "556:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3979,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3981,
                        "src": "565:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3978,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "565:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "555:18:7"
                  },
                  "scope": 4067,
                  "src": "486:88:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "8dbdbe6d",
                  "id": 3990,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3988,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3983,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3990,
                        "src": "597:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3982,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "597:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3985,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3990,
                        "src": "610:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3984,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "610:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3987,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3990,
                        "src": "626:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3986,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "626:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "596:41:7"
                  },
                  "returnParameters": {
                    "id": 3989,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "646:0:7"
                  },
                  "scope": 4067,
                  "src": "580:67:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "0ad58d2f",
                  "id": 3999,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3997,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3992,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3999,
                        "src": "671:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3991,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "671:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3994,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3999,
                        "src": "684:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3993,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "684:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3996,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3999,
                        "src": "700:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3995,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "700:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "670:41:7"
                  },
                  "returnParameters": {
                    "id": 3998,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "720:0:7"
                  },
                  "scope": 4067,
                  "src": "653:68:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "18fccc76",
                  "id": 4006,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "harvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4001,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4006,
                        "src": "744:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "744:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4003,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4006,
                        "src": "757:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4002,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "757:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "743:25:7"
                  },
                  "returnParameters": {
                    "id": 4005,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "777:0:7"
                  },
                  "scope": 4067,
                  "src": "727:51:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d1abb907",
                  "id": 4015,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawAndHarvest",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4013,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4008,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4015,
                        "src": "812:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4007,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "812:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4010,
                        "mutability": "mutable",
                        "name": "amount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4015,
                        "src": "825:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4009,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "825:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4012,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4015,
                        "src": "841:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4011,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "841:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "811:41:7"
                  },
                  "returnParameters": {
                    "id": 4014,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "861:0:7"
                  },
                  "scope": 4067,
                  "src": "784:78:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "2f940c70",
                  "id": 4022,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "emergencyWithdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4020,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4017,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4022,
                        "src": "895:11:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4016,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "895:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4019,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4022,
                        "src": "908:10:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4018,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "908:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "894:25:7"
                  },
                  "returnParameters": {
                    "id": 4021,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "928:0:7"
                  },
                  "scope": 4067,
                  "src": "868:61:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "f6d676be",
                  "id": 4025,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "disableMigrator",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4023,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "961:2:7"
                  },
                  "returnParameters": {
                    "id": 4024,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "972:0:7"
                  },
                  "scope": 4067,
                  "src": "937:36:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "454b0608",
                  "id": 4030,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4027,
                        "mutability": "mutable",
                        "name": "_pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4030,
                        "src": "996:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4026,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "996:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "995:14:7"
                  },
                  "returnParameters": {
                    "id": 4029,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1018:0:7"
                  },
                  "scope": 4067,
                  "src": "979:40:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "1bbe9d8c",
                  "id": 4035,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addFunder",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4033,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4032,
                        "mutability": "mutable",
                        "name": "_funder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4035,
                        "src": "1046:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4031,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1046:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1045:17:7"
                  },
                  "returnParameters": {
                    "id": 4034,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1071:0:7"
                  },
                  "scope": 4067,
                  "src": "1027:45:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "dcd18dd4",
                  "id": 4040,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeFunder",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4037,
                        "mutability": "mutable",
                        "name": "_funder",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4040,
                        "src": "1100:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4036,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1100:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1099:17:7"
                  },
                  "returnParameters": {
                    "id": 4039,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1125:0:7"
                  },
                  "scope": 4067,
                  "src": "1078:48:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "28662551",
                  "id": 4047,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fundRewards",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4045,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4042,
                        "mutability": "mutable",
                        "name": "funding",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4047,
                        "src": "1153:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4041,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1153:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4044,
                        "mutability": "mutable",
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4047,
                        "src": "1170:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4043,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1170:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1152:35:7"
                  },
                  "returnParameters": {
                    "id": 4046,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1196:0:7"
                  },
                  "scope": 4067,
                  "src": "1132:65:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "4b87e90f",
                  "id": 4052,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "resetRewardsDuration",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4050,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4049,
                        "mutability": "mutable",
                        "name": "duration",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4052,
                        "src": "1233:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4048,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1233:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1232:18:7"
                  },
                  "returnParameters": {
                    "id": 4051,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1259:0:7"
                  },
                  "scope": 4067,
                  "src": "1203:57:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "19610b2b",
                  "id": 4059,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "extendRewardsViaFunding",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4057,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4054,
                        "mutability": "mutable",
                        "name": "funding",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4059,
                        "src": "1299:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4053,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1299:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4056,
                        "mutability": "mutable",
                        "name": "minExtension",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4059,
                        "src": "1316:20:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4055,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1316:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1298:39:7"
                  },
                  "returnParameters": {
                    "id": 4058,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1346:0:7"
                  },
                  "scope": 4067,
                  "src": "1266:81:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "933f084f",
                  "id": 4066,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "extendRewardsViaDuration",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4064,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4061,
                        "mutability": "mutable",
                        "name": "extension",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4066,
                        "src": "1387:17:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4060,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1387:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4063,
                        "mutability": "mutable",
                        "name": "maxFunding",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4066,
                        "src": "1406:18:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4062,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1406:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1386:39:7"
                  },
                  "returnParameters": {
                    "id": 4065,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1434:0:7"
                  },
                  "scope": 4067,
                  "src": "1353:82:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4068,
              "src": "97:1341:7"
            }
          ],
          "src": "35:1405:7"
        },
        "id": 7
      },
      "contracts/interfaces/IRewarder.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IRewarder.sol",
          "exportedSymbols": {
            "IRewarder": [
              4102
            ]
          },
          "id": 4103,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4069,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "35:23:8"
            },
            {
              "absolutePath": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "file": "@boringcrypto/boring-solidity/contracts/libraries/BoringERC20.sol",
              "id": 4070,
              "nodeType": "ImportDirective",
              "scope": 4103,
              "sourceUnit": 282,
              "src": "60:75:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 4102,
              "linearizedBaseContracts": [
                4102
              ],
              "name": "IRewarder",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4073,
                  "libraryName": {
                    "contractScope": null,
                    "id": 4071,
                    "name": "BoringERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 281,
                    "src": "172:11:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BoringERC20_$281",
                      "typeString": "library BoringERC20"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "166:29:8",
                  "typeName": {
                    "contractScope": null,
                    "id": 4072,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 65,
                    "src": "188:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$65",
                      "typeString": "contract IERC20"
                    }
                  }
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "44af0fa7",
                  "id": 4086,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onReward",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4075,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4086,
                        "src": "219:11:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "219:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4077,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4086,
                        "src": "232:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4076,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "232:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4079,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4086,
                        "src": "246:17:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4078,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "246:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4081,
                        "mutability": "mutable",
                        "name": "rewardAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4086,
                        "src": "265:20:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4080,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "265:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4083,
                        "mutability": "mutable",
                        "name": "newLpAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4086,
                        "src": "287:19:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "287:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "218:89:8"
                  },
                  "returnParameters": {
                    "id": 4085,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "316:0:8"
                  },
                  "scope": 4102,
                  "src": "201:116:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d63b3c49",
                  "id": 4101,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pendingTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4088,
                        "mutability": "mutable",
                        "name": "pid",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4101,
                        "src": "346:11:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4087,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "346:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4090,
                        "mutability": "mutable",
                        "name": "user",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4101,
                        "src": "359:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4089,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "359:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4092,
                        "mutability": "mutable",
                        "name": "rewardAmount",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4101,
                        "src": "373:20:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4091,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "373:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "345:49:8"
                  },
                  "returnParameters": {
                    "id": 4100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4096,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4101,
                        "src": "418:15:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_memory_ptr",
                          "typeString": "contract IERC20[]"
                        },
                        "typeName": {
                          "baseType": {
                            "contractScope": null,
                            "id": 4094,
                            "name": "IERC20",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 65,
                            "src": "418:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$65",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4095,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "418:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_contract$_IERC20_$65_$dyn_storage_ptr",
                            "typeString": "contract IERC20[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4099,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4101,
                        "src": "435:16:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4097,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "435:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4098,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "435:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "417:35:8"
                  },
                  "scope": 4102,
                  "src": "323:130:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4103,
              "src": "139:317:8"
            }
          ],
          "src": "35:423:8"
        },
        "id": 8
      },
      "contracts/libraries/SignedSafeMath.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/SignedSafeMath.sol",
          "exportedSymbols": {
            "SignedSafeMath": [
              4300
            ]
          },
          "id": 4301,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4104,
              "literals": [
                "solidity",
                "0.6",
                ".12"
              ],
              "nodeType": "PragmaDirective",
              "src": "35:23:9"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 4300,
              "linearizedBaseContracts": [
                4300
              ],
              "name": "SignedSafeMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 4110,
                  "mutability": "constant",
                  "name": "_INT256_MIN",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4300,
                  "src": "92:45:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 4105,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "92:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const -578...(70 digits omitted)...9968"
                    },
                    "id": 4109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4107,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "130:2:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 4106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "131:1:9",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_minus_2_by_1",
                        "typeString": "int_const -2"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "323535",
                      "id": 4108,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "134:3:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "130:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_minus_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const -578...(70 digits omitted)...9968"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4158,
                    "nodeType": "Block",
                    "src": "459:504:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 4122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4120,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4113,
                            "src": "695:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "700:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "695:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4126,
                        "nodeType": "IfStatement",
                        "src": "691:47:9",
                        "trueBody": {
                          "id": 4125,
                          "nodeType": "Block",
                          "src": "703:35:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "725:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 4119,
                              "id": 4124,
                              "nodeType": "Return",
                              "src": "718:8:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4137,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "758:30:9",
                              "subExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4135,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4131,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4128,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4113,
                                        "src": "760:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4130,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "765:2:9",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 4129,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "766:1:9",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "src": "760:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4134,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4132,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4115,
                                        "src": "771:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4133,
                                        "name": "_INT256_MIN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4110,
                                        "src": "776:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "771:16:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "760:27:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4136,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "759:29:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 4138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "790:41:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              },
                              "value": "SignedSafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 4127,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "750:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "750:82:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4140,
                        "nodeType": "ExpressionStatement",
                        "src": "750:82:9"
                      },
                      {
                        "assignments": [
                          4142
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4142,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4158,
                            "src": "845:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 4141,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "845:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4146,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 4145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4143,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4113,
                            "src": "856:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4144,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4115,
                            "src": "860:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "856:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "845:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 4152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 4150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4148,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4142,
                                  "src": "880:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4149,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4113,
                                  "src": "884:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "880:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 4151,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4115,
                                "src": "889:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "880:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77",
                              "id": 4153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "892:41:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              },
                              "value": "SignedSafeMath: multiplication overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a608fbdf6cc4ee9c43b141f63e234f4edb26cfb78aba3140cfd865641cb2c954",
                                "typeString": "literal_string \"SignedSafeMath: multiplication overflow\""
                              }
                            ],
                            "id": 4147,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "872:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "872:62:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4155,
                        "nodeType": "ExpressionStatement",
                        "src": "872:62:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4156,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4142,
                          "src": "954:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4119,
                        "id": 4157,
                        "nodeType": "Return",
                        "src": "947:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4111,
                    "nodeType": "StructuredDocumentation",
                    "src": "146:243:9",
                    "text": " @dev Returns the multiplication of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                  },
                  "id": 4159,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4116,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4113,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4159,
                        "src": "408:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4112,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "408:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4115,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4159,
                        "src": "418:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4114,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "418:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "407:20:9"
                  },
                  "returnParameters": {
                    "id": 4119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4118,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4159,
                        "src": "451:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4117,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "451:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "450:8:9"
                  },
                  "scope": 4300,
                  "src": "395:568:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4198,
                    "nodeType": "Block",
                    "src": "1501:207:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 4172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4170,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4164,
                                "src": "1520:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1525:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1520:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206279207a65726f",
                              "id": 4173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1528:34:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd",
                                "typeString": "literal_string \"SignedSafeMath: division by zero\""
                              },
                              "value": "SignedSafeMath: division by zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebc4d0068c2e029285c70894a725032247a74fcdc822ba305ea67dbddf7750bd",
                                "typeString": "literal_string \"SignedSafeMath: division by zero\""
                              }
                            ],
                            "id": 4169,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1512:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1512:51:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4175,
                        "nodeType": "ExpressionStatement",
                        "src": "1512:51:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "1582:30:9",
                              "subExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4184,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4180,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4177,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4164,
                                        "src": "1584:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4179,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "1589:2:9",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 4178,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1590:1:9",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      },
                                      "src": "1584:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4183,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4181,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4162,
                                        "src": "1595:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4182,
                                        "name": "_INT256_MIN",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4110,
                                        "src": "1600:11:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1595:16:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1584:27:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4185,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1583:29:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77",
                              "id": 4187,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1614:35:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81",
                                "typeString": "literal_string \"SignedSafeMath: division overflow\""
                              },
                              "value": "SignedSafeMath: division overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7bc0f3df013376568eb9f7cb8999198097051f79bdb4d07d83447767f5224b81",
                                "typeString": "literal_string \"SignedSafeMath: division overflow\""
                              }
                            ],
                            "id": 4176,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1574:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1574:76:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4189,
                        "nodeType": "ExpressionStatement",
                        "src": "1574:76:9"
                      },
                      {
                        "assignments": [
                          4191
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4191,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4198,
                            "src": "1663:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 4190,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1663:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4195,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 4194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4192,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4162,
                            "src": "1674:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4193,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4164,
                            "src": "1678:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1674:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1663:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4196,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4191,
                          "src": "1699:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4168,
                        "id": 4197,
                        "nodeType": "Return",
                        "src": "1692:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4160,
                    "nodeType": "StructuredDocumentation",
                    "src": "971:460:9",
                    "text": " @dev Returns the integer division of two signed integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                  },
                  "id": 4199,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4162,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4199,
                        "src": "1450:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4161,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1450:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4164,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4199,
                        "src": "1460:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4163,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1460:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1449:20:9"
                  },
                  "returnParameters": {
                    "id": 4168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4167,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4199,
                        "src": "1493:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4166,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1493:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1492:8:9"
                  },
                  "scope": 4300,
                  "src": "1437:271:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4238,
                    "nodeType": "Block",
                    "src": "2023:154:9",
                    "statements": [
                      {
                        "assignments": [
                          4210
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4210,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4238,
                            "src": "2034:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 4209,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2034:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4214,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 4213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4211,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4202,
                            "src": "2045:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4212,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4204,
                            "src": "2049:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2045:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2034:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4222,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4218,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4216,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4204,
                                        "src": "2070:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 4217,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2075:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2070:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4221,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4219,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4210,
                                        "src": "2080:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4220,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4202,
                                        "src": "2085:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2080:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2070:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4223,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2069:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4226,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4224,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4204,
                                        "src": "2092:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 4225,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2096:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2092:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4229,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4227,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4210,
                                        "src": "2101:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4228,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4202,
                                        "src": "2105:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2101:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2092:14:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4231,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2091:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2069:38:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f77",
                              "id": 4233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2109:38:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd",
                                "typeString": "literal_string \"SignedSafeMath: subtraction overflow\""
                              },
                              "value": "SignedSafeMath: subtraction overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dfe37ab0612d67daeef366062296f3ebcaf7e2cc3eb392bf66a6cb5a7bed3bcd",
                                "typeString": "literal_string \"SignedSafeMath: subtraction overflow\""
                              }
                            ],
                            "id": 4215,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2061:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2061:87:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4235,
                        "nodeType": "ExpressionStatement",
                        "src": "2061:87:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4236,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4210,
                          "src": "2168:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4208,
                        "id": 4237,
                        "nodeType": "Return",
                        "src": "2161:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4200,
                    "nodeType": "StructuredDocumentation",
                    "src": "1716:237:9",
                    "text": " @dev Returns the subtraction of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                  },
                  "id": 4239,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4205,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4202,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1972:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4201,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1972:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4204,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "1982:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4203,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1982:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1971:20:9"
                  },
                  "returnParameters": {
                    "id": 4208,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4207,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4239,
                        "src": "2015:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4206,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2015:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2014:8:9"
                  },
                  "scope": 4300,
                  "src": "1959:218:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4278,
                    "nodeType": "Block",
                    "src": "2486:151:9",
                    "statements": [
                      {
                        "assignments": [
                          4250
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4250,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4278,
                            "src": "2497:8:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 4249,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2497:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4254,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 4253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4251,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4242,
                            "src": "2508:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 4252,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4244,
                            "src": "2512:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "2508:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2497:16:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4262,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4258,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4256,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4244,
                                        "src": "2533:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 4257,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2538:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2533:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4261,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4259,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4250,
                                        "src": "2543:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4260,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4242,
                                        "src": "2548:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2543:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2533:16:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4263,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2532:18:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4270,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4266,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4264,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4244,
                                        "src": "2555:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 4265,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2559:1:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "2555:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 4269,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4267,
                                        "name": "c",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4250,
                                        "src": "2564:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 4268,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4242,
                                        "src": "2568:1:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "2564:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2555:14:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4271,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2554:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2532:38:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f77",
                              "id": 4273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2572:35:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb",
                                "typeString": "literal_string \"SignedSafeMath: addition overflow\""
                              },
                              "value": "SignedSafeMath: addition overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_47c8d4a3974eee4fcf9925cffefc088ed6ac723b55fb65cf621edb1b7db7b8eb",
                                "typeString": "literal_string \"SignedSafeMath: addition overflow\""
                              }
                            ],
                            "id": 4255,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2524:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2524:84:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4275,
                        "nodeType": "ExpressionStatement",
                        "src": "2524:84:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4276,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4250,
                          "src": "2628:1:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4248,
                        "id": 4277,
                        "nodeType": "Return",
                        "src": "2621:8:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4240,
                    "nodeType": "StructuredDocumentation",
                    "src": "2185:231:9",
                    "text": " @dev Returns the addition of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                  },
                  "id": 4279,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4242,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4279,
                        "src": "2435:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4241,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2435:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4244,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4279,
                        "src": "2445:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4243,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2445:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2434:20:9"
                  },
                  "returnParameters": {
                    "id": 4248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4247,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4279,
                        "src": "2478:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4246,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2478:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2477:8:9"
                  },
                  "scope": 4300,
                  "src": "2422:215:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4298,
                    "nodeType": "Block",
                    "src": "2706:77:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 4289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4287,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4281,
                                "src": "2725:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2730:1:9",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2725:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "496e7465676572203c2030",
                              "id": 4290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2733:13:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_072bbf819d7fcc25efb63989aaa3ad43d444efad2d36a2598ffe45c4c4d00f7a",
                                "typeString": "literal_string \"Integer < 0\""
                              },
                              "value": "Integer < 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_072bbf819d7fcc25efb63989aaa3ad43d444efad2d36a2598ffe45c4c4d00f7a",
                                "typeString": "literal_string \"Integer < 0\""
                              }
                            ],
                            "id": 4286,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2717:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2717:30:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4292,
                        "nodeType": "ExpressionStatement",
                        "src": "2717:30:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4295,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4281,
                              "src": "2773:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 4294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2765:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 4293,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2765:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 4296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2765:10:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4285,
                        "id": 4297,
                        "nodeType": "Return",
                        "src": "2758:17:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4299,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUInt256",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4281,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4299,
                        "src": "2664:8:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4280,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2664:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2663:10:9"
                  },
                  "returnParameters": {
                    "id": 4285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4284,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4299,
                        "src": "2697:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2697:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2696:9:9"
                  },
                  "scope": 4300,
                  "src": "2645:138:9",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4301,
              "src": "62:2724:9"
            }
          ],
          "src": "35:2751:9"
        },
        "id": 9
      },
      "openzeppelin-contracts-legacy/GSN/Context.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-legacy/GSN/Context.sol",
          "exportedSymbols": {
            "Context": [
              4323
            ]
          },
          "id": 4324,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4302,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".0",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:10"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 4323,
              "linearizedBaseContracts": [
                4323
              ],
              "name": "Context",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4310,
                    "nodeType": "Block",
                    "src": "668:34:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4307,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "685:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "685:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "functionReturnParameters": 4306,
                        "id": 4309,
                        "nodeType": "Return",
                        "src": "678:17:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4311,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4303,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "617:2:10"
                  },
                  "returnParameters": {
                    "id": 4306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4305,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4311,
                        "src": "651:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 4304,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "651:15:10",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "650:17:10"
                  },
                  "scope": 4323,
                  "src": "598:104:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4321,
                    "nodeType": "Block",
                    "src": "773:165:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4316,
                          "name": "this",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -28,
                          "src": "783:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Context_$4323",
                            "typeString": "contract Context"
                          }
                        },
                        "id": 4317,
                        "nodeType": "ExpressionStatement",
                        "src": "783:4:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4318,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "923:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "923:8:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 4315,
                        "id": 4320,
                        "nodeType": "Return",
                        "src": "916:15:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4322,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4312,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "725:2:10"
                  },
                  "returnParameters": {
                    "id": 4315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4314,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4322,
                        "src": "759:12:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4313,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "759:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "758:14:10"
                  },
                  "scope": 4323,
                  "src": "708:230:10",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 4324,
              "src": "566:374:10"
            }
          ],
          "src": "33:908:10"
        },
        "id": 10
      },
      "openzeppelin-contracts-legacy/access/Ownable.sol": {
        "ast": {
          "absolutePath": "openzeppelin-contracts-legacy/access/Ownable.sol",
          "exportedSymbols": {
            "Ownable": [
              4432
            ]
          },
          "id": 4433,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4325,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".0",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:31:11"
            },
            {
              "absolutePath": "openzeppelin-contracts-legacy/GSN/Context.sol",
              "file": "../GSN/Context.sol",
              "id": 4326,
              "nodeType": "ImportDirective",
              "scope": 4433,
              "sourceUnit": 4324,
              "src": "66:28:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 4328,
                    "name": "Context",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4323,
                    "src": "619:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Context_$4323",
                      "typeString": "contract Context"
                    }
                  },
                  "id": 4329,
                  "nodeType": "InheritanceSpecifier",
                  "src": "619:7:11"
                }
              ],
              "contractDependencies": [
                4323
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4327,
                "nodeType": "StructuredDocumentation",
                "src": "95:494:11",
                "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
              },
              "fullyImplemented": true,
              "id": 4432,
              "linearizedBaseContracts": [
                4432,
                4323
              ],
              "name": "Ownable",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 4331,
                  "mutability": "mutable",
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4432,
                  "src": "633:22:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4330,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "633:7:11",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4337,
                  "name": "OwnershipTransferred",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4336,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4333,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4337,
                        "src": "689:29:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4332,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "689:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4335,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4337,
                        "src": "720:24:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4334,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "720:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "688:57:11"
                  },
                  "src": "662:84:11"
                },
                {
                  "body": {
                    "id": 4358,
                    "nodeType": "Block",
                    "src": "872:135:11",
                    "statements": [
                      {
                        "assignments": [
                          4342
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4342,
                            "mutability": "mutable",
                            "name": "msgSender",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4358,
                            "src": "882:17:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4341,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "882:7:11",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4345,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 4343,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4311,
                            "src": "902:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 4344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "902:12:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "882:32:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4346,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4331,
                            "src": "924:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4347,
                            "name": "msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4342,
                            "src": "933:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "924:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4349,
                        "nodeType": "ExpressionStatement",
                        "src": "924:18:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4353,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "986:1:11",
                                  "subdenomination": null,
                                  "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": 4352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "978:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4351,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "978:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4354,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "978:10:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4355,
                              "name": "msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4342,
                              "src": "990:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4350,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4337,
                            "src": "957:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 4356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "957:43:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4357,
                        "nodeType": "EmitStatement",
                        "src": "952:48:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4338,
                    "nodeType": "StructuredDocumentation",
                    "src": "752:91:11",
                    "text": " @dev Initializes the contract setting the deployer as the initial owner."
                  },
                  "id": 4359,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4339,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "860:2:11"
                  },
                  "returnParameters": {
                    "id": 4340,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "872:0:11"
                  },
                  "scope": 4432,
                  "src": "848:159:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4367,
                    "nodeType": "Block",
                    "src": "1130:30:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4365,
                          "name": "_owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4331,
                          "src": "1147:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4364,
                        "id": 4366,
                        "nodeType": "Return",
                        "src": "1140:13:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4360,
                    "nodeType": "StructuredDocumentation",
                    "src": "1013:65:11",
                    "text": " @dev Returns the address of the current owner."
                  },
                  "functionSelector": "8da5cb5b",
                  "id": 4368,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "owner",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4361,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1097:2:11"
                  },
                  "returnParameters": {
                    "id": 4364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4363,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4368,
                        "src": "1121:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4362,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1121:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1120:9:11"
                  },
                  "scope": 4432,
                  "src": "1083:77:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4380,
                    "nodeType": "Block",
                    "src": "1269:95:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4372,
                                "name": "_owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4331,
                                "src": "1287:6:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4373,
                                  "name": "_msgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4311,
                                  "src": "1297:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                    "typeString": "function () view returns (address payable)"
                                  }
                                },
                                "id": 4374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1297:12:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1287:22:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                              "id": 4376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1311:34:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              },
                              "value": "Ownable: caller is not the owner"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                              }
                            ],
                            "id": 4371,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1279:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1279:67:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4378,
                        "nodeType": "ExpressionStatement",
                        "src": "1279:67:11"
                      },
                      {
                        "id": 4379,
                        "nodeType": "PlaceholderStatement",
                        "src": "1356:1:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4369,
                    "nodeType": "StructuredDocumentation",
                    "src": "1166:77:11",
                    "text": " @dev Throws if called by any account other than the owner."
                  },
                  "id": 4381,
                  "name": "onlyOwner",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4370,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1266:2:11"
                  },
                  "src": "1248:116:11",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4402,
                    "nodeType": "Block",
                    "src": "1760:91:11",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4388,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4331,
                              "src": "1796:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4391,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1812:1:11",
                                  "subdenomination": null,
                                  "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": 4390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1804:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4389,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1804:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1804:10:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 4387,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4337,
                            "src": "1775:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 4393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1775:40:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4394,
                        "nodeType": "EmitStatement",
                        "src": "1770:45:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4395,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4331,
                            "src": "1825:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1842:1:11",
                                "subdenomination": null,
                                "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": 4397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1834:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4396,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1834:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1834:10:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1825:19:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4401,
                        "nodeType": "ExpressionStatement",
                        "src": "1825:19:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4382,
                    "nodeType": "StructuredDocumentation",
                    "src": "1370:331:11",
                    "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                  },
                  "functionSelector": "715018a6",
                  "id": 4403,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4385,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4384,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "1750:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1750:9:11"
                    }
                  ],
                  "name": "renounceOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4383,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1732:2:11"
                  },
                  "returnParameters": {
                    "id": 4386,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1760:0:11"
                  },
                  "scope": 4432,
                  "src": "1706:145:11",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4430,
                    "nodeType": "Block",
                    "src": "2070:170:11",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4417,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4412,
                                "name": "newOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4406,
                                "src": "2088:8:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 4415,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2108:1:11",
                                    "subdenomination": null,
                                    "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": 4414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2100:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4413,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2100:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 4416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2100:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2088:22:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                              "id": 4418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2112:40:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              },
                              "value": "Ownable: new owner is the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                              }
                            ],
                            "id": 4411,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2080:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2080:73:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4420,
                        "nodeType": "ExpressionStatement",
                        "src": "2080:73:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4422,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4331,
                              "src": "2189:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4423,
                              "name": "newOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4406,
                              "src": "2197:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4421,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4337,
                            "src": "2168:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 4424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2168:38:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4425,
                        "nodeType": "EmitStatement",
                        "src": "2163:43:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4426,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4331,
                            "src": "2216:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4427,
                            "name": "newOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4406,
                            "src": "2225:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2216:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4429,
                        "nodeType": "ExpressionStatement",
                        "src": "2216:17:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4404,
                    "nodeType": "StructuredDocumentation",
                    "src": "1857:138:11",
                    "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                  },
                  "functionSelector": "f2fde38b",
                  "id": 4431,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": null,
                      "id": 4409,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 4408,
                        "name": "onlyOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4381,
                        "src": "2060:9:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2060:9:11"
                    }
                  ],
                  "name": "transferOwnership",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4406,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4431,
                        "src": "2027:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4405,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2027:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2026:18:11"
                  },
                  "returnParameters": {
                    "id": 4410,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2070:0:11"
                  },
                  "scope": 4432,
                  "src": "2000:240:11",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 4433,
              "src": "590:1652:11"
            }
          ],
          "src": "33:2210:11"
        },
        "id": 11
      }
    }
  }
}
