Contract 0x369e556f0e7a08e781527d161dac867bb05fa597

Contract Overview

Balance:
0 AVAX

AVAX Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd97e88d7f0885b1cb31d3771262a08c74039f3de3ad7004a862c1e0a1d8ee2a1Compound277521322023-03-22 3:06:491 min ago0xa2e1fed6cc1f9d395259c0c11306129c1493e0d5 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.00245652615 26.41
0xac86565e06308655f24512ea937152eb9bf674b0d3cec16c3f8bb317d837be1eCompound277499812023-03-22 1:53:221 hr 14 mins ago0xb285e1564c3a4405034590505188b2c9b98bc5bd IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002545984534 27.423948535
0x54623cbcddec74fb9ccecb9257d6f4fa018c4649fa5358a68dff80c84752836eCompound277498382023-03-22 1:48:311 hr 19 mins ago0xbaf4c60eadc506d628dac94b10bf9166921b21a0 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002460207 26.5
0x591472df47557092018f71e28e0a76f14754dcb059072eb994b79a22f8acc7eeCompound277487652023-03-22 1:11:501 hr 56 mins ago0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002460207 26.5
0x22aec57ca90d2552820c7b218875d7055fcbdd24dcacc658b737a0eb65231bbbCompound277483142023-03-22 0:56:382 hrs 11 mins ago0x391d0d2ff715cfe1acc15fc4e05ff4cac9c81e00 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.00254608215 27.425
0x71e08eef1c747e90ec6369ebfb56849be64cd74fa9e14664a0698e17f07150b7Compound277481492023-03-22 0:51:062 hrs 17 mins ago0x54550b0be582d23b6f58e3b77e78ee3d95500aaa IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.00269230229
0xb7681b5beadfdd64911f6e900f31de52133681509829a812f5090dcfbd630589Compound277472702023-03-22 0:21:392 hrs 46 mins ago0x402fab3db1375eb40f0f3ee5d0ccd4c20d5a6365 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002583003822 27.8227
0xe139e5195c243d92d720d6e45d58b359133aab3e51a39c65b30a6b2689fcce22Compound277467702023-03-22 0:04:343 hrs 3 mins ago0x28c1451ab6fd875f33e583da87a18f9b84f6b18e IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002541579507 27.3765
0xf69035f8c5e7deffa043daaeb34ee1582d50f3af353d1e8192c8d88d586df58cCompound277467652023-03-22 0:04:233 hrs 3 mins ago0x51f268350a47024cf55a309607e17ba3d19a8b06 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002532776839 27.2816825
0x9afb4a7641adf11313112ec32e17ed89a69ad4b7d139d906a750937cca04a57fCompound277454752023-03-21 23:19:213 hrs 48 mins ago0x1fc7ba83e89bb974fe2d249dfa115a868dc864e5 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002532776839 27.2816825
0x9dfa2741a3554ff30b0c7eccbc98b5a51dc34f42bf346171b2f35ece2615caa8Deposit277444082023-03-21 22:42:454 hrs 25 mins ago0xae62a796d667e69393ba50aa2a8f91437e46320d IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.008714814825 27.425
0x1c88f3297badddff69891c0a7eb3530e05f1d3f618b7b12618dbb672e61cbabfCompound277440882023-03-21 22:32:024 hrs 36 mins ago0x5d8e982f221043e96abedb5357c89eb882fc8297 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002490066021 26.77058562
0x7274a8b74d4a531b37e1e4b9b1493273418559c08e4744063d6a8c67483eaea5Claim277427182023-03-21 21:44:595 hrs 23 mins ago0xb7c4d2c9851833e767c4841a5776b77095ad889b IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002230658044 27.35225
0xf6b275389e6ad88f02a5685a6648b7711b48d966e9cae2429e8cd75c203441b8Claim277426532023-03-21 21:42:415 hrs 25 mins ago0x15ef3708be7c8bfab5357be38acfb2159c625832 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.0017080045 26.5
0xb01a95861aa61ebb3700f164a2db695e28fb00eb9925c303b28b345c8c6b51c5Compound277422692023-03-21 21:29:445 hrs 38 mins ago0x68d27176a5a747b91854cb7e32313f958a814a4d IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.00173529 27
0xb33b73a7310165eac89af685ebdf3bb91448f1aa06c3f850407966b1693dba21Claim277419392023-03-21 21:18:265 hrs 49 mins ago0xa8aeed0a09d1678474818d25f5ebba84d4de8369 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.0021611545 26.5
0x41a7ea6c9b6f6bb9f70a0bed674d49e86a98d545085b4c9ee431ea189a98cc37Claim277416362023-03-21 21:08:155 hrs 59 mins ago0xc9e166f2737e004e93800dcef0d608b014df07f6 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.0021611545 26.5
0xc05cc6316afab4a007b11d14014b6a1c100fe8816398da5b05175e19298ece2fCompound277416162023-03-21 21:07:356 hrs ago0x82edb79c4c7007eb1cf9d905332098c7822c7c13 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.00254608215 27.425
0xb89e3c6348dd24bb49302e165f741d42caa94e13c4e35ad90013f010094e8ed9Compound277415292023-03-21 21:04:436 hrs 3 mins ago0xcdcee3292d105fc7e86e578c35f83bfe800a7857 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002460207 26.5
0xec237e0a1cd98a08cbbcea63468e3f1da523796c36422db2c62f59ef73c8c959Compound277415032023-03-21 21:03:516 hrs 4 mins ago0xbb213bf6a83ff9c720c07b798e0b0e790be55939 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.00255304527.5
0xb858bf4bb688e719f477ca1dbe0e53a3b0d811118674e4ad383e8289c643392aCompound277393822023-03-21 19:51:287 hrs 16 mins ago0x27df6a45a1f5a4955194ae025c110054f8b74bc5 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002532776839 27.2816825
0x94fe5119d38b7f093cb80f0ed53a0868fc1387783b6891a202be3e3681fc1814Compound277390712023-03-21 19:41:007 hrs 27 mins ago0x71d75219cfa63d83b160bfc98acb1fe95ad1e4b7 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002762209014 29.753
0xd7a8ea05ef2888cde90bf84c20e81d53bd8e8c06b02c73e9346d02e4cc34a2ebCompound277390522023-03-21 19:40:227 hrs 27 mins ago0xcb221b1d0b347d53829e8dff0f705f275256b877 IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002801382008 30.174950001
0x43ae75caf3a6c089146aee0bd413759a7273da04c476bead300f18223f601f6fCompound277388072023-03-21 19:32:067 hrs 36 mins ago0xe9eed15dc9b5cdc63dc08b31873a0899d6c3f95a IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.002460207 26.5
0xdb3f201852134630609777ce13f9b89b1cc3aa4eaa80dcfce8dc543cfe360206Compound277381702023-03-21 19:10:127 hrs 57 mins ago0xfaf4faf993ad3257c4c8a7d26230fb25d4d948ba IN  0x369e556f0e7a08e781527d161dac867bb05fa5970 AVAX0.0027851430
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SodaPress

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-09-18
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity 0.8.14;

/**
 * @title Owner
 * @dev Set & change owner
 */
contract Ownable {

    address private owner;
    
    // event for EVM logging
    event OwnerSet(address indexed oldOwner, address indexed newOwner);
    
    // modifier to check if caller is owner
    modifier onlyOwner() {
        // If the first argument of 'require' evaluates to 'false', execution terminates and all
        // changes to the state and to Ether balances are reverted.
        // This used to consume all gas in old EVM versions, but not anymore.
        // It is often a good idea to use 'require' to check if functions are called correctly.
        // As a second argument, you can also provide an explanation about what went wrong.
        require(msg.sender == owner, "Caller is not owner");
        _;
    }
    
    /**
     * @dev Set contract deployer as owner
     */
    constructor() {
        owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor
        emit OwnerSet(address(0), owner);
    }

    /**
     * @dev Change owner
     * @param newOwner address of new owner
     */
    function changeOwner(address newOwner) public onlyOwner {
        emit OwnerSet(owner, newOwner);
        owner = newOwner;
    }

    /**
     * @dev Return owner address 
     * @return address of owner
     */
    function getOwner() external view returns (address) {
        return owner;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    
    function symbol() external view returns(string memory);
    
    function name() external view returns(string memory);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);
    
    /**
     * @dev Returns the number of decimal places
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface ILotto {
    function deposit(address token, uint256 amount) external;
    function register(address user, uint256 amount) external;
    function compoundoor(address user, uint256 amount) external;
}

interface IZapper {
    function zap(IERC20 token_, address ref, address sender, uint256 minOut) external;
}

contract SodaPress is Ownable {

    // Token
    IERC20 public immutable token;

    // Number Of Seconds To Recoup Balance
    uint256 public immutable nSeconds;

    // Fees
    uint256 public poolFee         = 900;
    uint256 public rewardFee       = 50;
    uint256 public referrerFee     = 15;
    uint256 public treasuryFee     = 5;
    uint256 public lottoFee        = 30;
    uint256 public claimFee        = 100;
    uint256 private constant DENOM = 1000;

    // External Addresses / Contracts
    address public treasury;
    ILotto public lotto;

    // Zapper For Zapping Tokens Into LP Tokens
    address public zapper;

    bool public compoundBonus = true;
    bool public claimPenalty = true;
    
    // Contract value tracking
    uint256 public totalShares;
    uint256 private constant precision = 10**18;

    // Maximum Profit Tracking
    uint256 public MAX_PROFIT = 35 * 10**17;

    // Partnership Wallet
    address public partnerAddress = 0xf29fD03Df2Cb7F81d8Ae4d10A76f8b1C898786BD;

    // User Data
    struct User {
        uint256 balance;              // shares of the system
        uint256 index;                // index in allUsers array
        uint256 totalTokenBalance;    // total tokens deposited
        uint256 totalShareBalance;    // total shares attributed
        uint256 trackedTokenBalance;  // tracked tokens deposited for profit calculation
        uint256 trackedShareBalance;  // tracked shares attributed for profit calculation
        uint256 claimPerSecond;       // tokens to claim per second
        uint256 lastClaim;            // last claim second
        uint256 profitsAssassinated;  // number of times user has assassinated another
        address referrer;             // referrer address
        uint256 referrerFees;         // total referrer fees gained by user
    }
    mapping ( address => User ) public userInfo;
    address[] public allUsers;
    address[] public allAssassins;

    // Data Tracking
    uint256 public totalDeposited;
    uint256 public totalReferrerFees;
    uint256 public totalRewards;

    // Function Events
    event Claim(address user, uint256 numTokens);
    event Compound(address user, uint256 pendingTokens);
    event Deposit(address user, uint256 numTokens, uint256 numShares);
    event Assassinated(address victim, address assassin, uint256 profitGained);

    // State Change Events
    event SetLotto(ILotto lotto_);
    event SetZapper(address zapper_);
    event SetTreasury(address treasury_);
    event SetMaxProfit(uint256 maxProfit);
    event FeesSet(uint poolFee, uint rewardFee, uint referr, uint treasury, uint lotto, uint claim);

    constructor(
        address token_,
        address treasury_,
        uint256 nDays_
    ) {
        require(
            token_ != address(0) &&
            nDays_ > 0,
            'Invalid Inputs'
        );

        token = IERC20(token_);
        treasury = treasury_;
        nSeconds = nDays_ * 86400;
    }

    ////////////////////////////////////////////////
    ///////////   RESTRICTED FUNCTIONS   ///////////
    ////////////////////////////////////////////////

    function setFees(
        uint poolFee_,
        uint rewardFee_,
        uint referrer_,
        uint treasury_,
        uint lotto_,
        uint claimFee_
    ) external onlyOwner {
        require(
            poolFee_ + rewardFee_ + referrer_ + treasury_ + lotto_ == DENOM,
            'Invalid Fees'
        );
        require(
            poolFee_ > 0 && rewardFee_ > 0 && treasury_ > 0 && lotto_ > 0,
            'Zero Checks'
        );
        require(
            claimFee_ <= 250,
            'Claim Fee Too High'
        );
        
        poolFee = poolFee_;
        rewardFee = rewardFee_;
        referrerFee = referrer_;
        treasuryFee = treasury_;
        lottoFee = lotto_;
        claimFee = claimFee_;

        emit FeesSet(poolFee_, rewardFee_, referrer_, treasury_, lotto_, claimFee_);
    }

    function setLotto(ILotto lotto_) external onlyOwner {
        require(
            address(lotto_) != address(0),
            'Zero Address'
        );
        lotto = lotto_;
        emit SetLotto(lotto_);
    }

    function setZapper(address zapper_) external onlyOwner {
        require(
            zapper_ != address(0),
            'Zero Address'
        );
        zapper = zapper_;
        emit SetZapper(zapper_);
    }

    function setTreasury(address treasury_) external onlyOwner {
        require(
            treasury_ != address(0),
            'Zero Address'
        );
        treasury = treasury_;
        emit SetTreasury(treasury_);
    }

    function setPartnerWallet(address partnerAddress_) external onlyOwner {
        require(
            partnerAddress_ != address(0),
            'Zero Address'
        );
        partnerAddress = partnerAddress_;
        emit SetTreasury(partnerAddress_);
    }

    function setMaxProfit(uint256 maxProfit) external onlyOwner {
        require(
            maxProfit >= 10**18,
            'Max Profit Too Low'
        );
        MAX_PROFIT = maxProfit;
        emit SetMaxProfit(maxProfit);
    }


    ////////////////////////////////////////////////
    ///////////     PUBLIC FUNCTIONS     ///////////
    ////////////////////////////////////////////////


    /**
        Deposits `amount` of Token into system, Must have prior `approval` from `msg.sender` to move Token
        Takes Fee Equal To `100 - poolFee`
            Reward Fee Inflates Daily Claim For Holders
            Treasury Fee Is Sent To The Treasury
            Lotto Fee Is Sent To Lottery Contract
            Referrer Fee Is Sent To the referrer for `msg.sender`
                if `ref` is not `msg.sender`, registers `ref` as `msg.sender`'s referrer
                if `msg.sender` already has a registered referrer, ref is not checked and can be arbitrary
                if no registered referrer, and `ref` is `msg.sender`, Referrer Fee is added to reward fee
     */
    function deposit(address ref, uint256 amount) external {
        _deposit(msg.sender, ref, amount);
    }

    /**
        Zaps `token` into LP Token Used By The Miner And Then Deposits.
        Deposits `amount` of Token into system, Must have prior `approval` from `msg.sender` to move Token
        Takes Fee Equal To `100 - poolFee`
            Reward Fee Inflates Daily Claim For Holders
            Treasury Fee Is Sent To The Treasury
            Lotto Fee Is Sent To Lottery Contract
            Referrer Fee Is Sent To the referrer for `msg.sender`
                if `ref` is not `msg.sender`, registers `ref` as `msg.sender`'s referrer
                if `msg.sender` already has a registered referrer, ref is not checked and can be arbitrary
                if no registered referrer, and `ref` is `msg.sender`, Referrer Fee is added to reward fee
     */
    function zapAndDeposit(address ref, IERC20 token_, uint256 amount, uint256 minOut) external {
        require(
            zapper != address(0),
            'Zero Zapper'
        );

        // transfer in tokens to zap
        _transferFrom(token_, zapper, amount);

        // zap tokens
        IZapper(zapper).zap(token_, ref, msg.sender, minOut);
    }

    function depositFor(address user, address ref, uint256 amount) external {
        require(
            msg.sender == zapper,
            'Only Zapper'
        );
        _deposit(user, ref, amount);
    }

    /**
        Adds Current Pending Balance To `msg.sender`'s tracked balance and shares
        Reduces their tracked profit so they do not get forced out,
        but forfeits the current pending rewards they have waiting
     */
    function compound() public {
        _compound(msg.sender);
    }

    /**
        Claims Pending Rewards, sending to caller
        Decrementing Shares and Balances
        Resetting the claim timer
     */
    function claim() external {
        _claim(msg.sender);
    }

    /**
        Forces `user` out of the system if they have exceeded the MAXIMUM_PROFIT
        Can be called by anyone for any user
        Caller gains the excess rewards from the MAXIMUM_PROFIT, incentivizing community
        To keep an eye on over-due members
     */
    function assassinate(address user) external {        
        require(
            user != address(0),
            'Zero Address'
        );

        require(
            userInfo[msg.sender].balance > 0,
            'Assassin must be active'
        );

        // calculate user's current profit
        uint currentProfit = calculateTrackedProfit(user);
        uint trackedBalance = userInfo[user].trackedTokenBalance;
        require(
            currentProfit > 0 && trackedBalance > 0,
            'Invalid User Data'
        );

        // ensure `user` is above profit ratio
        uint profitRatio = ( currentProfit * precision ) / trackedBalance;
        require(
            profitRatio >= MAX_PROFIT,
            'MAX PROFIT NOT REACHED'
        );

        // calculate profit for user if they stopped earning at MAX PROFIT
        uint expectedProfit = ( trackedBalance * MAX_PROFIT ) / precision;
        require(
            expectedProfit <= currentProfit,
            'Not over Maximum Profit'   
        );

        // find difference in profit
        uint profitDifference = currentProfit - expectedProfit;

        // remove profit from user
        uint userShares = userInfo[user].balance;
        uint userTokens = valueOf(userShares);
        require(
            userShares > 0 && userTokens > 0 && userTokens >= profitDifference,
            'Something Went Wrong'
        );

        // update state
        totalShares -= userShares;
        _removeUser(user);

        // tokens to send to user
        uint256 adjustedUserTokens = adjustWithClaimFee(userTokens - profitDifference);
        uint256 adjustedProfitDifference = adjustWithClaimFee(profitDifference);

        // send tokens to user
        _send(user, adjustedUserTokens);

        // send bounty to caller
        _send(msg.sender, adjustedProfitDifference);

        // add to assassin array if new assassin
        if (userInfo[msg.sender].profitsAssassinated == 0) {
            allAssassins.push(msg.sender);
        }

        // update assassin tracker
        userInfo[msg.sender].profitsAssassinated += profitDifference;
        emit Assassinated(user, msg.sender, profitDifference);
    }


    ////////////////////////////////////////////////
    ///////////     READ FUNCTIONS       ///////////
    ////////////////////////////////////////////////


    function calculatePrice() public view returns (uint256) {
        uint shares  = totalShares == 0 ? 1 : totalShares;
        uint backing = token.balanceOf(address(this));
        return ( backing * precision ) / shares;
    }

    function calculateTrackedProfitRatio(address user) public view returns (uint256) {
        uint currentProfit = calculateTrackedProfit(user);
        uint trackedBalance = userInfo[user].trackedTokenBalance;
        if (currentProfit == 0 || trackedBalance == 0) {
            return 0;
        }

        // profit percentage = profit / trackedBalance I.E. 600 tokens profit / 200 tokens staked = 3x profit
        return ( currentProfit * precision ) / trackedBalance;
    }

    function calculateTrackedProfit(address user) public view returns (uint256) {
        uint tokens = userInfo[user].trackedTokenBalance;
        uint current_tokens = valueOf(userInfo[user].trackedShareBalance);
        return tokens < current_tokens ? current_tokens - tokens : 0;
    }

    function calculateProfit(address user) public view returns (uint256) {
        uint tokens = userInfo[user].totalTokenBalance;
        uint current_tokens = valueOf(userInfo[user].totalShareBalance);
        return tokens < current_tokens ? current_tokens - tokens : 0;
    }

    function valueOf(uint balance) public view returns (uint256) {
        return ( balance * calculatePrice() ) / precision;
    }

    function valueOfAccount(address account) public view returns (uint256) {
        return valueOf(userInfo[account].balance);
    }

    function rewardsPerDay(address user) public view returns (uint256) {
        return valueOf(userInfo[user].claimPerSecond) * 86400;
    }

    function pendingRewards(address user) public view returns (uint256) {
        return valueOf(pendingShares(user));
    }

    function pendingShares(address user) public view returns (uint256) {
        
        if (userInfo[user].balance == 0 || userInfo[user].lastClaim >= block.timestamp) {
            return 0;
        }

        // difference in blocks
        uint diff = block.timestamp - userInfo[user].lastClaim;

        // shares to claim
        uint toClaim = diff * userInfo[user].claimPerSecond;

        return toClaim > userInfo[user].balance ? userInfo[user].balance : toClaim;
    }

    function fetchAllUsers() external view returns (address[] memory) {
        return allUsers;
    }

    function fetchAllAssassins() external view returns (address[] memory) {
        return allAssassins;
    }

    function fetchAllUsersNearAssassination(uint256 threshold) external view returns (address[] memory) {
        uint length = allUsers.length;
        uint count = 0;
        uint profitThreshold = ( MAX_PROFIT * threshold / 1000 );
        
        for (uint i = 0; i < length;) {
            if ( calculateTrackedProfitRatio(allUsers[i]) >= profitThreshold ) {
                count++;
            }
            unchecked { ++i; }
        }
        
        address[] memory usersNearAssassination = new address[](count);
        if (count == 0) {
            return usersNearAssassination;
        }

        uint index = 0;
        for (uint i = 0; i < length;) {
            if ( calculateTrackedProfitRatio(allUsers[i]) >= profitThreshold ) {
                usersNearAssassination[index] = allUsers[i];
                index++;
            }
            unchecked { ++i; }
        }
        return usersNearAssassination;
    }

    ////////////////////////////////////////////////
    ///////////    INTERNAL FUNCTIONS    ///////////
    ////////////////////////////////////////////////

    
    function _deposit(address user, address ref, uint256 amount) internal {
        require(
            ref != address(0) &&
            amount > 0,
            'Zero Amount'
        );

        // claim pending shares if any exist
        if (pendingShares(user) > 0) {
            _compound(user);
        }

        // if first deposit
        uint previousBalance = token.balanceOf(address(this));

        // add user if first time depositing, else compound pending rewards
        if (userInfo[user].balance == 0) {
            _addUser(user);
        }

        // transfer in tokens
        uint received = _transferFrom(token, address(this), amount);
        totalDeposited += received;

        // split up amounts
        uint forPool     = (received * poolFee) / DENOM;
        uint forRewards  = (received * rewardFee) / DENOM;
        uint forTreasury = (received * treasuryFee) / DENOM;
        uint forLotto    = (received * lottoFee) / DENOM;
        uint forReferrer = received - ( forPool + forRewards + forTreasury + forLotto );        

        // deposit fees
        _takeFee(forLotto, forTreasury);

        // register buy within lottery
        lotto.register(user, received);

        // register referrer
        _addReferrerReward(user, ref, forReferrer);
        totalRewards += forRewards;
        
        // add share of pool to user
        _mintShares(user, forPool, previousBalance, forRewards);
    }

    function _claim(address user) internal {
        
        // pending shares
        uint pending = pendingShares(user);
        if (pending == 0) {
            return;
        }

        if (pending > userInfo[user].balance) {
            pending = userInfo[user].balance;
        }

        // pending Tokens
        uint pendingTokens = valueOf(pending);

        // decrement total shares
        totalShares -= pending;

        // if pending equal to balance, wipe all user data
        if (pending >= userInfo[user].balance) {
            _removeUser(user);
        } else {
            userInfo[user].balance -= pending;
            userInfo[user].lastClaim = block.timestamp;
        }

        if(claimPenalty){
            userInfo[user].claimPerSecond -= ( pending / nSeconds );
        }

        // tax claim amount
        uint256 adjustedPendingTokens = adjustWithClaimFee(pendingTokens);

        // transfer token to recipient
        _send(user, adjustedPendingTokens);
        emit Claim(user, adjustedPendingTokens);
    }

    /**
        Adds Current Pending Balance To `user`'s tracked balance and shares
        Reduces their tracked profit so they do not get forced out,
        but forfeits the current pending rewards they have waiting
     */
    function _compound(address user) internal {

        uint pending = pendingShares(user);
        uint pendingTokens = valueOf(pending);
        if (pending == 0 || pendingTokens == 0) {
            return;
        }

        // reset claim
        userInfo[user].lastClaim = block.timestamp;

        // increment token balance and share balance to offset profits
        userInfo[user].trackedTokenBalance += pendingTokens;
        userInfo[user].trackedShareBalance += pending;

        if(compoundBonus){
            userInfo[user].claimPerSecond += ( pending / nSeconds );
        }
        
        lotto.compoundoor(user, pendingTokens);

        emit Compound(user, pendingTokens);
    }

    function _mintShares(address user, uint256 share, uint256 previousBalance, uint256 feesTaken) internal {
        
        userInfo[user].totalTokenBalance += share;
        userInfo[user].trackedTokenBalance += share;

        if (totalShares == 0 || previousBalance == 0) {

            userInfo[user].balance += share;
            userInfo[user].claimPerSecond += ( share / nSeconds );
            userInfo[user].totalShareBalance += share;
            userInfo[user].trackedShareBalance += share;
            totalShares += share;

            emit Deposit(user, share, share);
        } else {

            uint sharesToMint = ( totalShares * share ) / ( previousBalance + feesTaken );
            userInfo[user].balance += sharesToMint;
            userInfo[user].totalShareBalance += sharesToMint;
            userInfo[user].trackedShareBalance += sharesToMint;
            userInfo[user].claimPerSecond += ( sharesToMint / nSeconds );
            totalShares += sharesToMint;

            emit Deposit(user, share, sharesToMint);
        }
    }

    function _addReferrerReward(address depositor, address ref, uint256 value) internal {

        // register referrer if not yet registered
        if (userInfo[depositor].referrer == address(0)) {
            if (ref != depositor) {
                userInfo[depositor].referrer = ref;
            }
        }

        address ref1 = userInfo[depositor].referrer;
        // send cut to referrer, if no referrer send to treasury
        if (ref1 != address(0) && value > 0) {
            _send(ref1, value);
            userInfo[ref1].referrerFees += value;
            totalReferrerFees += value;
        }else{
            _send(treasury, value);
        }
        
    }

    function adjustWithClaimFee(uint256 claimAmount) public view returns (uint256) {
        uint tax = ( claimAmount * claimFee ) / DENOM;
        return claimAmount - tax;
    }

    function _takeFee(uint lottoFee_, uint treasuryFee_) internal {

        // for lotto
        token.approve(address(lotto), lottoFee_);
        lotto.deposit(address(token), lottoFee_);

        // for treasury and partner
        uint256 partnerFee_ = treasuryFee_ / 2;
        uint256 _treasuryFee_ = treasuryFee_ - partnerFee_;
        _send(treasury, _treasuryFee_);
        _send(partnerAddress, partnerFee_);
    }

    function _transferFrom(IERC20 token_, address destination, uint amount) internal returns (uint256) {
        uint before = token_.balanceOf(destination);
        bool s = token_.transferFrom(
            msg.sender,
            destination,
            amount
        );
        uint received = token_.balanceOf(destination) - before;
        require(
            s &&
            received > 0 &&
            received <= amount,
            'Error TransferFrom'
        );
        return received;
    }

    function _send(address user, uint amount) internal {
        uint bal = token.balanceOf(address(this));
        if (amount > bal) {
            amount = bal;
        }
        if (amount > 0) {
            require(
                token.transfer(user, amount),
                'Failure On Token Transfer'
            );
        }
    }

    function _addUser(address user) internal {
        userInfo[user].index = allUsers.length;
        userInfo[user].lastClaim = block.timestamp;
        allUsers.push(user);
    }

    function _removeUser(address user) internal {
        require(
            allUsers[userInfo[user].index] == user,
            'User Not Present'
        );

        userInfo[
            allUsers[allUsers.length - 1]
        ].index = userInfo[user].index;

        allUsers[
            userInfo[user].index
        ] = allUsers[allUsers.length - 1];

        allUsers.pop();
        delete userInfo[user];
    }

    function setBonus(bool _compoundFlag, bool _claimFlag) external onlyOwner {
        compoundBonus = _compoundFlag;
        claimPenalty = _claimFlag;
    }

    function adminDeposit(address user, uint256 share, uint256 feesTaken) external onlyOwner {
        uint previousBalance = token.balanceOf(address(this));
        _mintShares(user, share, previousBalance, feesTaken);
    }

    function withdrawAVAX() external onlyOwner {
        (bool s,) = payable(msg.sender).call{value: address(this).balance}("");
        require(s);
    }
    
    function withdrawTokens(IERC20 token_) external onlyOwner {
        token_.transfer(msg.sender, token_.balanceOf(address(this)));
    }

}

Contract ABI

[{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"treasury_","type":"address"},{"internalType":"uint256","name":"nDays_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"victim","type":"address"},{"indexed":false,"internalType":"address","name":"assassin","type":"address"},{"indexed":false,"internalType":"uint256","name":"profitGained","type":"uint256"}],"name":"Assassinated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"pendingTokens","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"numTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"numShares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"poolFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referr","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lotto","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claim","type":"uint256"}],"name":"FeesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ILotto","name":"lotto_","type":"address"}],"name":"SetLotto","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxProfit","type":"uint256"}],"name":"SetMaxProfit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"treasury_","type":"address"}],"name":"SetTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"zapper_","type":"address"}],"name":"SetZapper","type":"event"},{"inputs":[],"name":"MAX_PROFIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"claimAmount","type":"uint256"}],"name":"adjustWithClaimFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"share","type":"uint256"},{"internalType":"uint256","name":"feesTaken","type":"uint256"}],"name":"adminDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allAssassins","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"assassinate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"calculatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"calculateProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"calculateTrackedProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"calculateTrackedProfitRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimPenalty","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compoundBonus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ref","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"ref","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fetchAllAssassins","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fetchAllUsers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"fetchAllUsersNearAssassination","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotto","outputs":[{"internalType":"contract ILotto","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lottoFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"partnerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"pendingShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referrerFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"rewardsPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_compoundFlag","type":"bool"},{"internalType":"bool","name":"_claimFlag","type":"bool"}],"name":"setBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolFee_","type":"uint256"},{"internalType":"uint256","name":"rewardFee_","type":"uint256"},{"internalType":"uint256","name":"referrer_","type":"uint256"},{"internalType":"uint256","name":"treasury_","type":"uint256"},{"internalType":"uint256","name":"lotto_","type":"uint256"},{"internalType":"uint256","name":"claimFee_","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ILotto","name":"lotto_","type":"address"}],"name":"setLotto","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxProfit","type":"uint256"}],"name":"setMaxProfit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"partnerAddress_","type":"address"}],"name":"setPartnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"treasury_","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"zapper_","type":"address"}],"name":"setZapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReferrerFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"totalTokenBalance","type":"uint256"},{"internalType":"uint256","name":"totalShareBalance","type":"uint256"},{"internalType":"uint256","name":"trackedTokenBalance","type":"uint256"},{"internalType":"uint256","name":"trackedShareBalance","type":"uint256"},{"internalType":"uint256","name":"claimPerSecond","type":"uint256"},{"internalType":"uint256","name":"lastClaim","type":"uint256"},{"internalType":"uint256","name":"profitsAssassinated","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"referrerFees","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"valueOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"valueOfAccount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAVAX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ref","type":"address"},{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minOut","type":"uint256"}],"name":"zapAndDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60c06040526103846001556032600255600f60035560056004819055601e905560646006556009805461010160a01b61ffff60a01b199091161790556730927f74c9de0000600b55600c80546001600160a01b03191673f29fd03df2cb7f81d8ae4d10a76f8b1c898786bd1790553480156200007a57600080fd5b506040516200323d3803806200323d8339810160408190526200009d9162000195565b600080546001600160a01b0319163390811782556040519091907f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a735908290a36001600160a01b03831615801590620000f55750600081115b620001375760405162461bcd60e51b815260206004820152600e60248201526d496e76616c696420496e7075747360901b604482015260640160405180910390fd5b6001600160a01b03838116608052600780546001600160a01b0319169184169190911790556200016b8162015180620001d6565b60a0525062000204915050565b80516001600160a01b03811681146200019057600080fd5b919050565b600080600060608486031215620001ab57600080fd5b620001b68462000178565b9250620001c66020850162000178565b9150604084015190509250925092565b6000816000190483118215151615620001ff57634e487b7160e01b600052601160045260246000fd5b500290565b60805160a051612fbf6200027e600039600081816104b701528181612406015281816125600152818161273901526128a4015260008181610758015281816113650152818161170b01528181611ca701528181611d540152818161206201528181612168015281816129d10152612a5b0152612fbf6000f3fe608060405234801561001057600080fd5b50600436106103275760003560e01c8063737baa40116101b8578063aab80ba111610104578063d348b409116100a2578063fbd668a91161007c578063fbd668a914610740578063fc0c546a14610753578063ff50abdc1461077a578063ff9608301461078357600080fd5b8063d348b4091461071d578063f0f4426014610725578063f69e20461461073857600080fd5b8063b3db428b116100de578063b3db428b146106e6578063c3374315146106f9578063cadf338f14610701578063cc32d1761461071457600080fd5b8063aab80ba1146106b8578063abce145b146106cb578063b1c17506146106d357600080fd5b806393fc9fbe11610171578063a1c330d61161014b578063a1c330d61461066c578063a2bdedf41461067f578063a6f9dae114610692578063a7a21712146106a557600080fd5b806393fc9fbe1461063d5780639602de181461065057806399d32fc41461066357600080fd5b8063737baa40146105e157806377ce5681146105ea5780638123b3f5146105fd57806386f6c3c114610610578063893d20e8146106235780638b4242671461063457600080fd5b80634243517511610277578063576168fc1161023057806368882bcf1161020a57806368882bcf146105a8578063694f07af146105b15780636e88a7bd146105c5578063708878f1146105ce57600080fd5b8063576168fc1461056d57806361d027b31461058057806366b2da1f1461059357600080fd5b806342435175146104f557806347e7ef241461050857806349df728c1461051b5780634be8d1531461052e5780634e71d92d1461055257806352512ce61461055a57600080fd5b806327ca9740116102e457806331d7a262116102be57806331d7a2621461049f578063358fb5f0146104b257806337d80aa8146104d95780633a98ef39146104ec57600080fd5b806327ca9740146104705780632d79cf61146104835780632d9d53361461048c57600080fd5b8063089fe6aa1461032c5780630e15561a1461034857806311a651a91461035157806313c2bf001461037c5780631959a002146103915780631bfff8ac1461045d575b600080fd5b61033560015481565b6040519081526020015b60405180910390f35b61033560125481565b61036461035f366004612c21565b610796565b6040516001600160a01b03909116815260200161033f565b61038f61038a366004612c4f565b6107c0565b005b61040161039f366004612c4f565b600d60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a01549899979896979596949593949293919290916001600160a01b0316908b565b604080519b8c5260208c019a909a52988a01979097526060890195909552608088019390935260a087019190915260c086015260e08501526101008401526001600160a01b03166101208301526101408201526101600161033f565b61033561046b366004612c4f565b610b62565b61038f61047e366004612c6c565b610b9a565b61033560055481565b61033561049a366004612c4f565b610c73565b6103356104ad366004612c4f565b610d5a565b6103357f000000000000000000000000000000000000000000000000000000000000000081565b6103356104e7366004612c4f565b610d68565b610335600a5481565b61038f610503366004612c4f565b610dca565b61038f610516366004612cb2565b610e6f565b61038f610529366004612c4f565b610e7e565b60095461054290600160a01b900460ff1681565b604051901515815260200161033f565b61038f610f89565b610335610568366004612c21565b610f94565b600c54610364906001600160a01b031681565b600754610364906001600160a01b031681565b61059b610fc5565b60405161033f9190612cde565b610335600b5481565b60095461054290600160a81b900460ff1681565b61033560035481565b61038f6105dc366004612c4f565b611027565b61033560115481565b61038f6105f8366004612d2d565b6110c5565b61033561060b366004612c4f565b611123565b61038f61061e366004612d66565b61116b565b6000546001600160a01b0316610364565b61033560025481565b600854610364906001600160a01b031681565b61038f61065e366004612da9565b611323565b61033560065481565b61033561067a366004612c4f565b6113ec565b61036461068d366004612c21565b61140e565b61038f6106a0366004612c4f565b61141e565b600954610364906001600160a01b031681565b61038f6106c6366004612c4f565b6114a3565b61038f611541565b6103356106e1366004612c4f565b6115c3565b61038f6106f4366004612dde565b6115f1565b61059b611649565b61033561070f366004612c21565b6116a9565b61033560045481565b6103356116d0565b61038f610733366004612c4f565b61179c565b61038f61183a565b61038f61074e366004612c21565b611843565b6103647f000000000000000000000000000000000000000000000000000000000000000081565b61033560105481565b61059b610791366004612c21565b6118ef565b600f81815481106107a657600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b0381166107ef5760405162461bcd60e51b81526004016107e690612e1f565b60405180910390fd5b336000908152600d602052604090205461084b5760405162461bcd60e51b815260206004820152601760248201527f417373617373696e206d7573742062652061637469766500000000000000000060448201526064016107e6565b600061085682611123565b6001600160a01b0383166000908152600d602052604090206004015490915081158015906108845750600081115b6108c45760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642055736572204461746160781b60448201526064016107e6565b6000816108d9670de0b6b3a764000085612e5b565b6108e39190612e7a565b9050600b548110156109305760405162461bcd60e51b815260206004820152601660248201527513505608141493d19255081393d50814915050d2115160521b60448201526064016107e6565b6000670de0b6b3a7640000600b54846109499190612e5b565b6109539190612e7a565b9050838111156109a55760405162461bcd60e51b815260206004820152601760248201527f4e6f74206f766572204d6178696d756d2050726f66697400000000000000000060448201526064016107e6565b60006109b18286612e9c565b6001600160a01b0387166000908152600d60205260408120549192506109d6826116a9565b90506000821180156109e85750600081115b80156109f45750828110155b610a375760405162461bcd60e51b8152602060048201526014602482015273536f6d657468696e672057656e742057726f6e6760601b60448201526064016107e6565b81600a6000828254610a499190612e9c565b90915550610a58905088611a6e565b6000610a676105688584612e9c565b90506000610a7485610f94565b9050610a808a83611c8f565b610a8a3382611c8f565b336000908152600d60205260408120600801549003610ae657600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b031916331790555b336000908152600d602052604081206008018054879290610b08908490612eb3565b9091555050604080516001600160a01b038c1681523360208201529081018690527fc01d8604e9bbf0ee54438b9286a97dad0c54dc777c5b6542cfa606dda6af81289060600160405180910390a150505050505050505050565b6001600160a01b0381166000908152600d6020526040812060060154610b87906116a9565b610b949062015180612e5b565b92915050565b6009546001600160a01b0316610be05760405162461bcd60e51b815260206004820152600b60248201526a2d32b937902d30b83832b960a91b60448201526064016107e6565b600954610bf89084906001600160a01b031684611e0d565b506009546040516315c188e960e21b81526001600160a01b0385811660048301528681166024830152336044830152606482018490529091169063570623a490608401600060405180830381600087803b158015610c5557600080fd5b505af1158015610c69573d6000803e3d6000fd5b5050505050505050565b6001600160a01b0381166000908152600d60205260408120541580610cb357506001600160a01b0382166000908152600d60205260409020600701544211155b15610cc057506000919050565b6001600160a01b0382166000908152600d6020526040812060070154610ce69042612e9c565b6001600160a01b0384166000908152600d602052604081206006015491925090610d109083612e5b565b6001600160a01b0385166000908152600d60205260409020549091508111610d385780610d52565b6001600160a01b0384166000908152600d60205260409020545b949350505050565b6000610b9461070f83610c73565b600080610d7483611123565b6001600160a01b0384166000908152600d6020526040902060040154909150811580610d9e575080155b15610dad575060009392505050565b80610dc0670de0b6b3a764000084612e5b565b610d529190612e7a565b6000546001600160a01b03163314610df45760405162461bcd60e51b81526004016107e690612ecb565b6001600160a01b038116610e1a5760405162461bcd60e51b81526004016107e690612e1f565b600980546001600160a01b0319166001600160a01b0383169081179091556040519081527fe1e732dbbc8e3554486963da7b8477bf9f5066e9172819ed0397db8535ac527e906020015b60405180910390a150565b610e7a338383611fde565b5050565b6000546001600160a01b03163314610ea85760405162461bcd60e51b81526004016107e690612ecb565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190612ef8565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7a9190612f11565b610f92336122fd565b565b6000806103e860065484610fa89190612e5b565b610fb29190612e7a565b9050610fbe8184612e9c565b9392505050565b6060600f80548060200260200160405190810160405280929190818152602001828054801561101d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fff575b5050505050905090565b6000546001600160a01b031633146110515760405162461bcd60e51b81526004016107e690612ecb565b6001600160a01b0381166110775760405162461bcd60e51b81526004016107e690612e1f565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527fbef2c125b6392cbec1a04028518f8191a6ffbd6c9e2fa452a8419b52523e92bd90602001610e64565b6000546001600160a01b031633146110ef5760405162461bcd60e51b81526004016107e690612ecb565b6009805461ffff60a01b1916600160a01b9315159390930260ff60a81b191692909217600160a81b91151591909102179055565b6001600160a01b0381166000908152600d6020526040812060048101546005909101548290611151906116a9565b9050808210611161576000610d52565b610d528282612e9c565b6000546001600160a01b031633146111955760405162461bcd60e51b81526004016107e690612ecb565b6103e88284866111a5898b612eb3565b6111af9190612eb3565b6111b99190612eb3565b6111c39190612eb3565b146111ff5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964204665657360a01b60448201526064016107e6565b60008611801561120f5750600085115b801561121b5750600083115b80156112275750600082115b6112615760405162461bcd60e51b815260206004820152600b60248201526a5a65726f20436865636b7360a81b60448201526064016107e6565b60fa8111156112a75760405162461bcd60e51b8152602060048201526012602482015271086d8c2d2da408ccaca40a8dede4090d2ced60731b60448201526064016107e6565b6001869055600285905560038490556004839055600582905560068190556040805187815260208101879052908101859052606081018490526080810183905260a081018290527f8241ce23be5510917dc83396d1123ec1786ba7f4b9f956803522acb5f75050389060c00160405180910390a1505050505050565b6000546001600160a01b0316331461134d5760405162461bcd60e51b81526004016107e690612ecb565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156113b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d89190612ef8565b90506113e6848483856124bb565b50505050565b6001600160a01b0381166000908152600d6020526040812054610b94906116a9565b600e81815481106107a657600080fd5b6000546001600160a01b031633146114485760405162461bcd60e51b81526004016107e690612ecb565b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114cd5760405162461bcd60e51b81526004016107e690612ecb565b6001600160a01b0381166114f35760405162461bcd60e51b81526004016107e690612e1f565b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390602001610e64565b6000546001600160a01b0316331461156b5760405162461bcd60e51b81526004016107e690612ecb565b604051600090339047908381818185875af1925050503d80600081146115ad576040519150601f19603f3d011682016040523d82523d6000602084013e6115b2565b606091505b50509050806115c057600080fd5b50565b6001600160a01b0381166000908152600d6020526040812060028101546003909101548290611151906116a9565b6009546001600160a01b031633146116395760405162461bcd60e51b815260206004820152600b60248201526a27b7363c902d30b83832b960a91b60448201526064016107e6565b611644838383611fde565b505050565b6060600e80548060200260200160405190810160405280929190818152602001828054801561101d576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fff575050505050905090565b6000670de0b6b3a76400006116bc6116d0565b6116c69084612e5b565b610b949190612e7a565b600080600a546000146116e557600a546116e8565b60015b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117769190612ef8565b90508161178b670de0b6b3a764000083612e5b565b6117959190612e7a565b9250505090565b6000546001600160a01b031633146117c65760405162461bcd60e51b81526004016107e690612ecb565b6001600160a01b0381166117ec5760405162461bcd60e51b81526004016107e690612e1f565b600780546001600160a01b0319166001600160a01b0383169081179091556040519081527fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390602001610e64565b610f92336127f8565b6000546001600160a01b0316331461186d5760405162461bcd60e51b81526004016107e690612ecb565b670de0b6b3a76400008110156118ba5760405162461bcd60e51b81526020600482015260126024820152714d61782050726f66697420546f6f204c6f7760701b60448201526064016107e6565b600b8190556040518181527f348b802428200d5891252baa398e88f928ab82a2268416ac2702e6738154e62290602001610e64565b600e54600b546060919060009081906103e89061190d908790612e5b565b6119179190612e7a565b905060005b838110156119705781611955600e838154811061193b5761193b612f2e565b6000918252602090912001546001600160a01b0316610d68565b10611968578261196481612f44565b9350505b60010161191c565b5060008267ffffffffffffffff81111561198c5761198c612f5d565b6040519080825280602002602001820160405280156119b5578160200160208202803683370190505b509050826000036119c95795945050505050565b6000805b85811015611a6257836119ec600e838154811061193b5761193b612f2e565b10611a5a57600e8181548110611a0457611a04612f2e565b9060005260206000200160009054906101000a90046001600160a01b0316838381518110611a3457611a34612f2e565b6001600160a01b039092166020928302919091019091015281611a5681612f44565b9250505b6001016119cd565b50909695505050505050565b6001600160a01b0381166000818152600d6020526040902060010154600e80549091908110611a9f57611a9f612f2e565b6000918252602090912001546001600160a01b031614611af45760405162461bcd60e51b815260206004820152601060248201526f155cd95c88139bdd08141c995cd95b9d60821b60448201526064016107e6565b6001600160a01b0381166000908152600d602081905260408220600190810154600e80549194929091611b279190612e9c565b81548110611b3757611b37612f2e565b60009182526020808320909101546001600160a01b031683528201929092526040019020600190810191909155600e80549091611b7391612e9c565b81548110611b8357611b83612f2e565b60009182526020808320909101546001600160a01b038481168452600d909252604090922060010154600e80549290931692918110611bc457611bc4612f2e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600e805480611c0357611c03612f73565b60008281526020808220830160001990810180546001600160a01b031990811690915593019093556001600160a01b03939093168352600d909152604082208281556001810183905560028101839055600381018390556004810183905560058101839055600681018390556007810183905560088101839055600981018054909216909155600a0155565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190612ef8565b905080821115611d28578091505b81156116445760405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc19190612f11565b6116445760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e205472616e736665720000000000000060448201526064016107e6565b6040516370a0823160e01b81526001600160a01b03838116600483015260009182918616906370a0823190602401602060405180830381865afa158015611e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7c9190612ef8565b6040516323b872dd60e01b81523360048201526001600160a01b038681166024830152604482018690529192506000918716906323b872dd906064016020604051808303816000875af1158015611ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efb9190612f11565b6040516370a0823160e01b81526001600160a01b0387811660048301529192506000918491908916906370a0823190602401602060405180830381865afa158015611f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6e9190612ef8565b611f789190612e9c565b9050818015611f875750600081115b8015611f935750848111155b611fd45760405162461bcd60e51b81526020600482015260126024820152714572726f72205472616e7366657246726f6d60701b60448201526064016107e6565b9695505050505050565b6001600160a01b03821615801590611ff65750600081115b6120305760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8105b5bdd5b9d60aa1b60448201526064016107e6565b600061203b84610c73565b111561204a5761204a836127f8565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156120b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d59190612ef8565b6001600160a01b0385166000908152600d60205260408120549192500361216157600e80546001600160a01b0386166000818152600d602052604081206001808201949094554260079091015583549283018455929092527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b03191690911790555b600061218e7f00000000000000000000000000000000000000000000000000000000000000003085611e0d565b905080601060008282546121a29190612eb3565b90915550506001546000906103e8906121bb9084612e5b565b6121c59190612e7a565b905060006103e8600254846121da9190612e5b565b6121e49190612e7a565b905060006103e8600454856121f99190612e5b565b6122039190612e7a565b905060006103e8600554866122189190612e5b565b6122229190612e7a565b9050600081836122328688612eb3565b61223c9190612eb3565b6122469190612eb3565b6122509087612e9c565b905061225c82846129a8565b600854604051636d705ebb60e01b81526001600160a01b038c811660048301526024820189905290911690636d705ebb90604401600060405180830381600087803b1580156122aa57600080fd5b505af11580156122be573d6000803e3d6000fd5b505050506122cd8a8a83612b13565b83601260008282546122df9190612eb3565b909155506122f190508a8689876124bb565b50505050505050505050565b600061230882610c73565b905080600003612316575050565b6001600160a01b0382166000908152600d602052604090205481111561235157506001600160a01b0381166000908152600d60205260409020545b600061235c826116a9565b905081600a60008282546123709190612e9c565b90915550506001600160a01b0383166000908152600d602052604090205482106123a25761239d83611a6e565b6123ef565b6001600160a01b0383166000908152600d6020526040812080548492906123ca908490612e9c565b90915550506001600160a01b0383166000908152600d60205260409020426007909101555b600954600160a81b900460ff161561245c5761242b7f000000000000000000000000000000000000000000000000000000000000000083612e7a565b6001600160a01b0384166000908152600d602052604081206006018054909190612456908490612e9c565b90915550505b600061246782610f94565b90506124738482611c8f565b604080516001600160a01b0386168152602081018390527f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4910160405180910390a150505050565b6001600160a01b0384166000908152600d6020526040812060020180548592906124e6908490612eb3565b90915550506001600160a01b0384166000908152600d602052604081206004018054859290612516908490612eb3565b9091555050600a541580612528575081155b1561267d576001600160a01b0384166000908152600d602052604081208054859290612555908490612eb3565b9091555061258590507f000000000000000000000000000000000000000000000000000000000000000084612e7a565b6001600160a01b0385166000908152600d6020526040812060060180549091906125b0908490612eb3565b90915550506001600160a01b0384166000908152600d6020526040812060030180548592906125e0908490612eb3565b90915550506001600160a01b0384166000908152600d602052604081206005018054859290612610908490612eb3565b9250508190555082600a60008282546126299190612eb3565b9091555050604080516001600160a01b0386168152602081018590529081018490527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060600160405180910390a16113e6565b60006126898284612eb3565b84600a546126979190612e5b565b6126a19190612e7a565b6001600160a01b0386166000908152600d60205260408120805492935083929091906126ce908490612eb3565b90915550506001600160a01b0385166000908152600d6020526040812060030180548392906126fe908490612eb3565b90915550506001600160a01b0385166000908152600d60205260408120600501805483929061272e908490612eb3565b9091555061275e90507f000000000000000000000000000000000000000000000000000000000000000082612e7a565b6001600160a01b0386166000908152600d602052604081206006018054909190612789908490612eb3565b9250508190555080600a60008282546127a29190612eb3565b9091555050604080516001600160a01b0387168152602081018690529081018290527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060600160405180910390a15050505050565b600061280382610c73565b90506000612810826116a9565b905081158061281d575080155b1561282757505050565b6001600160a01b0383166000908152600d602052604081204260078201556004018054839290612858908490612eb3565b90915550506001600160a01b0383166000908152600d602052604081206005018054849290612888908490612eb3565b9091555050600954600160a01b900460ff16156128fa576128c97f000000000000000000000000000000000000000000000000000000000000000083612e7a565b6001600160a01b0384166000908152600d6020526040812060060180549091906128f4908490612eb3565b90915550505b600854604051633148d50160e01b81526001600160a01b0385811660048301526024820184905290911690633148d50190604401600060405180830381600087803b15801561294857600080fd5b505af115801561295c573d6000803e3d6000fd5b5050604080516001600160a01b0387168152602081018590527f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a14556935001905060405180910390a1505050565b60085460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015612a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a409190612f11565b506008546040516311f9fbc960e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052909116906347e7ef2490604401600060405180830381600087803b158015612aaf57600080fd5b505af1158015612ac3573d6000803e3d6000fd5b505050506000600282612ad69190612e7a565b90506000612ae48284612e9c565b600754909150612afd906001600160a01b031682611c8f565b600c546113e6906001600160a01b031683611c8f565b6001600160a01b038381166000908152600d602052604090206009015416612b8057826001600160a01b0316826001600160a01b031614612b80576001600160a01b038381166000908152600d6020526040902060090180546001600160a01b0319169184169190911790555b6001600160a01b038084166000908152600d6020526040902060090154168015801590612bad5750600082115b15612c0b57612bbc8183611c8f565b6001600160a01b0381166000908152600d60205260408120600a018054849290612be7908490612eb3565b925050819055508160116000828254612c009190612eb3565b909155506113e69050565b6007546113e6906001600160a01b031683611c8f565b600060208284031215612c3357600080fd5b5035919050565b6001600160a01b03811681146115c057600080fd5b600060208284031215612c6157600080fd5b8135610fbe81612c3a565b60008060008060808587031215612c8257600080fd5b8435612c8d81612c3a565b93506020850135612c9d81612c3a565b93969395505050506040820135916060013590565b60008060408385031215612cc557600080fd5b8235612cd081612c3a565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015611a625783516001600160a01b031683529284019291840191600101612cfa565b80151581146115c057600080fd5b60008060408385031215612d4057600080fd5b8235612d4b81612d1f565b91506020830135612d5b81612d1f565b809150509250929050565b60008060008060008060c08789031215612d7f57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215612dbe57600080fd5b8335612dc981612c3a565b95602085013595506040909401359392505050565b600080600060608486031215612df357600080fd5b8335612dfe81612c3a565b92506020840135612e0e81612c3a565b929592945050506040919091013590565b6020808252600c908201526b5a65726f204164647265737360a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612e7557612e75612e45565b500290565b600082612e9757634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612eae57612eae612e45565b500390565b60008219821115612ec657612ec6612e45565b500190565b60208082526013908201527221b0b63632b91034b9903737ba1037bbb732b960691b604082015260600190565b600060208284031215612f0a57600080fd5b5051919050565b600060208284031215612f2357600080fd5b8151610fbe81612d1f565b634e487b7160e01b600052603260045260246000fd5b600060018201612f5657612f56612e45565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122032829c9978333462afa5d523957186fbb1cedd97a0be47a818070781e1a4111464736f6c634300080e0033000000000000000000000000e00b91f35924832d1a7d081d4dced55f3b80fb5c000000000000000000000000f29fd03df2cb7f81d8ae4d10a76f8b1c898786bd000000000000000000000000000000000000000000000000000000000000005a

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000e00b91f35924832d1a7d081d4dced55f3b80fb5c000000000000000000000000f29fd03df2cb7f81d8ae4d10a76f8b1c898786bd000000000000000000000000000000000000000000000000000000000000005a

-----Decoded View---------------
Arg [0] : token_ (address): 0xe00b91f35924832d1a7d081d4dced55f3b80fb5c
Arg [1] : treasury_ (address): 0xf29fd03df2cb7f81d8ae4d10a76f8b1c898786bd
Arg [2] : nDays_ (uint256): 90

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000e00b91f35924832d1a7d081d4dced55f3b80fb5c
Arg [1] : 000000000000000000000000f29fd03df2cb7f81d8ae4d10a76f8b1c898786bd
Arg [2] : 000000000000000000000000000000000000000000000000000000000000005a


Deployed ByteCode Sourcemap

4694:22770:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4884:36;;;;;;;;;160:25:1;;;148:2;133:18;4884:36:0;;;;;;;;6804:27;;;;;;6669:29;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;545:32:1;;;527:51;;515:2;500:18;6669:29:0;381:203:1;13154:2261:0;;;;;;:::i;:::-;;:::i;:::-;;6587:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6587:43:0;;;;;;;;1405:25:1;;;1461:2;1446:18;;1439:34;;;;1489:18;;;1482:34;;;;1547:2;1532:18;;1525:34;;;;1590:3;1575:19;;1568:35;;;;1634:3;1619:19;;1612:35;;;;1678:3;1663:19;;1656:35;1722:3;1707:19;;1700:35;1766:3;1751:19;;1744:35;-1:-1:-1;;;;;1816:32:1;1810:3;1795:19;;1788:61;1880:3;1865:19;;1858:36;1392:3;1377:19;6587:43:0;977:923:1;17183:139:0;;;;;;:::i;:::-;;:::i;11750:368::-;;;;;;:::i;:::-;;:::i;5052:35::-;;;;;;17460:489;;;;;;:::i;:::-;;:::i;17330:122::-;;;;;;:::i;:::-;;:::i;4829:33::-;;;;;15829:485;;;;;;:::i;:::-;;:::i;5474:26::-;;;;;;9007:218;;;;;;:::i;:::-;;:::i;10862:107::-;;;;;;:::i;:::-;;:::i;27322:137::-;;;;;;:::i;:::-;;:::i;5359:32::-;;;;;-1:-1:-1;;;5359:32:0;;;;;;;;;3200:14:1;;3193:22;3175:41;;3163:2;3148:18;5359:32:0;3035:187:1;12803:63:0;;;:::i;24627:178::-;;;;;;:::i;:::-;;:::i;5666:74::-;;;;;-1:-1:-1;;;;;5666:74:0;;;5222:23;;;;;-1:-1:-1;;;;;5222:23:0;;;18065:108;;;:::i;:::-;;;;;;;:::i;5591:39::-;;;;;;5398:31;;;;;-1:-1:-1;;;5398:31:0;;;;;;4969:35;;;;;;8780:219;;;;;;:::i;:::-;;:::i;6765:32::-;;;;;;26759:158;;;;;;:::i;:::-;;:::i;16322:290::-;;;;;;:::i;:::-;;:::i;7923:849::-;;;;;;:::i;:::-;;:::i;1444:83::-;1487:7;1514:5;-1:-1:-1;;;;;1514:5:0;1444:83;;4927:35;;;;;;5252:19;;;;;-1:-1:-1;;;;;5252:19:0;;;26925:224;;;;;;:::i;:::-;;:::i;5094:36::-;;;;;;17044:131;;;;;;:::i;:::-;;:::i;6637:25::-;;;;;;:::i;:::-;;:::i;1218:132::-;;;;;;:::i;:::-;;:::i;5329:21::-;;;;;-1:-1:-1;;;;;5329:21:0;;;9473:267;;;;;;:::i;:::-;;:::i;27157:153::-;;;:::i;16620:279::-;;;;;;:::i;:::-;;:::i;12126:210::-;;;;;;:::i;:::-;;:::i;17957:100::-;;;:::i;16907:129::-;;;;;;:::i;:::-;;:::i;5011:34::-;;;;;;15591:230;;;:::i;9233:232::-;;;;;;:::i;:::-;;:::i;12582:67::-;;;:::i;9748:238::-;;;;;;:::i;:::-;;:::i;4747:29::-;;;;;6729;;;;;;18181:958;;;;;;:::i;:::-;;:::i;6669:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6669:29:0;;-1:-1:-1;6669:29:0;:::o;13154:2261::-;-1:-1:-1;;;;;13239:18:0;;13217:80;;;;-1:-1:-1;;;13217:80:0;;;;;;;:::i;:::-;;;;;;;;;13341:10;13363:1;13332:20;;;:8;:20;;;;;:28;13310:105;;;;-1:-1:-1;;;13310:105:0;;7024:2:1;13310:105:0;;;7006:21:1;7063:2;7043:18;;;7036:30;7102:25;7082:18;;;7075:53;7145:18;;13310:105:0;6822:347:1;13310:105:0;13472:18;13493:28;13516:4;13493:22;:28::i;:::-;-1:-1:-1;;;;;13554:14:0;;13532:19;13554:14;;;:8;:14;;;;;:34;;;13472:49;;-1:-1:-1;13621:17:0;;;;;:39;;;13659:1;13642:14;:18;13621:39;13599:106;;;;-1:-1:-1;;;13599:106:0;;7376:2:1;13599:106:0;;;7358:21:1;7415:2;7395:18;;;7388:30;-1:-1:-1;;;7434:18:1;;;7427:47;7491:18;;13599:106:0;7174:341:1;13599:106:0;13766:16;13817:14;13787:25;5544:6;13787:13;:25;:::i;:::-;13785:46;;;;:::i;:::-;13766:65;;13879:10;;13864:11;:25;;13842:97;;;;-1:-1:-1;;;13842:97:0;;8249:2:1;13842:97:0;;;8231:21:1;8288:2;8268:18;;;8261:30;-1:-1:-1;;;8307:18:1;;;8300:52;8369:18;;13842:97:0;8047:346:1;13842:97:0;14028:19;5544:6;14069:10;;14052:14;:27;;;;:::i;:::-;14050:43;;;;:::i;:::-;14028:65;;14144:13;14126:14;:31;;14104:107;;;;-1:-1:-1;;;14104:107:0;;8600:2:1;14104:107:0;;;8582:21:1;8639:2;8619:18;;;8612:30;8678:25;8658:18;;;8651:53;8721:18;;14104:107:0;8398:347:1;14104:107:0;14262:21;14286:30;14302:14;14286:13;:30;:::i;:::-;-1:-1:-1;;;;;14383:14:0;;14365:15;14383:14;;;:8;:14;;;;;:22;14262:54;;-1:-1:-1;14434:19:0;14383:22;14434:7;:19::i;:::-;14416:37;;14499:1;14486:10;:14;:32;;;;;14517:1;14504:10;:14;14486:32;:66;;;;;14536:16;14522:10;:30;;14486:66;14464:136;;;;-1:-1:-1;;;14464:136:0;;9082:2:1;14464:136:0;;;9064:21:1;9121:2;9101:18;;;9094:30;-1:-1:-1;;;9140:18:1;;;9133:50;9200:18;;14464:136:0;8880:344:1;14464:136:0;14653:10;14638:11;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;14674:17:0;;-1:-1:-1;14686:4:0;14674:11;:17::i;:::-;14739:26;14768:49;14787:29;14800:16;14787:10;:29;:::i;14768:49::-;14739:78;;14828:32;14863:36;14882:16;14863:18;:36::i;:::-;14828:71;;14944:31;14950:4;14956:18;14944:5;:31::i;:::-;15022:43;15028:10;15040:24;15022:5;:43::i;:::-;15141:10;15132:20;;;;:8;:20;;;;;:40;;;:45;;15128:107;;15194:12;:29;;;;;;;-1:-1:-1;15194:29:0;;;;;;;;-1:-1:-1;;;;;;15194:29:0;15212:10;15194:29;;;15128:107;15292:10;15283:20;;;;:8;:20;;;;;:40;;:60;;15327:16;;15283:20;:60;;15327:16;;15283:60;:::i;:::-;;;;-1:-1:-1;;15359:48:0;;;-1:-1:-1;;;;;9620:15:1;;9602:34;;15378:10:0;9667:2:1;9652:18;;9645:43;9704:18;;;9697:34;;;15359:48:0;;9552:2:1;9537:18;15359:48:0;;;;;;;13198:2217;;;;;;;;;13154:2261;:::o;17183:139::-;-1:-1:-1;;;;;17276:14:0;;17241:7;17276:14;;;:8;:14;;;;;:29;;;17268:38;;:7;:38::i;:::-;:46;;17309:5;17268:46;:::i;:::-;17261:53;17183:139;-1:-1:-1;;17183:139:0:o;11750:368::-;11875:6;;-1:-1:-1;;;;;11875:6:0;11853:81;;;;-1:-1:-1;;;11853:81:0;;9944:2:1;11853:81:0;;;9926:21:1;9983:2;9963:18;;;9956:30;-1:-1:-1;;;10002:18:1;;;9995:41;10053:18;;11853:81:0;9742:335:1;11853:81:0;12007:6;;11985:37;;11999:6;;-1:-1:-1;;;;;12007:6:0;12015;11985:13;:37::i;:::-;-1:-1:-1;12066:6:0;;12058:52;;-1:-1:-1;;;12058:52:0;;-1:-1:-1;;;;;10383:15:1;;;12058:52:0;;;10365:34:1;10435:15;;;10415:18;;;10408:43;12091:10:0;10467:18:1;;;10460:43;10519:18;;;10512:34;;;12066:6:0;;;;12058:19;;10299::1;;12058:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11750:368;;;;:::o;17460:489::-;-1:-1:-1;;;;;17552:14:0;;17518:7;17552:14;;;:8;:14;;;;;:22;:27;;:74;;-1:-1:-1;;;;;;17583:14:0;;;;;;:8;:14;;;;;:24;;;17611:15;-1:-1:-1;17583:43:0;17552:74;17548:115;;;-1:-1:-1;17650:1:0;;17460:489;-1:-1:-1;17460:489:0:o;17548:115::-;-1:-1:-1;;;;;17738:14:0;;17708:9;17738:14;;;:8;:14;;;;;:24;;;17720:42;;:15;:42;:::i;:::-;-1:-1:-1;;;;;17825:14:0;;17803:12;17825:14;;;:8;:14;;;;;:29;;;17708:54;;-1:-1:-1;17803:12:0;17818:36;;17708:54;17818:36;:::i;:::-;-1:-1:-1;;;;;17884:14:0;;;;;;:8;:14;;;;;:22;17803:51;;-1:-1:-1;17874:32:0;;:67;;17934:7;17874:67;;;-1:-1:-1;;;;;17909:14:0;;;;;;:8;:14;;;;;:22;17874:67;17867:74;17460:489;-1:-1:-1;;;;17460:489:0:o;17330:122::-;17389:7;17416:28;17424:19;17438:4;17424:13;:19::i;15829:485::-;15901:7;15921:18;15942:28;15965:4;15942:22;:28::i;:::-;-1:-1:-1;;;;;16003:14:0;;15981:19;16003:14;;;:8;:14;;;;;:34;;;15921:49;;-1:-1:-1;16052:18:0;;;:41;;-1:-1:-1;16074:19:0;;16052:41;16048:82;;;-1:-1:-1;16117:1:0;;15829:485;-1:-1:-1;;;15829:485:0:o;16048:82::-;16292:14;16262:25;5544:6;16262:13;:25;:::i;:::-;16260:46;;;;:::i;9007:218::-;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9095:21:0;::::1;9073:83;;;;-1:-1:-1::0;;;9073:83:0::1;;;;;;;:::i;:::-;9167:6;:16:::0;;-1:-1:-1;;;;;;9167:16:0::1;-1:-1:-1::0;;;;;9167:16:0;::::1;::::0;;::::1;::::0;;;9199:18:::1;::::0;527:51:1;;;9199:18:0::1;::::0;515:2:1;500:18;9199::0::1;;;;;;;;9007:218:::0;:::o;10862:107::-;10928:33;10937:10;10949:3;10954:6;10928:8;:33::i;:::-;10862:107;;:::o;27322:137::-;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;27419:31:::1;::::0;-1:-1:-1;;;27419:31:0;;27444:4:::1;27419:31;::::0;::::1;527:51:1::0;-1:-1:-1;;;;;27391:15:0;::::1;::::0;::::1;::::0;27407:10:::1;::::0;27391:15;;27419:16:::1;::::0;500:18:1;;27419:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27391:60;::::0;-1:-1:-1;;;;;;27391:60:0::1;::::0;;;;;;-1:-1:-1;;;;;11286:32:1;;;27391:60:0::1;::::0;::::1;11268:51:1::0;11335:18;;;11328:34;11241:18;;27391:60:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12803:63::-:0;12840:18;12847:10;12840:6;:18::i;:::-;12803:63::o;24627:178::-;24697:7;24717:8;5170:4;24744:8;;24730:11;:22;;;;:::i;:::-;24728:34;;;;:::i;:::-;24717:45;-1:-1:-1;24780:17:0;24717:45;24780:11;:17;:::i;:::-;24773:24;24627:178;-1:-1:-1;;;24627:178:0:o;18065:108::-;18117:16;18153:12;18146:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18146:19:0;;;;;;;;;;;;;;;;;;;;;;;18065:108;:::o;8780:219::-;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8865:29:0;::::1;8843:91;;;;-1:-1:-1::0;;;8843:91:0::1;;;;;;;:::i;:::-;8945:5;:14:::0;;-1:-1:-1;;;;;;8945:14:0::1;-1:-1:-1::0;;;;;8945:14:0;::::1;::::0;;::::1;::::0;;;8975:16:::1;::::0;527:51:1;;;8975:16:0::1;::::0;515:2:1;500:18;8975:16:0::1;381:203:1::0;26759:158:0;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;26844:13:::1;:29:::0;;-1:-1:-1;;;;26884:25:0;-1:-1:-1;;;26844:29:0;::::1;;::::0;;;::::1;-1:-1:-1::0;;;;26884:25:0;;;;;-1:-1:-1;;;26884:25:0;::::1;;::::0;;;::::1;;::::0;;26759:158::o;16322:290::-;-1:-1:-1;;;;;16423:14:0;;16389:7;16423:14;;;:8;:14;;;;;:34;;;;16498;;;;;16389:7;;16490:43;;:7;:43::i;:::-;16468:65;;16560:14;16551:6;:23;:53;;16603:1;16551:53;;;16577:23;16594:6;16577:14;:23;:::i;7923:849::-;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;5170:4:::1;8194:6:::0;8182:9;8170;8146:21:::1;8157:10:::0;8146:8;:21:::1;:::i;:::-;:33;;;;:::i;:::-;:45;;;;:::i;:::-;:54;;;;:::i;:::-;:63;8124:125;;;::::0;-1:-1:-1;;;8124:125:0;;11825:2:1;8124:125:0::1;::::0;::::1;11807:21:1::0;11864:2;11844:18;;;11837:30;-1:-1:-1;;;11883:18:1;;;11876:42;11935:18;;8124:125:0::1;11623:336:1::0;8124:125:0::1;8293:1;8282:8;:12;:30;;;;;8311:1;8298:10;:14;8282:30;:47;;;;;8328:1;8316:9;:13;8282:47;:61;;;;;8342:1;8333:6;:10;8282:61;8260:122;;;::::0;-1:-1:-1;;;8260:122:0;;12166:2:1;8260:122:0::1;::::0;::::1;12148:21:1::0;12205:2;12185:18;;;12178:30;-1:-1:-1;;;12224:18:1;;;12217:41;12275:18;;8260:122:0::1;11964:335:1::0;8260:122:0::1;8428:3;8415:9;:16;;8393:84;;;::::0;-1:-1:-1;;;8393:84:0;;12506:2:1;8393:84:0::1;::::0;::::1;12488:21:1::0;12545:2;12525:18;;;12518:30;-1:-1:-1;;;12564:18:1;;;12557:48;12622:18;;8393:84:0::1;12304:342:1::0;8393:84:0::1;8498:7;:18:::0;;;8527:9:::1;:22:::0;;;8560:11:::1;:23:::0;;;8594:11:::1;:23:::0;;;8628:8:::1;:17:::0;;;8656:8:::1;:20:::0;;;8694:70:::1;::::0;;12938:25:1;;;12994:2;12979:18;;12972:34;;;13022:18;;;13015:34;;;13080:2;13065:18;;13058:34;;;13123:3;13108:19;;13101:35;;;13167:3;13152:19;;13145:35;;;8694:70:0::1;::::0;12925:3:1;12910:19;8694:70:0::1;;;;;;;7923:849:::0;;;;;;:::o;26925:224::-;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;27048:30:::1;::::0;-1:-1:-1;;;27048:30:0;;27072:4:::1;27048:30;::::0;::::1;527:51:1::0;27025:20:0::1;::::0;27048:5:::1;-1:-1:-1::0;;;;;27048:15:0::1;::::0;::::1;::::0;500:18:1;;27048:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27025:53;;27089:52;27101:4;27107:5;27114:15;27131:9;27089:11;:52::i;:::-;27014:135;26925:224:::0;;;:::o;17044:131::-;-1:-1:-1;;;;;17141:17:0;;17106:7;17141:17;;;:8;:17;;;;;:25;17133:34;;:7;:34::i;6637:25::-;;;;;;;;;;;;1218:132;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;1299:5:::1;::::0;;1290:25:::1;::::0;-1:-1:-1;;;;;1290:25:0;;::::1;::::0;1299:5;::::1;::::0;1290:25:::1;::::0;::::1;1326:5;:16:::0;;-1:-1:-1;;;;;;1326:16:0::1;-1:-1:-1::0;;;;;1326:16:0;;;::::1;::::0;;;::::1;::::0;;1218:132::o;9473:267::-;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9576:29:0;::::1;9554:91;;;;-1:-1:-1::0;;;9554:91:0::1;;;;;;;:::i;:::-;9656:14;:32:::0;;-1:-1:-1;;;;;;9656:32:0::1;-1:-1:-1::0;;;;;9656:32:0;::::1;::::0;;::::1;::::0;;;9704:28:::1;::::0;527:51:1;;;9704:28:0::1;::::0;515:2:1;500:18;9704:28:0::1;381:203:1::0;27157:153:0;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;27223:58:::1;::::0;27212:6:::1;::::0;27231:10:::1;::::0;27255:21:::1;::::0;27212:6;27223:58;27212:6;27223:58;27255:21;27231:10;27223:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27211:70;;;27300:1;27292:10;;;::::0;::::1;;27200:110;27157:153::o:0;16620:279::-;-1:-1:-1;;;;;16714:14:0;;16680:7;16714:14;;;:8;:14;;;;;:32;;;;16787;;;;;16680:7;;16779:41;;:7;:41::i;12126:210::-;12245:6;;-1:-1:-1;;;;;12245:6:0;12231:10;:20;12209:81;;;;-1:-1:-1;;;12209:81:0;;13603:2:1;12209:81:0;;;13585:21:1;13642:2;13622:18;;;13615:30;-1:-1:-1;;;13661:18:1;;;13654:41;13712:18;;12209:81:0;13401:335:1;12209:81:0;12301:27;12310:4;12316:3;12321:6;12301:8;:27::i;:::-;12126:210;;;:::o;17957:100::-;18005:16;18041:8;18034:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18034:15:0;;;;;;;;;;;;;;;;;;;;;;17957:100;:::o;16907:129::-;16959:7;5544:6;16998:16;:14;:16::i;:::-;16988:26;;:7;:26;:::i;:::-;16986:42;;;;:::i;15591:230::-;15638:7;15658:11;15673;;15688:1;15673:16;:34;;15696:11;;15673:34;;;15692:1;15673:34;15733:30;;-1:-1:-1;;;15733:30:0;;15757:4;15733:30;;;527:51:1;15658:49:0;;-1:-1:-1;15718:12:0;;-1:-1:-1;;;;;15733:5:0;:15;;;;500:18:1;;15733:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15718:45;-1:-1:-1;15807:6:0;15783:19;5544:6;15718:45;15783:19;:::i;:::-;15781:32;;;;:::i;:::-;15774:39;;;;15591:230;:::o;9233:232::-;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9325:23:0;::::1;9303:85;;;;-1:-1:-1::0;;;9303:85:0::1;;;;;;;:::i;:::-;9399:8;:20:::0;;-1:-1:-1;;;;;;9399:20:0::1;-1:-1:-1::0;;;;;9399:20:0;::::1;::::0;;::::1;::::0;;;9435:22:::1;::::0;527:51:1;;;9435:22:0::1;::::0;515:2:1;500:18;9435:22:0::1;381:203:1::0;12582:67:0;12620:21;12630:10;12620:9;:21::i;9748:238::-;825:5;;-1:-1:-1;;;;;825:5:0;811:10;:19;803:51;;;;-1:-1:-1;;;803:51:0;;;;;;;:::i;:::-;9854:6:::1;9841:9;:19;;9819:87;;;::::0;-1:-1:-1;;;9819:87:0;;13943:2:1;9819:87:0::1;::::0;::::1;13925:21:1::0;13982:2;13962:18;;;13955:30;-1:-1:-1;;;14001:18:1;;;13994:48;14059:18;;9819:87:0::1;13741:342:1::0;9819:87:0::1;9917:10;:22:::0;;;9955:23:::1;::::0;160:25:1;;;9955:23:0::1;::::0;148:2:1;133:18;9955:23:0::1;14:177:1::0;18181:958:0;18306:8;:15;18382:10;;18263:16;;18306:15;18292:11;;;;18407:4;;18382:22;;18395:9;;18382:22;:::i;:::-;:29;;;;:::i;:::-;18357:56;;18439:6;18434:197;18455:6;18451:1;:10;18434:197;;;18528:15;18484:40;18512:8;18521:1;18512:11;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;18484:27;:40::i;:::-;:59;18479:109;;18565:7;;;;:::i;:::-;;;;18479:109;18614:3;;18434:197;;;;18651:39;18707:5;18693:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18693:20:0;;18651:62;;18728:5;18737:1;18728:10;18724:72;;18762:22;18181:958;-1:-1:-1;;;;;18181:958:0:o;18724:72::-;18808:10;18838:6;18833:259;18854:6;18850:1;:10;18833:259;;;18927:15;18883:40;18911:8;18920:1;18911:11;;;;;;;;:::i;18883:40::-;:59;18878:171;;18996:8;19005:1;18996:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18996:11:0;18964:22;18987:5;18964:29;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18964:43:0;;;:29;;;;;;;;;;;:43;19026:7;;;;:::i;:::-;;;;18878:171;19075:3;;18833:259;;;-1:-1:-1;19109:22:0;;18181:958;-1:-1:-1;;;;;;18181:958:0:o;26321:430::-;-1:-1:-1;;;;;26398:38:0;;26407:14;;;;:8;:14;;;;;:20;;;26398:8;:30;;:8;;26407:20;26398:30;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;26398:30:0;:38;26376:104;;;;-1:-1:-1;;;26376:104:0;;14694:2:1;26376:104:0;;;14676:21:1;14733:2;14713:18;;;14706:30;-1:-1:-1;;;14752:18:1;;;14745:46;14808:18;;26376:104:0;14492:340:1;26376:104:0;-1:-1:-1;;;;;26565:14:0;;;;;;:8;:14;;;;;;;:20;;;;;26516:8;26525:15;;26565:20;;:14;26516:8;;26525:19;;26565:20;26525:19;:::i;:::-;26516:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26516:29:0;26493:63;;;;;;;;;;;;26516:29;26493:69;;;:92;;;;26655:8;26664:15;;26655:8;;26664:19;;;:::i;:::-;26655:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26621:14:0;;;;;:8;:14;;;;;;;26655:29;26621:20;;26598:8;:54;;26655:29;;;;;26598:8;:54;;;;;;:::i;:::-;;;;;;;;;:86;;;;;-1:-1:-1;;;;;26598:86:0;;;;;-1:-1:-1;;;;;26598:86:0;;;;;;26697:8;:14;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;26697:14:0;;;;;-1:-1:-1;;;;;;26697:14:0;;;;;;;;;;;-1:-1:-1;;;;;26729:14:0;;;;;;:8;:14;;;;;;26722:21;;;26697:14;26722:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26321:430::o;25778:346::-;25851:30;;-1:-1:-1;;;25851:30:0;;25875:4;25851:30;;;527:51:1;25840:8:0;;25851:5;-1:-1:-1;;;;;25851:15:0;;;;500:18:1;;25851:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25840:41;;25905:3;25896:6;:12;25892:57;;;25934:3;25925:12;;25892:57;25963:10;;25959:158;;26016:28;;-1:-1:-1;;;26016:28:0;;-1:-1:-1;;;;;11286:32:1;;;26016:28:0;;;11268:51:1;11335:18;;;11328:34;;;26016:5:0;:14;;;;11241:18:1;;26016:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25990:115;;;;-1:-1:-1;;;25990:115:0;;15171:2:1;25990:115:0;;;15153:21:1;15210:2;15190:18;;;15183:30;15249:27;15229:18;;;15222:55;15294:18;;25990:115:0;14969:349:1;25252:518:0;25376:29;;-1:-1:-1;;;25376:29:0;;-1:-1:-1;;;;;545:32:1;;;25376:29:0;;;527:51:1;25342:7:0;;;;25376:16;;;;;500:18:1;;25376:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25425:102;;-1:-1:-1;;;25425:102:0;;25459:10;25425:102;;;9602:34:1;-1:-1:-1;;;;;9672:15:1;;;9652:18;;;9645:43;9704:18;;;9697:34;;;25362:43:0;;-1:-1:-1;25416:6:0;;25425:19;;;;;9537:18:1;;25425:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25554:29;;-1:-1:-1;;;25554:29:0;;-1:-1:-1;;;;;545:32:1;;;25554:29:0;;;527:51:1;25416:111:0;;-1:-1:-1;25538:13:0;;25586:6;;25554:16;;;;;;500:18:1;;25554:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;;;:::i;:::-;25538:54;;25625:1;:30;;;;;25654:1;25643:8;:12;25625:30;:65;;;;;25684:6;25672:8;:18;;25625:65;25603:133;;;;-1:-1:-1;;;25603:133:0;;15525:2:1;25603:133:0;;;15507:21:1;15564:2;15544:18;;;15537:30;-1:-1:-1;;;15583:18:1;;;15576:48;15641:18;;25603:133:0;15323:342:1;25603:133:0;25754:8;25252:518;-1:-1:-1;;;;;;25252:518:0:o;19317:1477::-;-1:-1:-1;;;;;19420:17:0;;;;;;:44;;;19463:1;19454:6;:10;19420:44;19398:105;;;;-1:-1:-1;;;19398:105:0;;15872:2:1;19398:105:0;;;15854:21:1;15911:2;15891:18;;;15884:30;-1:-1:-1;;;15930:18:1;;;15923:41;15981:18;;19398:105:0;15670:335:1;19398:105:0;19588:1;19566:19;19580:4;19566:13;:19::i;:::-;:23;19562:71;;;19606:15;19616:4;19606:9;:15::i;:::-;19697:30;;-1:-1:-1;;;19697:30:0;;19721:4;19697:30;;;527:51:1;19674:20:0;;19697:5;-1:-1:-1;;;;;19697:15:0;;;;500:18:1;;19697:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19821:14:0;;;;;;:8;:14;;;;;:22;19674:53;;-1:-1:-1;19821:27:0;19817:74;;26207:8;:15;;-1:-1:-1;;;;;26184:14:0;;;;;;:8;:14;;;;;:20;;;;:38;;;;26260:15;26233:24;;;;:42;26286:19;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26286:19:0;;;;;;19865:14;19934:13;19950:43;19964:5;19979:4;19986:6;19950:13;:43::i;:::-;19934:59;;20022:8;20004:14;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;20103:7:0;;20072:12;;5170:4;;20092:18;;:8;:18;:::i;:::-;20091:28;;;;:::i;:::-;20072:47;;20130:15;5170:4;20161:9;;20150:8;:20;;;;:::i;:::-;20149:30;;;;:::i;:::-;20130:49;;20190:16;5170:4;20221:11;;20210:8;:22;;;;:::i;:::-;20209:32;;;;:::i;:::-;20190:51;;20252:13;5170:4;20283:8;;20272;:19;;;;:::i;:::-;20271:29;;;;:::i;:::-;20252:48;-1:-1:-1;20311:16:0;20252:48;20366:11;20343:20;20353:10;20343:7;:20;:::i;:::-;:34;;;;:::i;:::-;:45;;;;:::i;:::-;20330:60;;:8;:60;:::i;:::-;20311:79;;20436:31;20445:8;20455:11;20436:8;:31::i;:::-;20520:5;;:30;;-1:-1:-1;;;20520:30:0;;-1:-1:-1;;;;;11286:32:1;;;20520:30:0;;;11268:51:1;11335:18;;;11328:34;;;20520:5:0;;;;:14;;11241:18:1;;20520:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20593:42;20612:4;20618:3;20623:11;20593:18;:42::i;:::-;20662:10;20646:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;20731:55:0;;-1:-1:-1;20743:4:0;20749:7;20758:15;20775:10;20731:11;:55::i;:::-;19387:1407;;;;;;;19317:1477;;;:::o;20802:1078::-;20889:12;20904:19;20918:4;20904:13;:19::i;:::-;20889:34;;20938:7;20949:1;20938:12;20934:51;;20967:7;20802:1078;:::o;20934:51::-;-1:-1:-1;;;;;21011:14:0;;;;;;:8;:14;;;;;:22;21001:32;;20997:97;;;-1:-1:-1;;;;;;21060:14:0;;;;;;:8;:14;;;;;:22;20997:97;21133:18;21154:16;21162:7;21154;:16::i;:::-;21133:37;;21233:7;21218:11;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;21328:14:0;;;;;;:8;:14;;;;;:22;21317:33;;21313:206;;21367:17;21379:4;21367:11;:17::i;:::-;21313:206;;;-1:-1:-1;;;;;21417:14:0;;;;;;:8;:14;;;;;:33;;21443:7;;21417:14;:33;;21443:7;;21417:33;:::i;:::-;;;;-1:-1:-1;;;;;;;21465:14:0;;;;;;:8;:14;;;;;21492:15;21465:24;;;;:42;21313:206;21534:12;;-1:-1:-1;;;21534:12:0;;;;21531:98;;;21597:18;21607:8;21597:7;:18;:::i;:::-;-1:-1:-1;;;;;21562:14:0;;;;;;:8;:14;;;;;:29;;:55;;:29;;:14;:55;;;;;:::i;:::-;;;;-1:-1:-1;;21531:98:0;21670:29;21702:33;21721:13;21702:18;:33::i;:::-;21670:65;;21788:34;21794:4;21800:21;21788:5;:34::i;:::-;21838;;;-1:-1:-1;;;;;11286:32:1;;11268:51;;11350:2;11335:18;;11328:34;;;21838::0;;11241:18:1;21838:34:0;;;;;;;20841:1039;;;20802:1078;:::o;22844:1077::-;-1:-1:-1;;;;;22968:14:0;;;;;;:8;:14;;;;;:32;;:41;;23004:5;;22968:14;:41;;23004:5;;22968:41;:::i;:::-;;;;-1:-1:-1;;;;;;;23020:14:0;;;;;;:8;:14;;;;;:34;;:43;;23058:5;;23020:14;:43;;23058:5;;23020:43;:::i;:::-;;;;-1:-1:-1;;23080:11:0;;:16;;:40;;-1:-1:-1;23100:20:0;;23080:40;23076:838;;;-1:-1:-1;;;;;23139:14:0;;;;;;:8;:14;;;;;:31;;23165:5;;23139:14;:31;;23165:5;;23139:31;:::i;:::-;;;;-1:-1:-1;23220:16:0;;-1:-1:-1;23228:8:0;23220:5;:16;:::i;:::-;-1:-1:-1;;;;;23185:14:0;;;;;;:8;:14;;;;;:29;;:53;;:29;;:14;:53;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;23253:14:0;;;;;;:8;:14;;;;;:32;;:41;;23289:5;;23253:14;:41;;23289:5;;23253:41;:::i;:::-;;;;-1:-1:-1;;;;;;;23309:14:0;;;;;;:8;:14;;;;;:34;;:43;;23347:5;;23309:14;:43;;23347:5;;23309:43;:::i;:::-;;;;;;;;23382:5;23367:11;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;;23409:27:0;;;-1:-1:-1;;;;;16230:32:1;;16212:51;;16294:2;16279:18;;16272:34;;;16322:18;;;16315:34;;;23409:27:0;;16200:2:1;16185:18;23409:27:0;;;;;;;23076:838;;;23471:17;23519:27;23537:9;23519:15;:27;:::i;:::-;23507:5;23493:11;;:19;;;;:::i;:::-;23491:57;;;;:::i;:::-;-1:-1:-1;;;;;23563:14:0;;;;;;:8;:14;;;;;:38;;23471:77;;-1:-1:-1;23471:77:0;;23563:14;;;:38;;23471:77;;23563:38;:::i;:::-;;;;-1:-1:-1;;;;;;;23616:14:0;;;;;;:8;:14;;;;;:32;;:48;;23652:12;;23616:14;:48;;23652:12;;23616:48;:::i;:::-;;;;-1:-1:-1;;;;;;;23679:14:0;;;;;;:8;:14;;;;;:34;;:50;;23717:12;;23679:14;:50;;23717:12;;23679:50;:::i;:::-;;;;-1:-1:-1;23779:23:0;;-1:-1:-1;23794:8:0;23779:12;:23;:::i;:::-;-1:-1:-1;;;;;23744:14:0;;;;;;:8;:14;;;;;:29;;:60;;:29;;:14;:60;;;;;:::i;:::-;;;;;;;;23834:12;23819:11;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;23868:34:0;;;-1:-1:-1;;;;;16230:32:1;;16212:51;;16294:2;16279:18;;16272:34;;;16322:18;;;16315:34;;;23868::0;;16200:2:1;16185:18;23868:34:0;;;;;;;23454:460;22844:1077;;;;:::o;22120:716::-;22175:12;22190:19;22204:4;22190:13;:19::i;:::-;22175:34;;22220:18;22241:16;22249:7;22241;:16::i;:::-;22220:37;-1:-1:-1;22272:12:0;;;:34;;-1:-1:-1;22288:18:0;;22272:34;22268:73;;;22323:7;;22120:716;:::o;22268:73::-;-1:-1:-1;;;;;22377:14:0;;;;;;:8;:14;;;;;22404:15;22377:24;;;:42;22504:34;;:51;;22542:13;;22377:14;22504:51;;22542:13;;22504:51;:::i;:::-;;;;-1:-1:-1;;;;;;;22566:14:0;;;;;;:8;:14;;;;;:34;;:45;;22604:7;;22566:14;:45;;22604:7;;22566:45;:::i;:::-;;;;-1:-1:-1;;22627:13:0;;-1:-1:-1;;;22627:13:0;;;;22624:99;;;22691:18;22701:8;22691:7;:18;:::i;:::-;-1:-1:-1;;;;;22656:14:0;;;;;;:8;:14;;;;;:29;;:55;;:29;;:14;:55;;;;;:::i;:::-;;;;-1:-1:-1;;22624:99:0;22743:5;;:38;;-1:-1:-1;;;22743:38:0;;-1:-1:-1;;;;;11286:32:1;;;22743:38:0;;;11268:51:1;11335:18;;;11328:34;;;22743:5:0;;;;:17;;11241:18:1;;22743:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22799:29:0;;;-1:-1:-1;;;;;11286:32:1;;11268:51;;11350:2;11335:18;;11328:34;;;22799:29:0;;-1:-1:-1;11241:18:1;;-1:-1:-1;22799:29:0;;;;;;;22162:674;;22120:716;:::o;24813:431::-;24932:5;;24910:40;;-1:-1:-1;;;24910:40:0;;-1:-1:-1;;;;;24932:5:0;;;24910:40;;;11268:51:1;11335:18;;;11328:34;;;24910:5:0;:13;;;;;;11241:18:1;;24910:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24961:5:0;;:40;;-1:-1:-1;;;24961:40:0;;-1:-1:-1;;;;;24983:5:0;11286:32:1;;24961:40:0;;;11268:51:1;11335:18;;;11328:34;;;24961:5:0;;;;:13;;11241:18:1;;24961:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25051:19;25088:1;25073:12;:16;;;;:::i;:::-;25051:38;-1:-1:-1;25100:21:0;25124:26;25051:38;25124:12;:26;:::i;:::-;25167:8;;25100:50;;-1:-1:-1;25161:30:0;;-1:-1:-1;;;;;25167:8:0;25100:50;25161:5;:30::i;:::-;25208:14;;25202:34;;-1:-1:-1;;;;;25208:14:0;25224:11;25202:5;:34::i;23929:690::-;-1:-1:-1;;;;;24082:19:0;;;24122:1;24082:19;;;:8;:19;;;;;:28;;;;24078:165;;24152:9;-1:-1:-1;;;;;24145:16:0;:3;-1:-1:-1;;;;;24145:16:0;;24141:91;;-1:-1:-1;;;;;24182:19:0;;;;;;;:8;:19;;;;;:28;;:34;;-1:-1:-1;;;;;;24182:34:0;;;;;;;;;;24141:91;-1:-1:-1;;;;;24270:19:0;;;24255:12;24270:19;;;:8;:19;;;;;:28;;;;24379:18;;;;;:31;;;24409:1;24401:5;:9;24379:31;24375:227;;;24427:18;24433:4;24439:5;24427;:18::i;:::-;-1:-1:-1;;;;;24460:14:0;;;;;;:8;:14;;;;;:27;;:36;;24491:5;;24460:14;:36;;24491:5;;24460:36;:::i;:::-;;;;;;;;24532:5;24511:17;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;24375:227:0;;-1:-1:-1;24375:227:0;;24574:8;;24568:22;;-1:-1:-1;;;;;24574:8:0;24584:5;24568;:22::i;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;589:131::-;-1:-1:-1;;;;;664:31:1;;654:42;;644:70;;710:1;707;700:12;725:247;784:6;837:2;825:9;816:7;812:23;808:32;805:52;;;853:1;850;843:12;805:52;892:9;879:23;911:31;936:5;911:31;:::i;1905:539::-;2005:6;2013;2021;2029;2082:3;2070:9;2061:7;2057:23;2053:33;2050:53;;;2099:1;2096;2089:12;2050:53;2138:9;2125:23;2157:31;2182:5;2157:31;:::i;:::-;2207:5;-1:-1:-1;2264:2:1;2249:18;;2236:32;2277:33;2236:32;2277:33;:::i;:::-;1905:539;;2329:7;;-1:-1:-1;;;;2383:2:1;2368:18;;2355:32;;2434:2;2419:18;2406:32;;1905:539::o;2449:315::-;2517:6;2525;2578:2;2566:9;2557:7;2553:23;2549:32;2546:52;;;2594:1;2591;2584:12;2546:52;2633:9;2620:23;2652:31;2677:5;2652:31;:::i;:::-;2702:5;2754:2;2739:18;;;;2726:32;;-1:-1:-1;;;2449:315:1:o;3227:658::-;3398:2;3450:21;;;3520:13;;3423:18;;;3542:22;;;3369:4;;3398:2;3621:15;;;;3595:2;3580:18;;;3369:4;3664:195;3678:6;3675:1;3672:13;3664:195;;;3743:13;;-1:-1:-1;;;;;3739:39:1;3727:52;;3834:15;;;;3799:12;;;;3775:1;3693:9;3664:195;;4156:118;4242:5;4235:13;4228:21;4221:5;4218:32;4208:60;;4264:1;4261;4254:12;4279:376;4341:6;4349;4402:2;4390:9;4381:7;4377:23;4373:32;4370:52;;;4418:1;4415;4408:12;4370:52;4457:9;4444:23;4476:28;4498:5;4476:28;:::i;:::-;4523:5;-1:-1:-1;4580:2:1;4565:18;;4552:32;4593:30;4552:32;4593:30;:::i;:::-;4642:7;4632:17;;;4279:376;;;;;:::o;4660:523::-;4764:6;4772;4780;4788;4796;4804;4857:3;4845:9;4836:7;4832:23;4828:33;4825:53;;;4874:1;4871;4864:12;4825:53;-1:-1:-1;;4897:23:1;;;4967:2;4952:18;;4939:32;;-1:-1:-1;5018:2:1;5003:18;;4990:32;;5069:2;5054:18;;5041:32;;-1:-1:-1;5120:3:1;5105:19;;5092:33;;-1:-1:-1;5172:3:1;5157:19;5144:33;;-1:-1:-1;4660:523:1;-1:-1:-1;4660:523:1:o;5410:383::-;5487:6;5495;5503;5556:2;5544:9;5535:7;5531:23;5527:32;5524:52;;;5572:1;5569;5562:12;5524:52;5611:9;5598:23;5630:31;5655:5;5630:31;:::i;:::-;5680:5;5732:2;5717:18;;5704:32;;-1:-1:-1;5783:2:1;5768:18;;;5755:32;;5410:383;-1:-1:-1;;;5410:383:1:o;5798:456::-;5875:6;5883;5891;5944:2;5932:9;5923:7;5919:23;5915:32;5912:52;;;5960:1;5957;5950:12;5912:52;5999:9;5986:23;6018:31;6043:5;6018:31;:::i;:::-;6068:5;-1:-1:-1;6125:2:1;6110:18;;6097:32;6138:33;6097:32;6138:33;:::i;:::-;5798:456;;6190:7;;-1:-1:-1;;;6244:2:1;6229:18;;;;6216:32;;5798:456::o;6481:336::-;6683:2;6665:21;;;6722:2;6702:18;;;6695:30;-1:-1:-1;;;6756:2:1;6741:18;;6734:42;6808:2;6793:18;;6481:336::o;7520:127::-;7581:10;7576:3;7572:20;7569:1;7562:31;7612:4;7609:1;7602:15;7636:4;7633:1;7626:15;7652:168;7692:7;7758:1;7754;7750:6;7746:14;7743:1;7740:21;7735:1;7728:9;7721:17;7717:45;7714:71;;;7765:18;;:::i;:::-;-1:-1:-1;7805:9:1;;7652:168::o;7825:217::-;7865:1;7891;7881:132;;7935:10;7930:3;7926:20;7923:1;7916:31;7970:4;7967:1;7960:15;7998:4;7995:1;7988:15;7881:132;-1:-1:-1;8027:9:1;;7825:217::o;8750:125::-;8790:4;8818:1;8815;8812:8;8809:34;;;8823:18;;:::i;:::-;-1:-1:-1;8860:9:1;;8750:125::o;9229:128::-;9269:3;9300:1;9296:6;9293:1;9290:13;9287:39;;;9306:18;;:::i;:::-;-1:-1:-1;9342:9:1;;9229:128::o;10557:343::-;10759:2;10741:21;;;10798:2;10778:18;;;10771:30;-1:-1:-1;;;10832:2:1;10817:18;;10810:49;10891:2;10876:18;;10557:343::o;10905:184::-;10975:6;11028:2;11016:9;11007:7;11003:23;10999:32;10996:52;;;11044:1;11041;11034:12;10996:52;-1:-1:-1;11067:16:1;;10905:184;-1:-1:-1;10905:184:1:o;11373:245::-;11440:6;11493:2;11481:9;11472:7;11468:23;11464:32;11461:52;;;11509:1;11506;11499:12;11461:52;11541:9;11535:16;11560:28;11582:5;11560:28;:::i;14088:127::-;14149:10;14144:3;14140:20;14137:1;14130:31;14180:4;14177:1;14170:15;14204:4;14201:1;14194:15;14220:135;14259:3;14280:17;;;14277:43;;14300:18;;:::i;:::-;-1:-1:-1;14347:1:1;14336:13;;14220:135::o;14360:127::-;14421:10;14416:3;14412:20;14409:1;14402:31;14452:4;14449:1;14442:15;14476:4;14473:1;14466:15;14837:127;14898:10;14893:3;14889:20;14886:1;14879:31;14929:4;14926:1;14919:15;14953:4;14950:1;14943:15

Swarm Source

ipfs://32829c9978333462afa5d523957186fbb1cedd97a0be47a818070781e1a41114
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.