ETH Price: $3,475.44 (+1.16%)

Contract

0xe9c91B7E090F8DFe326372AF027D9fb5a7518086
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Rewards209379872024-10-10 21:45:2370 days ago1728596723IN
0xe9c91B7E...5a7518086
0 ETH0.000939657.84073375
Un Stake207185452024-09-10 6:52:11101 days ago1725951131IN
0xe9c91B7E...5a7518086
0 ETH0.000245422.07191097
Claim Rewards206858532024-09-05 17:23:23106 days ago1725557003IN
0xe9c91B7E...5a7518086
0 ETH0.000494344.81148337
Stake206343002024-08-29 12:40:23113 days ago1724935223IN
0xe9c91B7E...5a7518086
0 ETH0.001206253.01693385
Un Stake206296462024-08-28 21:02:47113 days ago1724878967IN
0xe9c91B7E...5a7518086
0 ETH0.000394153.32749523
Claim Rewards206292182024-08-28 19:36:35113 days ago1724873795IN
0xe9c91B7E...5a7518086
0 ETH0.000166421.61984297
Stake205743272024-08-21 3:32:23121 days ago1724211143IN
0xe9c91B7E...5a7518086
0 ETH0.000302041.08299251
Un Stake205707422024-08-20 15:31:11122 days ago1724167871IN
0xe9c91B7E...5a7518086
0 ETH0.000433224.27440942
Un Stake204806082024-08-08 1:33:59134 days ago1723080839IN
0xe9c91B7E...5a7518086
0 ETH0.000274442.31691568
Un Stake204171702024-07-30 5:02:47143 days ago1722315767IN
0xe9c91B7E...5a7518086
0 ETH0.000229431.93692582
Claim Rewards204105802024-07-29 6:59:35144 days ago1722236375IN
0xe9c91B7E...5a7518086
0 ETH0.000222211.85424574
Un Stake203613192024-07-22 9:57:11151 days ago1721642231IN
0xe9c91B7E...5a7518086
0 ETH0.000630466.22046156
Un Stake203612862024-07-22 9:50:35151 days ago1721641835IN
0xe9c91B7E...5a7518086
0 ETH0.000568915.61317098
Claim Rewards203612832024-07-22 9:49:59151 days ago1721641799IN
0xe9c91B7E...5a7518086
0 ETH0.000753975.50576819
Stake203533122024-07-21 7:06:59152 days ago1721545619IN
0xe9c91B7E...5a7518086
0 ETH0.00070092.51314703
Un Stake203532812024-07-21 7:00:47152 days ago1721545247IN
0xe9c91B7E...5a7518086
0 ETH0.000589282.30850263
Claim Rewards203532512024-07-21 6:54:47152 days ago1721544887IN
0xe9c91B7E...5a7518086
0 ETH0.00021812.12285248
Un Stake203338992024-07-18 14:07:35155 days ago1721311655IN
0xe9c91B7E...5a7518086
0 ETH0.0015811813.34865137
Claim Rewards203338702024-07-18 14:01:35155 days ago1721311295IN
0xe9c91B7E...5a7518086
0 ETH0.0016564313.82172694
Stake203034772024-07-14 8:13:59159 days ago1720944839IN
0xe9c91B7E...5a7518086
0 ETH0.001264793.81802896
Stake203034672024-07-14 8:11:59159 days ago1720944719IN
0xe9c91B7E...5a7518086
0 ETH0.001040013.66578722
Un Stake203034552024-07-14 8:09:35159 days ago1720944575IN
0xe9c91B7E...5a7518086
0 ETH0.000389823.84622386
Claim Rewards203034362024-07-14 8:05:47159 days ago1720944347IN
0xe9c91B7E...5a7518086
0 ETH0.000404093.37185236
Stake202991402024-07-13 17:41:47160 days ago1720892507IN
0xe9c91B7E...5a7518086
0 ETH0.000547911.96458016
Un Stake202991202024-07-13 17:37:47160 days ago1720892267IN
0xe9c91B7E...5a7518086
0 ETH0.000275952.3296223
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xaCFE3D5f...D6d4E2880
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
AQUAStaking

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-05-09
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}

abstract contract Context {
    function _msgSender() internal view returns (address) {
        return msg.sender;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view returns (address) {
        return _owner;
    }

    function _checkOwner() private view {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() external onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) external onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        _status = _NOT_ENTERED;
    }

    function _reentrancyGuardEntered() private view returns (bool) {
        return _status == _ENTERED;
    }
}

contract AQUAStaking is Ownable, ReentrancyGuard {
    struct PoolInfo {
        uint256 lockupDuration;
        uint256 returnPer;
    }
    struct OrderInfo {
        address beneficiary;
        uint256 amount;
        uint256 lockupDuration;
        uint256 returnPer;
        uint256 starttime;
        uint256 endtime;
        uint256 claimedReward;
        bool claimed;
    }
    uint256 private constant _1Year =  7 days ; 
    uint256 private constant _days365 = 365 days; 
    IERC20 public AQUA;
    IERC20 public sAQUA;

    bool private started = true;
    uint256 private latestOrderId = 0;
    uint256 public totalStakers;
    uint256 public totalStaked;
    uint256 public currentStaked;

    mapping(uint256 => PoolInfo) public pooldata;
    mapping(address => uint256) public balanceOf;
    mapping(address => uint256) public totalRewardEarn;
    mapping(uint256 => OrderInfo) public orders;
    mapping(address => uint256[]) private orderIds;
    mapping(address => mapping(uint256 => bool)) public hasStaked;
    mapping(uint256 => uint256) public stakeOnPool;
    mapping(uint256 => uint256) public rewardOnPool;
    mapping(uint256 => uint256) public stakersPlan;

    event Deposit(
        address indexed user,
        uint256 indexed lockupDuration,
        uint256 amount,
        uint256 returnPer
    );
    event Withdraw(
        address indexed user,
        uint256 amount,
        uint256 reward,
        uint256 total
    );
    event WithdrawAll(address indexed user, uint256 amount);
    event RewardClaimed(address indexed user, uint256 reward);

    constructor(
        address _aquaAddress,
        address _saquaAddress,
        uint256 _apy
    ) {
        AQUA = IERC20(_aquaAddress);
        sAQUA = IERC20(_saquaAddress);
        pooldata[1].lockupDuration = _1Year;
        pooldata[1].returnPer = _apy;
    }

    function stake(uint256 _amount, uint256 _lockupDuration) external {
        PoolInfo storage pool = pooldata[_lockupDuration];
        require(
            pool.lockupDuration > 0,
            "AQUAStaking: asked pool does not exist"
        );
        require(started, "AQUAStaking: staking not yet started");
        require(_amount > 0, "AQUAStaking: stake amount must be non zero");
        require(
            AQUA.transferFrom(_msgSender(), address(this), _amount),
            "AQUAStaking: AQUA transferFrom via deposit not succeeded"
        );

        orders[++latestOrderId] = OrderInfo(
            _msgSender(),
            _amount,
            pool.lockupDuration,
            pool.returnPer,
            block.timestamp,
            block.timestamp + pool.lockupDuration,
            0,
            false
        );

        if (!hasStaked[msg.sender][_lockupDuration]) {
            stakersPlan[_lockupDuration] = stakersPlan[_lockupDuration] + 1;
            totalStakers = totalStakers + 1;
        }

        //updating staking status

        hasStaked[msg.sender][_lockupDuration] = true;
        stakeOnPool[_lockupDuration] = stakeOnPool[_lockupDuration] + _amount;
        totalStaked = totalStaked + _amount;
        currentStaked = currentStaked + _amount;
        balanceOf[_msgSender()] += _amount;
        orderIds[_msgSender()].push(latestOrderId);
        emit Deposit(
            _msgSender(),
            pool.lockupDuration,
            _amount,
            pool.returnPer
        );
    }

    function unStake(uint256 orderId) external nonReentrant {
        require(
            orderId <= latestOrderId,
            "AQUAStaking: INVALID orderId, orderId greater than latestOrderId"
        );

        OrderInfo storage orderInfo = orders[orderId];
        require(
            _msgSender() == orderInfo.beneficiary,
            "AQUAStaking: caller is not the beneficiary"
        );
        require(!orderInfo.claimed, "AQUAStaking: order already unstaked");
        require(
            block.timestamp >= orderInfo.endtime,
            "AQUAStaking: stake locked until lock duration completion"
        );
        uint256 total = orderInfo.amount;
        balanceOf[_msgSender()] -= orderInfo.amount;
        currentStaked = currentStaked - orderInfo.amount ;
        orderInfo.claimed = true;

        require(
            AQUA.transfer(address(_msgSender()), total),
            "AQUAStaking: AQUA transfer via withdraw not succeeded"
        );
        emit Withdraw(_msgSender(), orderInfo.amount, total, total);
    }

    function claimRewards(uint256 orderId) external nonReentrant {
        require(
            orderId <= latestOrderId,
            "AQUAStaking: INVALID orderId, orderId greater than latestOrderId"
        );

        OrderInfo storage orderInfo = orders[orderId];
        require(
            _msgSender() == orderInfo.beneficiary,
            "AQUAStaking: caller is not the beneficiary"
        );
        require(!orderInfo.claimed, "AQUAStaking: order already unstaked");

        uint256 claimAvailable = pendingRewards(orderId);
        totalRewardEarn[_msgSender()] += claimAvailable;

        orderInfo.claimedReward += claimAvailable;

        require(
            sAQUA.transfer(address(_msgSender()), claimAvailable),
            "AQUAStaking: sAQUA transfer via claim rewards not succeeded"
        );
        rewardOnPool[orderInfo.lockupDuration] =
            rewardOnPool[orderInfo.lockupDuration] +
            claimAvailable;
        emit RewardClaimed(address(_msgSender()), claimAvailable);
    }

    function pendingRewards(uint256 orderId) public view returns (uint256) {
        require(
            orderId <= latestOrderId,
            "AQUAStaking: INVALID orderId, orderId greater than latestOrderId"
        );

        OrderInfo storage orderInfo = orders[orderId];
        if (!orderInfo.claimed) {
            if (block.timestamp >= orderInfo.endtime) {
                uint256 APY = (orderInfo.amount * orderInfo.returnPer) / 100;
                uint256 reward = (APY * orderInfo.lockupDuration) / _days365;
                uint256 claimAvailable = reward - orderInfo.claimedReward;
                return claimAvailable;
            } else {
                uint256 stakeTime = block.timestamp - orderInfo.starttime;
                uint256 APY = (orderInfo.amount * orderInfo.returnPer) / 100;
                uint256 reward = (APY * stakeTime) / _days365;
                uint256 claimAvailableNow = reward - orderInfo.claimedReward;
                return claimAvailableNow;
            }
        } else {
            return 0;
        }
    }

    function setPlansApy(uint256 plan1Apy) external onlyOwner {
        pooldata[1].returnPer = plan1Apy;
    }

    function toggleStaking(bool _start) external onlyOwner returns (bool) {
        started = _start;
        return true;
    }

    function investorOrderIds(address investor)
        external
        view
        returns (uint256[] memory ids)
    {
        uint256[] memory arr = orderIds[investor];
        return arr;
    }

    function withdrawERC20(address _token) external onlyOwner {
        IERC20 withdraw_token = IERC20(_token);
        uint256 balance = withdraw_token.balanceOf(address(this));
        uint256 withdrawToken = balance - currentStaked ;
        require(
            withdraw_token.transfer(msg.sender, withdrawToken),
            "withdraw_token transfer failed"
        );
    }


   function withdrawAllTokens() external nonReentrant {
    uint256[] storage userOrderIds = orderIds[_msgSender()];
    uint256 totalStakedAmount;

    for (uint256 i = 0; i < userOrderIds.length; i++) {
        uint256 orderId = userOrderIds[i];
        OrderInfo storage orderInfo = orders[orderId];

        // Ensure order is not already unstaked
        require(!orderInfo.claimed, "AQUAStaking: order already unstaked");

       
        
        totalStakedAmount += orderInfo.amount;

        // Mark order as claimed
        orderInfo.claimed = true;

        // Emit event for tokens withdrawn
        emit Withdraw(_msgSender(), orderInfo.amount, orderInfo.amount, orderInfo.amount);
    }

    // Transfer total staked amount back to user
      
    require(
        AQUA.transfer(_msgSender(), totalStakedAmount),
        "AQUAStaking: AQUA transfer via withdraw not succeeded"
    );

    currentStaked = currentStaked - totalStakedAmount;
    balanceOf[_msgSender()] -= totalStakedAmount;

    // Emit event for successful withdrawal
    emit WithdrawAll(_msgSender(), totalStakedAmount);
}

  function claimAllRemainingRewards() external nonReentrant {
    uint256[] storage userOrderIds = orderIds[_msgSender()];
    uint256 totalRewards;

    for (uint256 i = 0; i < userOrderIds.length; i++) {
        uint256 orderId = userOrderIds[i];
        OrderInfo storage orderInfo = orders[orderId];

        // Ensure order is not already claimed
        require(!orderInfo.claimed, "AQUAStaking: order already claimed");

        // Calculate and accumulate remaining rewards
        uint256 claimAvailable = pendingRewards(orderId);
        totalRewards += claimAvailable;
        orderInfo.claimedReward += claimAvailable;
        rewardOnPool[orderInfo.lockupDuration] += claimAvailable;

        // Emit event for reward claimed
        emit RewardClaimed(_msgSender(), claimAvailable);
    }

    // Transfer total rewards to user
    require(
        sAQUA.transfer(_msgSender(), totalRewards),
        "AQUAStaking: sAQUA transfer via claim rewards not succeeded"
    );

    // Emit event for successful reward claim
    emit RewardClaimed(_msgSender(), totalRewards);
}

function viewTotalPendingRewards(address user) external view returns (uint256) {
    uint256[] storage userOrderIds = orderIds[user];
    uint256 totalPendingRewards;

    for (uint256 i = 0; i < userOrderIds.length; i++) {
        uint256 orderId = userOrderIds[i];
        totalPendingRewards += pendingRewards(orderId);
    }

    return totalPendingRewards;
}


}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_aquaAddress","type":"address"},{"internalType":"address","name":"_saquaAddress","type":"address"},{"internalType":"uint256","name":"_apy","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"lockupDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnPer","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawAll","type":"event"},{"inputs":[],"name":"AQUA","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAllRemainingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"hasStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"investor","type":"address"}],"name":"investorOrderIds","outputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"orders","outputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockupDuration","type":"uint256"},{"internalType":"uint256","name":"returnPer","type":"uint256"},{"internalType":"uint256","name":"starttime","type":"uint256"},{"internalType":"uint256","name":"endtime","type":"uint256"},{"internalType":"uint256","name":"claimedReward","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pooldata","outputs":[{"internalType":"uint256","name":"lockupDuration","type":"uint256"},{"internalType":"uint256","name":"returnPer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardOnPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sAQUA","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"plan1Apy","type":"uint256"}],"name":"setPlansApy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_lockupDuration","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeOnPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakersPlan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_start","type":"bool"}],"name":"toggleStaking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalRewardEarn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakers","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":"orderId","type":"uint256"}],"name":"unStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"viewTotalPendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80637b0472f0116100f9578063b9b2cf9611610097578063f2fde38b11610071578063f2fde38b146104d7578063f4f3b200146104f3578063fa1e15141461050f578063fce50f171461053f576101a9565b8063b9b2cf961461045b578063da4b2e7514610477578063e8becf02146104a7576101a9565b806386989038116100d357806386989038146103b85780638da5cb5b146103d6578063a85c38ef146103f4578063aa6049471461042b576101a9565b80637b0472f01461034e5780637dcb2abf1461036a578063817b1cd21461039a576101a9565b80635d3eea9111610166578063698059811161014057806369805981146102b457806370a08231146102e4578063715018a614610314578063799102a21461031e576101a9565b80635d3eea911461025c57806363fccba914610278578063695464e914610296576101a9565b80630962ef79146101ae5780631a6c5e7e146101ca5780631ec9d10f146101fa578063280da6fa146102045780632c26afae1461020e578063336a57f31461023e575b600080fd5b6101c860048036038101906101c3919061210c565b610570565b005b6101e460048036038101906101df919061210c565b6108ca565b6040516101f19190612148565b60405180910390f35b6102026108e2565b005b61020c610bea565b005b6102286004803603810190610223919061210c565b610f3d565b6040516102359190612148565b60405180910390f35b610246610f55565b60405161025391906121e2565b60405180910390f35b6102766004803603810190610271919061210c565b610f7b565b005b610280611300565b60405161028d91906121e2565b60405180910390f35b61029e611326565b6040516102ab9190612148565b60405180910390f35b6102ce60048036038101906102c99190612235565b61132c565b6040516102db9190612271565b60405180910390f35b6102fe60048036038101906102f991906122ca565b611359565b60405161030b9190612148565b60405180910390f35b61031c611371565b005b6103386004803603810190610333919061210c565b611385565b6040516103459190612148565b60405180910390f35b610368600480360381019061036391906122f7565b61139d565b005b610384600480360381019061037f919061210c565b61195b565b6040516103919190612148565b60405180910390f35b6103a2611ac4565b6040516103af9190612148565b60405180910390f35b6103c0611aca565b6040516103cd9190612148565b60405180910390f35b6103de611ad0565b6040516103eb9190612346565b60405180910390f35b61040e6004803603810190610409919061210c565b611af9565b604051610422989796959493929190612361565b60405180910390f35b610445600480360381019061044091906122ca565b611b6e565b604051610452919061249d565b60405180910390f35b6104756004803603810190610470919061210c565b611c0b565b005b610491600480360381019061048c91906124bf565b611c32565b60405161049e9190612271565b60405180910390f35b6104c160048036038101906104bc91906122ca565b611c61565b6040516104ce9190612148565b60405180910390f35b6104f160048036038101906104ec91906122ca565b611d10565b005b61050d600480360381019061050891906122ca565b611d93565b005b610529600480360381019061052491906122ca565b611ef3565b6040516105369190612148565b60405180910390f35b6105596004803603810190610554919061210c565b611f0b565b6040516105679291906124ff565b60405180910390f35b610578611f2f565b6004548111156105bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b4906125ab565b60405180910390fd5b6000600b600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610617611f7e565b73ffffffffffffffffffffffffffffffffffffffff161461066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106649061263d565b60405180910390fd5b8060070160009054906101000a900460ff16156106bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b6906126cf565b60405180910390fd5b60006106ca8361195b565b905080600a60006106d9611f7e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610722919061271e565b925050819055508082600601600082825461073d919061271e565b92505081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61078a611f7e565b836040518363ffffffff1660e01b81526004016107a8929190612752565b6020604051808303816000875af11580156107c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107eb9190612790565b61082a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108219061282f565b60405180910390fd5b80600f6000846002015481526020019081526020016000205461084d919061271e565b600f60008460020154815260200190815260200160002081905550610870611f7e565b73ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241826040516108b59190612148565b60405180910390a250506108c7611f86565b50565b600f6020528060005260406000206000915090505481565b6108ea611f2f565b6000600c60006108f8611f7e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b8280549050811015610aa257600083828154811061095d5761095c61284f565b5b906000526020600020015490506000600b600083815260200190815260200160002090508060070160009054906101000a900460ff16156109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca906128f0565b60405180910390fd5b60006109de8361195b565b905080856109ec919061271e565b945080826006016000828254610a02919061271e565b9250508190555080600f6000846002015481526020019081526020016000206000828254610a30919061271e565b92505081905550610a3f611f7e565b73ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051610a849190612148565b60405180910390a25050508080610a9a90612910565b91505061093c565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610ae9611f7e565b836040518363ffffffff1660e01b8152600401610b07929190612752565b6020604051808303816000875af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a9190612790565b610b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b809061282f565b60405180910390fd5b610b91611f7e565b73ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051610bd69190612148565b60405180910390a25050610be8611f86565b565b610bf2611f2f565b6000600c6000610c00611f7e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b8280549050811015610d84576000838281548110610c6557610c6461284f565b5b906000526020600020015490506000600b600083815260200190815260200160002090508060070160009054906101000a900460ff1615610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd2906126cf565b60405180910390fd5b806001015484610ceb919061271e565b935060018160070160006101000a81548160ff021916908315150217905550610d12611f7e565b73ffffffffffffffffffffffffffffffffffffffff167f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca94826001015483600101548460010154604051610d6793929190612958565b60405180910390a250508080610d7c90612910565b915050610c44565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610dcb611f7e565b836040518363ffffffff1660e01b8152600401610de9929190612752565b6020604051808303816000875af1158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c9190612790565b610e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6290612a01565b60405180910390fd5b80600754610e799190612a21565b6007819055508060096000610e8c611f7e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ed59190612a21565b92505081905550610ee4611f7e565b73ffffffffffffffffffffffffffffffffffffffff167fd7a4aa9f3dca5f6606ac15d7e1850920201bbb02c38cd986793779f58ae0dfd382604051610f299190612148565b60405180910390a25050610f3b611f86565b565b60106020528060005260406000206000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f83611f2f565b600454811115610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf906125ab565b60405180910390fd5b6000600b600083815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611022611f7e565b73ffffffffffffffffffffffffffffffffffffffff1614611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106f9061263d565b60405180910390fd5b8060070160009054906101000a900460ff16156110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c1906126cf565b60405180910390fd5b8060050154421015611111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110890612ac7565b60405180910390fd5b60008160010154905081600101546009600061112b611f7e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111749190612a21565b92505081905550816001015460075461118d9190612a21565b60078190555060018260070160006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6111f6611f7e565b836040518363ffffffff1660e01b8152600401611214929190612752565b6020604051808303816000875af1158015611233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112579190612790565b611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d90612a01565b60405180910390fd5b61129e611f7e565b73ffffffffffffffffffffffffffffffffffffffff167f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca94836001015483846040516112eb93929190612958565b60405180910390a250506112fd611f86565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6000611336611f8f565b81600360146101000a81548160ff02191690831515021790555060019050919050565b60096020528060005260406000206000915090505481565b611379611f8f565b611383600061200d565b565b600e6020528060005260406000206000915090505481565b600060086000838152602001908152602001600020905060008160000154116113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290612b59565b60405180910390fd5b600360149054906101000a900460ff1661144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190612beb565b60405180910390fd5b6000831161148d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148490612c7d565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd6114d3611f7e565b30866040518463ffffffff1660e01b81526004016114f393929190612c9d565b6020604051808303816000875af1158015611512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115369190612790565b611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90612d46565b60405180910390fd5b604051806101000160405280611589611f7e565b73ffffffffffffffffffffffffffffffffffffffff16815260200184815260200182600001548152602001826001015481526020014281526020018260000154426115d4919061271e565b81526020016000815260200160001515815250600b60006004600081546115fa90612910565b919050819055815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a81548160ff021916908315150217905550905050600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff166117635760016010600084815260200190815260200160002054611736919061271e565b6010600084815260200190815260200160002081905550600160055461175c919061271e565b6005819055505b6001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548160ff02191690831515021790555082600e6000848152602001908152602001600020546117eb919061271e565b600e60008481526020019081526020016000208190555082600654611810919061271e565b60068190555082600754611824919061271e565b6007819055508260096000611837611f7e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611880919061271e565b92505081905550600c6000611893611f7e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060045490806001815401808255809150506001900390600052602060002001600090919091909150558060000154611903611f7e565b73ffffffffffffffffffffffffffffffffffffffff167f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e85846001015460405161194e9291906124ff565b60405180910390a3505050565b60006004548211156119a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611999906125ab565b60405180910390fd5b6000600b600084815260200190815260200160002090508060070160009054906101000a900460ff16611ab95780600501544210611a415760006064826003015483600101546119f29190612d66565b6119fc9190612dd7565b905060006301e13380836002015483611a159190612d66565b611a1f9190612dd7565b90506000836006015482611a339190612a21565b905080945050505050611abf565b6000816004015442611a539190612a21565b90506000606483600301548460010154611a6d9190612d66565b611a779190612dd7565b905060006301e133808383611a8c9190612d66565b611a969190612dd7565b90506000846006015482611aaa9190612a21565b90508095505050505050611abf565b60009150505b919050565b60065481565b60055481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900460ff16905088565b60606000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611bfb57602002820191906000526020600020905b815481526020019060010190808311611be7575b5050505050905080915050919050565b611c13611f8f565b8060086000600181526020019081526020016000206001018190555050565b600d6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b8280549050811015611d05576000838281548110611cce57611ccd61284f565b5b90600052602060002001549050611ce48161195b565b83611cef919061271e565b9250508080611cfd90612910565b915050611cad565b508092505050919050565b611d18611f8f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e90612e7a565b60405180910390fd5b611d908161200d565b50565b611d9b611f8f565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ddb9190612346565b602060405180830381865afa158015611df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1c9190612eaf565b9050600060075482611e2e9190612a21565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611e6b929190612752565b6020604051808303816000875af1158015611e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eae9190612790565b611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee490612f28565b60405180910390fd5b50505050565b600a6020528060005260406000206000915090505481565b60086020528060005260406000206000915090508060000154908060010154905082565b600260015403611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90612f94565b60405180910390fd5b6002600181905550565b600033905090565b60018081905550565b611f97611f7e565b73ffffffffffffffffffffffffffffffffffffffff16611fb5611ad0565b73ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200290613000565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b6000819050919050565b6120e9816120d6565b81146120f457600080fd5b50565b600081359050612106816120e0565b92915050565b600060208284031215612122576121216120d1565b5b6000612130848285016120f7565b91505092915050565b612142816120d6565b82525050565b600060208201905061215d6000830184612139565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006121a86121a361219e84612163565b612183565b612163565b9050919050565b60006121ba8261218d565b9050919050565b60006121cc826121af565b9050919050565b6121dc816121c1565b82525050565b60006020820190506121f760008301846121d3565b92915050565b60008115159050919050565b612212816121fd565b811461221d57600080fd5b50565b60008135905061222f81612209565b92915050565b60006020828403121561224b5761224a6120d1565b5b600061225984828501612220565b91505092915050565b61226b816121fd565b82525050565b60006020820190506122866000830184612262565b92915050565b600061229782612163565b9050919050565b6122a78161228c565b81146122b257600080fd5b50565b6000813590506122c48161229e565b92915050565b6000602082840312156122e0576122df6120d1565b5b60006122ee848285016122b5565b91505092915050565b6000806040838503121561230e5761230d6120d1565b5b600061231c858286016120f7565b925050602061232d858286016120f7565b9150509250929050565b6123408161228c565b82525050565b600060208201905061235b6000830184612337565b92915050565b600061010082019050612377600083018b612337565b612384602083018a612139565b6123916040830189612139565b61239e6060830188612139565b6123ab6080830187612139565b6123b860a0830186612139565b6123c560c0830185612139565b6123d260e0830184612262565b9998505050505050505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612414816120d6565b82525050565b6000612426838361240b565b60208301905092915050565b6000602082019050919050565b600061244a826123df565b61245481856123ea565b935061245f836123fb565b8060005b83811015612490578151612477888261241a565b975061248283612432565b925050600181019050612463565b5085935050505092915050565b600060208201905081810360008301526124b7818461243f565b905092915050565b600080604083850312156124d6576124d56120d1565b5b60006124e4858286016122b5565b92505060206124f5858286016120f7565b9150509250929050565b60006040820190506125146000830185612139565b6125216020830184612139565b9392505050565b600082825260208201905092915050565b7f415155415374616b696e673a20494e56414c4944206f7264657249642c206f7260008201527f64657249642067726561746572207468616e206c61746573744f726465724964602082015250565b6000612595604083612528565b91506125a082612539565b604082019050919050565b600060208201905081810360008301526125c481612588565b9050919050565b7f415155415374616b696e673a2063616c6c6572206973206e6f7420746865206260008201527f656e656669636961727900000000000000000000000000000000000000000000602082015250565b6000612627602a83612528565b9150612632826125cb565b604082019050919050565b600060208201905081810360008301526126568161261a565b9050919050565b7f415155415374616b696e673a206f7264657220616c726561647920756e73746160008201527f6b65640000000000000000000000000000000000000000000000000000000000602082015250565b60006126b9602383612528565b91506126c48261265d565b604082019050919050565b600060208201905081810360008301526126e8816126ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612729826120d6565b9150612734836120d6565b925082820190508082111561274c5761274b6126ef565b5b92915050565b60006040820190506127676000830185612337565b6127746020830184612139565b9392505050565b60008151905061278a81612209565b92915050565b6000602082840312156127a6576127a56120d1565b5b60006127b48482850161277b565b91505092915050565b7f415155415374616b696e673a207341515541207472616e73666572207669612060008201527f636c61696d2072657761726473206e6f74207375636365656465640000000000602082015250565b6000612819603b83612528565b9150612824826127bd565b604082019050919050565b600060208201905081810360008301526128488161280c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f415155415374616b696e673a206f7264657220616c726561647920636c61696d60008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006128da602283612528565b91506128e58261287e565b604082019050919050565b60006020820190508181036000830152612909816128cd565b9050919050565b600061291b826120d6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361294d5761294c6126ef565b5b600182019050919050565b600060608201905061296d6000830186612139565b61297a6020830185612139565b6129876040830184612139565b949350505050565b7f415155415374616b696e673a2041515541207472616e7366657220766961207760008201527f69746864726177206e6f74207375636365656465640000000000000000000000602082015250565b60006129eb603583612528565b91506129f68261298f565b604082019050919050565b60006020820190508181036000830152612a1a816129de565b9050919050565b6000612a2c826120d6565b9150612a37836120d6565b9250828203905081811115612a4f57612a4e6126ef565b5b92915050565b7f415155415374616b696e673a207374616b65206c6f636b656420756e74696c2060008201527f6c6f636b206475726174696f6e20636f6d706c6574696f6e0000000000000000602082015250565b6000612ab1603883612528565b9150612abc82612a55565b604082019050919050565b60006020820190508181036000830152612ae081612aa4565b9050919050565b7f415155415374616b696e673a2061736b656420706f6f6c20646f6573206e6f7460008201527f2065786973740000000000000000000000000000000000000000000000000000602082015250565b6000612b43602683612528565b9150612b4e82612ae7565b604082019050919050565b60006020820190508181036000830152612b7281612b36565b9050919050565b7f415155415374616b696e673a207374616b696e67206e6f74207965742073746160008201527f7274656400000000000000000000000000000000000000000000000000000000602082015250565b6000612bd5602483612528565b9150612be082612b79565b604082019050919050565b60006020820190508181036000830152612c0481612bc8565b9050919050565b7f415155415374616b696e673a207374616b6520616d6f756e74206d757374206260008201527f65206e6f6e207a65726f00000000000000000000000000000000000000000000602082015250565b6000612c67602a83612528565b9150612c7282612c0b565b604082019050919050565b60006020820190508181036000830152612c9681612c5a565b9050919050565b6000606082019050612cb26000830186612337565b612cbf6020830185612337565b612ccc6040830184612139565b949350505050565b7f415155415374616b696e673a2041515541207472616e7366657246726f6d207660008201527f6961206465706f736974206e6f74207375636365656465640000000000000000602082015250565b6000612d30603883612528565b9150612d3b82612cd4565b604082019050919050565b60006020820190508181036000830152612d5f81612d23565b9050919050565b6000612d71826120d6565b9150612d7c836120d6565b9250828202612d8a816120d6565b91508282048414831517612da157612da06126ef565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612de2826120d6565b9150612ded836120d6565b925082612dfd57612dfc612da8565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e64602683612528565b9150612e6f82612e08565b604082019050919050565b60006020820190508181036000830152612e9381612e57565b9050919050565b600081519050612ea9816120e0565b92915050565b600060208284031215612ec557612ec46120d1565b5b6000612ed384828501612e9a565b91505092915050565b7f77697468647261775f746f6b656e207472616e73666572206661696c65640000600082015250565b6000612f12601e83612528565b9150612f1d82612edc565b602082019050919050565b60006020820190508181036000830152612f4181612f05565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612f7e601f83612528565b9150612f8982612f48565b602082019050919050565b60006020820190508181036000830152612fad81612f71565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fea602083612528565b9150612ff582612fb4565b602082019050919050565b6000602082019050818103600083015261301981612fdd565b905091905056fea26469706673582212206e11328c02599b01311e5bb6ebf8d7501139ebc78192763343a63d61c686d59f64736f6c63430008130033

Deployed Bytecode Sourcemap

2330:10204:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6902:1042;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3449:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11039:1111;;;:::i;:::-;;9896:1137;;;:::i;:::-;;3503:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2860:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5832:1062;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2835:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3029:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9159:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3117:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1089:97;;;:::i;:::-;;3396:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4255:1569;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7952:1082;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2996:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2962:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;871:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3225:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;9294:202;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9042:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3328:61;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12154:373;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1194:232;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9504:383;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3168:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3066:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6902:1042;1888:21;:19;:21::i;:::-;7007:13:::1;;6996:7;:24;;6974:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;7125:27;7155:6;:15;7162:7;7155:15;;;;;;;;;;;7125:45;;7219:9;:21;;;;;;;;;;;;7203:37;;:12;:10;:12::i;:::-;:37;;;7181:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;7330:9;:17;;;;;;;;;;;;7329:18;7321:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7400:22;7425:23;7440:7;7425:14;:23::i;:::-;7400:48;;7492:14;7459:15;:29;7475:12;:10;:12::i;:::-;7459:29;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;7546:14;7519:9;:23;;;:41;;;;;;;:::i;:::-;;;;;;;;7595:5;;;;;;;;;;;:14;;;7618:12;:10;:12::i;:::-;7633:14;7595:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7573:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;7854:14;7800:12;:38;7813:9;:24;;;7800:38;;;;;;;;;;;;:68;;;;:::i;:::-;7746:12;:38;7759:9;:24;;;7746:38;;;;;;;;;;;:122;;;;7906:12;:10;:12::i;:::-;7884:52;;;7921:14;7884:52;;;;;;:::i;:::-;;;;;;;;6963:981;;1932:20:::0;:18;:20::i;:::-;6902:1042;:::o;3449:47::-;;;;;;;;;;;;;;;;;:::o;11039:1111::-;1888:21;:19;:21::i;:::-;11104:30:::1;11137:8;:22;11146:12;:10;:12::i;:::-;11137:22;;;;;;;;;;;;;;;11104:55;;11166:20;11200:9:::0;11212:1:::1;11200:13;;11195:663;11219:12;:19;;;;11215:1;:23;11195:663;;;11256:15;11274:12;11287:1;11274:15;;;;;;;;:::i;:::-;;;;;;;;;;11256:33;;11300:27;11330:6;:15;11337:7;11330:15;;;;;;;;;;;11300:45;;11415:9;:17;;;;;;;;;;;;11414:18;11406:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11539:22;11564:23;11579:7;11564:14;:23::i;:::-;11539:48;;11614:14;11598:30;;;;;:::i;:::-;;;11666:14;11639:9;:23;;;:41;;;;;;;:::i;:::-;;;;;;;;11733:14;11691:12;:38;11704:9;:24;;;11691:38;;;;;;;;;;;;:56;;;;;;;:::i;:::-;;;;;;;;11821:12;:10;:12::i;:::-;11807:43;;;11835:14;11807:43;;;;;;:::i;:::-;;;;;;;;11245:613;;;11240:3;;;;;:::i;:::-;;;;11195:663;;;;11923:5;;;;;;;;;;;:14;;;11938:12;:10;:12::i;:::-;11952;11923:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11905:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;12119:12;:10;:12::i;:::-;12105:41;;;12133:12;12105:41;;;;;;:::i;:::-;;;;;;;;11097:1053;;1932:20:::0;:18;:20::i;:::-;11039:1111::o;9896:1137::-;1888:21;:19;:21::i;:::-;9954:30:::1;9987:8;:22;9996:12;:10;:12::i;:::-;9987:22;;;;;;;;;;;;;;;9954:55;;10016:25;10055:9:::0;10067:1:::1;10055:13;;10050:564;10074:12;:19;;;;10070:1;:23;10050:564;;;10111:15;10129:12;10142:1;10129:15;;;;;;;;:::i;:::-;;;;;;;;;;10111:33;;10155:27;10185:6;:15;10192:7;10185:15;;;;;;;;;;;10155:45;;10271:9;:17;;;;;;;;;;;;10270:18;10262:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10381:9;:16;;;10360:37;;;;;:::i;:::-;;;10464:4;10444:9;:17;;;:24;;;;;;;;;;;;;;;;;;10539:12;:10;:12::i;:::-;10530:76;;;10553:9;:16;;;10571:9;:16;;;10589:9;:16;;;10530:76;;;;;;;;:::i;:::-;;;;;;;;10100:514;;10095:3;;;;;:::i;:::-;;;;10050:564;;;;10698:4;;;;;;;;;;;:13;;;10712:12;:10;:12::i;:::-;10726:17;10698:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10680:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;10858:17;10842:13;;:33;;;;:::i;:::-;10826:13;:49;;;;10909:17;10882:9;:23;10892:12;:10;:12::i;:::-;10882:23;;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;;;;;;;10997:12;:10;:12::i;:::-;10985:44;;;11011:17;10985:44;;;;;;:::i;:::-;;;;;;;;9947:1086;;1932:20:::0;:18;:20::i;:::-;9896:1137::o;3503:46::-;;;;;;;;;;;;;;;;;:::o;2860:19::-;;;;;;;;;;;;;:::o;5832:1062::-;1888:21;:19;:21::i;:::-;5932:13:::1;;5921:7;:24;;5899:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;6050:27;6080:6;:15;6087:7;6080:15;;;;;;;;;;;6050:45;;6144:9;:21;;;;;;;;;;;;6128:37;;:12;:10;:12::i;:::-;:37;;;6106:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;6255:9;:17;;;;;;;;;;;;6254:18;6246:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6364:9;:17;;;6345:15;:36;;6323:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;6476:13;6492:9;:16;;;6476:32;;6546:9;:16;;;6519:9;:23;6529:12;:10;:12::i;:::-;6519:23;;;;;;;;;;;;;;;;:43;;;;;;;:::i;:::-;;;;;;;;6605:9;:16;;;6589:13;;:32;;;;:::i;:::-;6573:13;:48;;;;6653:4;6633:9;:17;;;:24;;;;;;;;;;;;;;;;;;6692:4;;;;;;;;;;;:13;;;6714:12;:10;:12::i;:::-;6729:5;6692:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6670:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;6841:12;:10;:12::i;:::-;6832:54;;;6855:9;:16;;;6873:5;6880;6832:54;;;;;;;;:::i;:::-;;;;;;;;5888:1006;;1932:20:::0;:18;:20::i;:::-;5832:1062;:::o;2835:18::-;;;;;;;;;;;;;:::o;3029:28::-;;;;:::o;9159:127::-;9223:4;830:13;:11;:13::i;:::-;9250:6:::1;9240:7;;:16;;;;;;;;;;;;;;;;;;9274:4;9267:11;;9159:127:::0;;;:::o;3117:44::-;;;;;;;;;;;;;;;;;:::o;1089:97::-;830:13;:11;:13::i;:::-;1148:30:::1;1175:1;1148:18;:30::i;:::-;1089:97::o:0;3396:46::-;;;;;;;;;;;;;;;;;:::o;4255:1569::-;4332:21;4356:8;:25;4365:15;4356:25;;;;;;;;;;;4332:49;;4436:1;4414:4;:19;;;:23;4392:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;4522:7;;;;;;;;;;;4514:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4599:1;4589:7;:11;4581:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;4680:4;;;;;;;;;;;:17;;;4698:12;:10;:12::i;:::-;4720:4;4727:7;4680:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4658:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;4858:250;;;;;;;;4882:12;:10;:12::i;:::-;4858:250;;;;;;4909:7;4858:250;;;;4931:4;:19;;;4858:250;;;;4965:4;:14;;;4858:250;;;;4994:15;4858:250;;;;5042:4;:19;;;5024:15;:37;;;;:::i;:::-;4858:250;;;;5076:1;4858:250;;;;5092:5;4858:250;;;;;4832:6;:23;4841:13;;4839:15;;;;;:::i;:::-;;;;;;;4832:23;;;;;;;;;;;:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5126:9;:21;5136:10;5126:21;;;;;;;;;;;;;;;:38;5148:15;5126:38;;;;;;;;;;;;;;;;;;;;;5121:181;;5243:1;5212:11;:28;5224:15;5212:28;;;;;;;;;;;;:32;;;;:::i;:::-;5181:11;:28;5193:15;5181:28;;;;;;;;;;;:63;;;;5289:1;5274:12;;:16;;;;:::i;:::-;5259:12;:31;;;;5121:181;5392:4;5351:9;:21;5361:10;5351:21;;;;;;;;;;;;;;;:38;5373:15;5351:38;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;5469:7;5438:11;:28;5450:15;5438:28;;;;;;;;;;;;:38;;;;:::i;:::-;5407:11;:28;5419:15;5407:28;;;;;;;;;;;:69;;;;5515:7;5501:11;;:21;;;;:::i;:::-;5487:11;:35;;;;5565:7;5549:13;;:23;;;;:::i;:::-;5533:13;:39;;;;5610:7;5583:9;:23;5593:12;:10;:12::i;:::-;5583:23;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;5628:8;:22;5637:12;:10;:12::i;:::-;5628:22;;;;;;;;;;;;;;;5656:13;;5628:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5735:4;:19;;;5708:12;:10;:12::i;:::-;5686:130;;;5769:7;5791:4;:14;;;5686:130;;;;;;;:::i;:::-;;;;;;;;4321:1503;4255:1569;;:::o;7952:1082::-;8014:7;8067:13;;8056:7;:24;;8034:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;8185:27;8215:6;:15;8222:7;8215:15;;;;;;;;;;;8185:45;;8246:9;:17;;;;;;;;;;;;8241:786;;8303:9;:17;;;8284:15;:36;8280:695;;8341:11;8398:3;8375:9;:19;;;8356:9;:16;;;:38;;;;:::i;:::-;8355:46;;;;:::i;:::-;8341:60;;8420:14;2819:8;8444:9;:24;;;8438:3;:30;;;;:::i;:::-;8437:43;;;;:::i;:::-;8420:60;;8499:22;8533:9;:23;;;8524:6;:32;;;;:::i;:::-;8499:57;;8582:14;8575:21;;;;;;;;8280:695;8637:17;8675:9;:19;;;8657:15;:37;;;;:::i;:::-;8637:57;;8713:11;8770:3;8747:9;:19;;;8728:9;:16;;;:38;;;;:::i;:::-;8727:46;;;;:::i;:::-;8713:60;;8792:14;2819:8;8816:9;8810:3;:15;;;;:::i;:::-;8809:28;;;;:::i;:::-;8792:45;;8856:25;8893:9;:23;;;8884:6;:32;;;;:::i;:::-;8856:60;;8942:17;8935:24;;;;;;;;;8241:786;9014:1;9007:8;;;7952:1082;;;;:::o;2996:26::-;;;;:::o;2962:27::-;;;;:::o;871:79::-;909:7;936:6;;;;;;;;;;;929:13;;871:79;:::o;3225:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9294:202::-;9388:20;9426;9449:8;:18;9458:8;9449:18;;;;;;;;;;;;;;;9426:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9485:3;9478:10;;;9294:202;;;:::o;9042:109::-;830:13;:11;:13::i;:::-;9135:8:::1;9111;:11;9120:1;9111:11;;;;;;;;;;;:21;;:32;;;;9042:109:::0;:::o;3328:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12154:373::-;12224:7;12240:30;12273:8;:14;12282:4;12273:14;;;;;;;;;;;;;;;12240:47;;12294:27;12335:9;12347:1;12335:13;;12330:159;12354:12;:19;;;;12350:1;:23;12330:159;;;12391:15;12409:12;12422:1;12409:15;;;;;;;;:::i;:::-;;;;;;;;;;12391:33;;12458:23;12473:7;12458:14;:23::i;:::-;12435:46;;;;;:::i;:::-;;;12380:109;12375:3;;;;;:::i;:::-;;;;12330:159;;;;12504:19;12497:26;;;;12154:373;;;:::o;1194:232::-;830:13;:11;:13::i;:::-;1311:1:::1;1291:22;;:8;:22;;::::0;1269:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1390:28;1409:8;1390:18;:28::i;:::-;1194:232:::0;:::o;9504:383::-;830:13;:11;:13::i;:::-;9573:21:::1;9604:6;9573:38;;9622:15;9640:14;:24;;;9673:4;9640:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9622:57;;9690:21;9724:13;;9714:7;:23;;;;:::i;:::-;9690:47;;9771:14;:23;;;9795:10;9807:13;9771:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9749:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;9562:325;;;9504:383:::0;:::o;3168:50::-;;;;;;;;;;;;;;;;;:::o;3066:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1968:152::-;1748:1;2026:7;;:19;2018:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1748:1;2094:7;:18;;;;1968:152::o;436:90::-;481:7;508:10;501:17;;436:90;:::o;2128:79::-;1704:1;2177:7;:22;;;;2128:79::o;958:123::-;1024:12;:10;:12::i;:::-;1013:23;;:7;:5;:7::i;:::-;:23;;;1005:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;958:123::o;1434:182::-;1499:16;1518:6;;;;;;;;;;;1499:25;;1544:8;1535:6;;:17;;;;;;;;;;;;;;;;;;1599:8;1568:40;;1589:8;1568:40;;;;;;;;;;;;1488:128;1434:182;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:222::-;1242:4;1280:2;1269:9;1265:18;1257:26;;1293:71;1361:1;1350:9;1346:17;1337:6;1293:71;:::i;:::-;1149:222;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:60::-;1537:3;1558:5;1551:12;;1509:60;;;:::o;1575:142::-;1625:9;1658:53;1676:34;1685:24;1703:5;1685:24;:::i;:::-;1676:34;:::i;:::-;1658:53;:::i;:::-;1645:66;;1575:142;;;:::o;1723:126::-;1773:9;1806:37;1837:5;1806:37;:::i;:::-;1793:50;;1723:126;;;:::o;1855:139::-;1918:9;1951:37;1982:5;1951:37;:::i;:::-;1938:50;;1855:139;;;:::o;2000:157::-;2100:50;2144:5;2100:50;:::i;:::-;2095:3;2088:63;2000:157;;:::o;2163:248::-;2269:4;2307:2;2296:9;2292:18;2284:26;;2320:84;2401:1;2390:9;2386:17;2377:6;2320:84;:::i;:::-;2163:248;;;;:::o;2417:90::-;2451:7;2494:5;2487:13;2480:21;2469:32;;2417:90;;;:::o;2513:116::-;2583:21;2598:5;2583:21;:::i;:::-;2576:5;2573:32;2563:60;;2619:1;2616;2609:12;2563:60;2513:116;:::o;2635:133::-;2678:5;2716:6;2703:20;2694:29;;2732:30;2756:5;2732:30;:::i;:::-;2635:133;;;;:::o;2774:323::-;2830:6;2879:2;2867:9;2858:7;2854:23;2850:32;2847:119;;;2885:79;;:::i;:::-;2847:119;3005:1;3030:50;3072:7;3063:6;3052:9;3048:22;3030:50;:::i;:::-;3020:60;;2976:114;2774:323;;;;:::o;3103:109::-;3184:21;3199:5;3184:21;:::i;:::-;3179:3;3172:34;3103:109;;:::o;3218:210::-;3305:4;3343:2;3332:9;3328:18;3320:26;;3356:65;3418:1;3407:9;3403:17;3394:6;3356:65;:::i;:::-;3218:210;;;;:::o;3434:96::-;3471:7;3500:24;3518:5;3500:24;:::i;:::-;3489:35;;3434:96;;;:::o;3536:122::-;3609:24;3627:5;3609:24;:::i;:::-;3602:5;3599:35;3589:63;;3648:1;3645;3638:12;3589:63;3536:122;:::o;3664:139::-;3710:5;3748:6;3735:20;3726:29;;3764:33;3791:5;3764:33;:::i;:::-;3664:139;;;;:::o;3809:329::-;3868:6;3917:2;3905:9;3896:7;3892:23;3888:32;3885:119;;;3923:79;;:::i;:::-;3885:119;4043:1;4068:53;4113:7;4104:6;4093:9;4089:22;4068:53;:::i;:::-;4058:63;;4014:117;3809:329;;;;:::o;4144:474::-;4212:6;4220;4269:2;4257:9;4248:7;4244:23;4240:32;4237:119;;;4275:79;;:::i;:::-;4237:119;4395:1;4420:53;4465:7;4456:6;4445:9;4441:22;4420:53;:::i;:::-;4410:63;;4366:117;4522:2;4548:53;4593:7;4584:6;4573:9;4569:22;4548:53;:::i;:::-;4538:63;;4493:118;4144:474;;;;;:::o;4624:118::-;4711:24;4729:5;4711:24;:::i;:::-;4706:3;4699:37;4624:118;;:::o;4748:222::-;4841:4;4879:2;4868:9;4864:18;4856:26;;4892:71;4960:1;4949:9;4945:17;4936:6;4892:71;:::i;:::-;4748:222;;;;:::o;4976:985::-;5259:4;5297:3;5286:9;5282:19;5274:27;;5311:71;5379:1;5368:9;5364:17;5355:6;5311:71;:::i;:::-;5392:72;5460:2;5449:9;5445:18;5436:6;5392:72;:::i;:::-;5474;5542:2;5531:9;5527:18;5518:6;5474:72;:::i;:::-;5556;5624:2;5613:9;5609:18;5600:6;5556:72;:::i;:::-;5638:73;5706:3;5695:9;5691:19;5682:6;5638:73;:::i;:::-;5721;5789:3;5778:9;5774:19;5765:6;5721:73;:::i;:::-;5804;5872:3;5861:9;5857:19;5848:6;5804:73;:::i;:::-;5887:67;5949:3;5938:9;5934:19;5925:6;5887:67;:::i;:::-;4976:985;;;;;;;;;;;:::o;5967:114::-;6034:6;6068:5;6062:12;6052:22;;5967:114;;;:::o;6087:184::-;6186:11;6220:6;6215:3;6208:19;6260:4;6255:3;6251:14;6236:29;;6087:184;;;;:::o;6277:132::-;6344:4;6367:3;6359:11;;6397:4;6392:3;6388:14;6380:22;;6277:132;;;:::o;6415:108::-;6492:24;6510:5;6492:24;:::i;:::-;6487:3;6480:37;6415:108;;:::o;6529:179::-;6598:10;6619:46;6661:3;6653:6;6619:46;:::i;:::-;6697:4;6692:3;6688:14;6674:28;;6529:179;;;;:::o;6714:113::-;6784:4;6816;6811:3;6807:14;6799:22;;6714:113;;;:::o;6863:732::-;6982:3;7011:54;7059:5;7011:54;:::i;:::-;7081:86;7160:6;7155:3;7081:86;:::i;:::-;7074:93;;7191:56;7241:5;7191:56;:::i;:::-;7270:7;7301:1;7286:284;7311:6;7308:1;7305:13;7286:284;;;7387:6;7381:13;7414:63;7473:3;7458:13;7414:63;:::i;:::-;7407:70;;7500:60;7553:6;7500:60;:::i;:::-;7490:70;;7346:224;7333:1;7330;7326:9;7321:14;;7286:284;;;7290:14;7586:3;7579:10;;6987:608;;;6863:732;;;;:::o;7601:373::-;7744:4;7782:2;7771:9;7767:18;7759:26;;7831:9;7825:4;7821:20;7817:1;7806:9;7802:17;7795:47;7859:108;7962:4;7953:6;7859:108;:::i;:::-;7851:116;;7601:373;;;;:::o;7980:474::-;8048:6;8056;8105:2;8093:9;8084:7;8080:23;8076:32;8073:119;;;8111:79;;:::i;:::-;8073:119;8231:1;8256:53;8301:7;8292:6;8281:9;8277:22;8256:53;:::i;:::-;8246:63;;8202:117;8358:2;8384:53;8429:7;8420:6;8409:9;8405:22;8384:53;:::i;:::-;8374:63;;8329:118;7980:474;;;;;:::o;8460:332::-;8581:4;8619:2;8608:9;8604:18;8596:26;;8632:71;8700:1;8689:9;8685:17;8676:6;8632:71;:::i;:::-;8713:72;8781:2;8770:9;8766:18;8757:6;8713:72;:::i;:::-;8460:332;;;;;:::o;8798:169::-;8882:11;8916:6;8911:3;8904:19;8956:4;8951:3;8947:14;8932:29;;8798:169;;;;:::o;8973:251::-;9113:34;9109:1;9101:6;9097:14;9090:58;9182:34;9177:2;9169:6;9165:15;9158:59;8973:251;:::o;9230:366::-;9372:3;9393:67;9457:2;9452:3;9393:67;:::i;:::-;9386:74;;9469:93;9558:3;9469:93;:::i;:::-;9587:2;9582:3;9578:12;9571:19;;9230:366;;;:::o;9602:419::-;9768:4;9806:2;9795:9;9791:18;9783:26;;9855:9;9849:4;9845:20;9841:1;9830:9;9826:17;9819:47;9883:131;10009:4;9883:131;:::i;:::-;9875:139;;9602:419;;;:::o;10027:229::-;10167:34;10163:1;10155:6;10151:14;10144:58;10236:12;10231:2;10223:6;10219:15;10212:37;10027:229;:::o;10262:366::-;10404:3;10425:67;10489:2;10484:3;10425:67;:::i;:::-;10418:74;;10501:93;10590:3;10501:93;:::i;:::-;10619:2;10614:3;10610:12;10603:19;;10262:366;;;:::o;10634:419::-;10800:4;10838:2;10827:9;10823:18;10815:26;;10887:9;10881:4;10877:20;10873:1;10862:9;10858:17;10851:47;10915:131;11041:4;10915:131;:::i;:::-;10907:139;;10634:419;;;:::o;11059:222::-;11199:34;11195:1;11187:6;11183:14;11176:58;11268:5;11263:2;11255:6;11251:15;11244:30;11059:222;:::o;11287:366::-;11429:3;11450:67;11514:2;11509:3;11450:67;:::i;:::-;11443:74;;11526:93;11615:3;11526:93;:::i;:::-;11644:2;11639:3;11635:12;11628:19;;11287:366;;;:::o;11659:419::-;11825:4;11863:2;11852:9;11848:18;11840:26;;11912:9;11906:4;11902:20;11898:1;11887:9;11883:17;11876:47;11940:131;12066:4;11940:131;:::i;:::-;11932:139;;11659:419;;;:::o;12084:180::-;12132:77;12129:1;12122:88;12229:4;12226:1;12219:15;12253:4;12250:1;12243:15;12270:191;12310:3;12329:20;12347:1;12329:20;:::i;:::-;12324:25;;12363:20;12381:1;12363:20;:::i;:::-;12358:25;;12406:1;12403;12399:9;12392:16;;12427:3;12424:1;12421:10;12418:36;;;12434:18;;:::i;:::-;12418:36;12270:191;;;;:::o;12467:332::-;12588:4;12626:2;12615:9;12611:18;12603:26;;12639:71;12707:1;12696:9;12692:17;12683:6;12639:71;:::i;:::-;12720:72;12788:2;12777:9;12773:18;12764:6;12720:72;:::i;:::-;12467:332;;;;;:::o;12805:137::-;12859:5;12890:6;12884:13;12875:22;;12906:30;12930:5;12906:30;:::i;:::-;12805:137;;;;:::o;12948:345::-;13015:6;13064:2;13052:9;13043:7;13039:23;13035:32;13032:119;;;13070:79;;:::i;:::-;13032:119;13190:1;13215:61;13268:7;13259:6;13248:9;13244:22;13215:61;:::i;:::-;13205:71;;13161:125;12948:345;;;;:::o;13299:246::-;13439:34;13435:1;13427:6;13423:14;13416:58;13508:29;13503:2;13495:6;13491:15;13484:54;13299:246;:::o;13551:366::-;13693:3;13714:67;13778:2;13773:3;13714:67;:::i;:::-;13707:74;;13790:93;13879:3;13790:93;:::i;:::-;13908:2;13903:3;13899:12;13892:19;;13551:366;;;:::o;13923:419::-;14089:4;14127:2;14116:9;14112:18;14104:26;;14176:9;14170:4;14166:20;14162:1;14151:9;14147:17;14140:47;14204:131;14330:4;14204:131;:::i;:::-;14196:139;;13923:419;;;:::o;14348:180::-;14396:77;14393:1;14386:88;14493:4;14490:1;14483:15;14517:4;14514:1;14507:15;14534:221;14674:34;14670:1;14662:6;14658:14;14651:58;14743:4;14738:2;14730:6;14726:15;14719:29;14534:221;:::o;14761:366::-;14903:3;14924:67;14988:2;14983:3;14924:67;:::i;:::-;14917:74;;15000:93;15089:3;15000:93;:::i;:::-;15118:2;15113:3;15109:12;15102:19;;14761:366;;;:::o;15133:419::-;15299:4;15337:2;15326:9;15322:18;15314:26;;15386:9;15380:4;15376:20;15372:1;15361:9;15357:17;15350:47;15414:131;15540:4;15414:131;:::i;:::-;15406:139;;15133:419;;;:::o;15558:233::-;15597:3;15620:24;15638:5;15620:24;:::i;:::-;15611:33;;15666:66;15659:5;15656:77;15653:103;;15736:18;;:::i;:::-;15653:103;15783:1;15776:5;15772:13;15765:20;;15558:233;;;:::o;15797:442::-;15946:4;15984:2;15973:9;15969:18;15961:26;;15997:71;16065:1;16054:9;16050:17;16041:6;15997:71;:::i;:::-;16078:72;16146:2;16135:9;16131:18;16122:6;16078:72;:::i;:::-;16160;16228:2;16217:9;16213:18;16204:6;16160:72;:::i;:::-;15797:442;;;;;;:::o;16245:240::-;16385:34;16381:1;16373:6;16369:14;16362:58;16454:23;16449:2;16441:6;16437:15;16430:48;16245:240;:::o;16491:366::-;16633:3;16654:67;16718:2;16713:3;16654:67;:::i;:::-;16647:74;;16730:93;16819:3;16730:93;:::i;:::-;16848:2;16843:3;16839:12;16832:19;;16491:366;;;:::o;16863:419::-;17029:4;17067:2;17056:9;17052:18;17044:26;;17116:9;17110:4;17106:20;17102:1;17091:9;17087:17;17080:47;17144:131;17270:4;17144:131;:::i;:::-;17136:139;;16863:419;;;:::o;17288:194::-;17328:4;17348:20;17366:1;17348:20;:::i;:::-;17343:25;;17382:20;17400:1;17382:20;:::i;:::-;17377:25;;17426:1;17423;17419:9;17411:17;;17450:1;17444:4;17441:11;17438:37;;;17455:18;;:::i;:::-;17438:37;17288:194;;;;:::o;17488:243::-;17628:34;17624:1;17616:6;17612:14;17605:58;17697:26;17692:2;17684:6;17680:15;17673:51;17488:243;:::o;17737:366::-;17879:3;17900:67;17964:2;17959:3;17900:67;:::i;:::-;17893:74;;17976:93;18065:3;17976:93;:::i;:::-;18094:2;18089:3;18085:12;18078:19;;17737:366;;;:::o;18109:419::-;18275:4;18313:2;18302:9;18298:18;18290:26;;18362:9;18356:4;18352:20;18348:1;18337:9;18333:17;18326:47;18390:131;18516:4;18390:131;:::i;:::-;18382:139;;18109:419;;;:::o;18534:225::-;18674:34;18670:1;18662:6;18658:14;18651:58;18743:8;18738:2;18730:6;18726:15;18719:33;18534:225;:::o;18765:366::-;18907:3;18928:67;18992:2;18987:3;18928:67;:::i;:::-;18921:74;;19004:93;19093:3;19004:93;:::i;:::-;19122:2;19117:3;19113:12;19106:19;;18765:366;;;:::o;19137:419::-;19303:4;19341:2;19330:9;19326:18;19318:26;;19390:9;19384:4;19380:20;19376:1;19365:9;19361:17;19354:47;19418:131;19544:4;19418:131;:::i;:::-;19410:139;;19137:419;;;:::o;19562:223::-;19702:34;19698:1;19690:6;19686:14;19679:58;19771:6;19766:2;19758:6;19754:15;19747:31;19562:223;:::o;19791:366::-;19933:3;19954:67;20018:2;20013:3;19954:67;:::i;:::-;19947:74;;20030:93;20119:3;20030:93;:::i;:::-;20148:2;20143:3;20139:12;20132:19;;19791:366;;;:::o;20163:419::-;20329:4;20367:2;20356:9;20352:18;20344:26;;20416:9;20410:4;20406:20;20402:1;20391:9;20387:17;20380:47;20444:131;20570:4;20444:131;:::i;:::-;20436:139;;20163:419;;;:::o;20588:229::-;20728:34;20724:1;20716:6;20712:14;20705:58;20797:12;20792:2;20784:6;20780:15;20773:37;20588:229;:::o;20823:366::-;20965:3;20986:67;21050:2;21045:3;20986:67;:::i;:::-;20979:74;;21062:93;21151:3;21062:93;:::i;:::-;21180:2;21175:3;21171:12;21164:19;;20823:366;;;:::o;21195:419::-;21361:4;21399:2;21388:9;21384:18;21376:26;;21448:9;21442:4;21438:20;21434:1;21423:9;21419:17;21412:47;21476:131;21602:4;21476:131;:::i;:::-;21468:139;;21195:419;;;:::o;21620:442::-;21769:4;21807:2;21796:9;21792:18;21784:26;;21820:71;21888:1;21877:9;21873:17;21864:6;21820:71;:::i;:::-;21901:72;21969:2;21958:9;21954:18;21945:6;21901:72;:::i;:::-;21983;22051:2;22040:9;22036:18;22027:6;21983:72;:::i;:::-;21620:442;;;;;;:::o;22068:243::-;22208:34;22204:1;22196:6;22192:14;22185:58;22277:26;22272:2;22264:6;22260:15;22253:51;22068:243;:::o;22317:366::-;22459:3;22480:67;22544:2;22539:3;22480:67;:::i;:::-;22473:74;;22556:93;22645:3;22556:93;:::i;:::-;22674:2;22669:3;22665:12;22658:19;;22317:366;;;:::o;22689:419::-;22855:4;22893:2;22882:9;22878:18;22870:26;;22942:9;22936:4;22932:20;22928:1;22917:9;22913:17;22906:47;22970:131;23096:4;22970:131;:::i;:::-;22962:139;;22689:419;;;:::o;23114:410::-;23154:7;23177:20;23195:1;23177:20;:::i;:::-;23172:25;;23211:20;23229:1;23211:20;:::i;:::-;23206:25;;23266:1;23263;23259:9;23288:30;23306:11;23288:30;:::i;:::-;23277:41;;23467:1;23458:7;23454:15;23451:1;23448:22;23428:1;23421:9;23401:83;23378:139;;23497:18;;:::i;:::-;23378:139;23162:362;23114:410;;;;:::o;23530:180::-;23578:77;23575:1;23568:88;23675:4;23672:1;23665:15;23699:4;23696:1;23689:15;23716:185;23756:1;23773:20;23791:1;23773:20;:::i;:::-;23768:25;;23807:20;23825:1;23807:20;:::i;:::-;23802:25;;23846:1;23836:35;;23851:18;;:::i;:::-;23836:35;23893:1;23890;23886:9;23881:14;;23716:185;;;;:::o;23907:225::-;24047:34;24043:1;24035:6;24031:14;24024:58;24116:8;24111:2;24103:6;24099:15;24092:33;23907:225;:::o;24138:366::-;24280:3;24301:67;24365:2;24360:3;24301:67;:::i;:::-;24294:74;;24377:93;24466:3;24377:93;:::i;:::-;24495:2;24490:3;24486:12;24479:19;;24138:366;;;:::o;24510:419::-;24676:4;24714:2;24703:9;24699:18;24691:26;;24763:9;24757:4;24753:20;24749:1;24738:9;24734:17;24727:47;24791:131;24917:4;24791:131;:::i;:::-;24783:139;;24510:419;;;:::o;24935:143::-;24992:5;25023:6;25017:13;25008:22;;25039:33;25066:5;25039:33;:::i;:::-;24935:143;;;;:::o;25084:351::-;25154:6;25203:2;25191:9;25182:7;25178:23;25174:32;25171:119;;;25209:79;;:::i;:::-;25171:119;25329:1;25354:64;25410:7;25401:6;25390:9;25386:22;25354:64;:::i;:::-;25344:74;;25300:128;25084:351;;;;:::o;25441:180::-;25581:32;25577:1;25569:6;25565:14;25558:56;25441:180;:::o;25627:366::-;25769:3;25790:67;25854:2;25849:3;25790:67;:::i;:::-;25783:74;;25866:93;25955:3;25866:93;:::i;:::-;25984:2;25979:3;25975:12;25968:19;;25627:366;;;:::o;25999:419::-;26165:4;26203:2;26192:9;26188:18;26180:26;;26252:9;26246:4;26242:20;26238:1;26227:9;26223:17;26216:47;26280:131;26406:4;26280:131;:::i;:::-;26272:139;;25999:419;;;:::o;26424:181::-;26564:33;26560:1;26552:6;26548:14;26541:57;26424:181;:::o;26611:366::-;26753:3;26774:67;26838:2;26833:3;26774:67;:::i;:::-;26767:74;;26850:93;26939:3;26850:93;:::i;:::-;26968:2;26963:3;26959:12;26952:19;;26611:366;;;:::o;26983:419::-;27149:4;27187:2;27176:9;27172:18;27164:26;;27236:9;27230:4;27226:20;27222:1;27211:9;27207:17;27200:47;27264:131;27390:4;27264:131;:::i;:::-;27256:139;;26983:419;;;:::o;27408:182::-;27548:34;27544:1;27536:6;27532:14;27525:58;27408:182;:::o;27596:366::-;27738:3;27759:67;27823:2;27818:3;27759:67;:::i;:::-;27752:74;;27835:93;27924:3;27835:93;:::i;:::-;27953:2;27948:3;27944:12;27937:19;;27596:366;;;:::o;27968:419::-;28134:4;28172:2;28161:9;28157:18;28149:26;;28221:9;28215:4;28211:20;28207:1;28196:9;28192:17;28185:47;28249:131;28375:4;28249:131;:::i;:::-;28241:139;;27968:419;;;:::o

Swarm Source

ipfs://6e11328c02599b01311e5bb6ebf8d7501139ebc78192763343a63d61c686d59f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.