Contract 0x112536829069dDF8868De6F8283eA7C3cD3E6743 3

 
 
Txn Hash
Method
Block
From
To
Value
0xf66302483536a55638e95379c789519552eaef9e85fb98b1ef22c554972a6547Withdraw161272512022-12-06 17:29:3517 hrs 48 mins ago0x390bd8b99d5ff0633f981f80cfecb68e971902e5 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00139075 16.26326862
0x8bd3a7abdd50d87c8ebfee4f30376d7bf9e882554c0dcc507a6674ecf487a76fWithdraw161272502022-12-06 17:29:2317 hrs 48 mins ago0x390bd8b99d5ff0633f981f80cfecb68e971902e5 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00167279 16.30166359
0x3cf55ec9245274250cf8d71ebea5ba1c10e3c63e55ad6646aa0ecf17abf268efWithdraw161210132022-12-05 20:36:591 day 14 hrs ago0x3d247eaeb731fb3446f629d91fb1b4666c50b235 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00124388 14.54579242
0xad5d62f119bc6f3524e3c4db4b06648b0da860b3b118c929db46e81576b4a7b5Withdraw161151682022-12-05 0:57:472 days 10 hrs agoENS Name trevonjames.eth IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00119326 13.95383112
0xf79bd7eea1b3ee7fdd3fcf83c2fdb0cee6eeda7ee5d74eeb59a8f1eb666a0319Withdraw161132972022-12-04 18:41:352 days 16 hrs ago0x047ea31614fc085ce7b80412fbab65fd51a8bb7a IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00134879 13.14420093
0x3a4e19d87fa87943946f9bb5edcbf87ba074f62971fae69945acab70ee9ddb17Withdraw161098542022-12-04 7:07:593 days 4 hrs ago0x666024e9855bd8dcbbf1a91c2d40f31c27699254 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00110834 12.96084037
0xf7c1e6c0d3b3d02efda869498a7a18d461141d493c7acc9978fc17c67b4993feSell161098522022-12-04 7:07:233 days 4 hrs ago0x666024e9855bd8dcbbf1a91c2d40f31c27699254 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00120581 13.43747436
0x926f87dfbcc80bade98ca4b9fae67ac291176e4538e89a8ed9e99cd97bb319b6Withdraw160939022022-12-02 1:41:355 days 9 hrs ago0x067053411269f540a09fcd7babb7747472af8745 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00102618 12
0xfceddc0203eec5aa6bd83eb444a9aeba1176e5aff19e224b8967ef14337ca0e2Withdraw160657602022-11-28 3:21:599 days 7 hrs ago0xde3c0b11e86e2d1e4cd4c2d66276e1a1ca78babd IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00098155 11.47812639
0x560c162bbbfdb210b372b2aca9d717c0778f123527efeb563ed91fbfb537d71bSell160657562022-11-28 3:21:119 days 7 hrs ago0xde3c0b11e86e2d1e4cd4c2d66276e1a1ca78babd IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00105919 11.80364146
0xb829d89421ddb2adea22771356a4efaf8e615fb915d9fcd190a3ab11741f831fStake End160657512022-11-28 3:20:119 days 7 hrs ago0xde3c0b11e86e2d1e4cd4c2d66276e1a1ca78babd IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.01393904 10.68623981
0x49c98edf501b453a30223ea5ba83a1ca4d67a5bc3c505df1e0ec2fc1d57f866cWithdraw160605812022-11-27 9:59:1110 days 1 hr ago0x666024e9855bd8dcbbf1a91c2d40f31c27699254 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00096261 11.25671253
0x416ad76939a750160200e6d573ae5286e03ab2b683291c1fff0c12a4dd03beb5Withdraw160591412022-11-27 5:10:2310 days 6 hrs ago0x583a013373a9e91fb64cbffa999668bedfdcf87c IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00102906 10.22779418
0x737be04613a4f4476d60c854f3b6b7f6ac46c7333aa85c899720ad93c1a66881Sell160591402022-11-27 5:10:1110 days 6 hrs ago0x583a013373a9e91fb64cbffa999668bedfdcf87c IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00085205 10.63112783
0x3e185764ac9e7e906a3dc431a560bafd93128dec2ddd9059a0f012cc3a4050d7Withdraw160575342022-11-26 23:47:3510 days 11 hrs ago0x3d247eaeb731fb3446f629d91fb1b4666c50b235 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00129848 12.65396595
0xcd87b8c0bb97e918e46ba34484af5054d7f1daf212ec12e475a32d1b0d9d3e06Withdraw160570832022-11-26 22:16:5910 days 13 hrs ago0x666024e9855bd8dcbbf1a91c2d40f31c27699254 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00112983 11.01043582
0xa6cfc2fd4873c213ebd65ad0094c2c0cc6229e17498885fee5d7966e1709ae3cWithdraw160544262022-11-26 13:21:3510 days 21 hrs ago0x2e7778790c4812d4f4ade33a7afcfdecdbc3f726 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.0010572 12.36285845
0xfefdb705ddb26221dd67479e2d4942a061885abded747ae3405bae30fbad538eWithdraw160500332022-11-25 22:39:1111 days 12 hrs ago0xc60fabf2420b5cd0712389ddcc923bbcda16d74c IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00129393 12.60958458
0x4416b7b1197a50a0bfdbd13d1251dd0c3adf3a35067f256e25c6fe75cd1a9cf2Sell160500312022-11-25 22:38:4711 days 12 hrs ago0xc60fabf2420b5cd0712389ddcc923bbcda16d74c IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00104805 11.68099919
0xdf5f0789fc4c412189ade3c1309d53808c33ac4d715ebf16a7a99e511338e4ddStake End160500252022-11-25 22:37:3511 days 12 hrs ago0xc60fabf2420b5cd0712389ddcc923bbcda16d74c IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00456815 11.98057026
0xf6ae631b7cdc7008ad5ea45c125a52cc4b48a5d4ec1fcce763ecabe1d578b517Withdraw160360502022-11-23 23:46:3513 days 11 hrs agoENS Name trevonjames.eth IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00153873 14.99521892
0xac5f8f105f89ceb3f3a7b99a2f39d930ad6350ec985ed6cae9eeb0b64aad34adWithdraw160148982022-11-21 0:46:3516 days 10 hrs ago0xde3c0b11e86e2d1e4cd4c2d66276e1a1ca78babd IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00110084 12.87315853
0x126c8f74066700a796f87f2d792e7fa2e1d6e21b56cc558d507a66ab148909afSell160148962022-11-21 0:46:1116 days 10 hrs ago0xde3c0b11e86e2d1e4cd4c2d66276e1a1ca78babd IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00110893 12.35623346
0x61adb8e6572cbd363420ae8a9e9b2934ca578306bd49e6663f50db75ed7891fbStake End160148922022-11-21 0:45:2316 days 10 hrs ago0xde3c0b11e86e2d1e4cd4c2d66276e1a1ca78babd IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.01490368 11.56862773
0x4d52ce50cb449202c79f0347216a47fd9f56eee0fe21c32ae1d0accad23f7531Withdraw160012262022-11-19 2:58:1118 days 8 hrs ago0x067053411269f540a09fcd7babb7747472af8745 IN  0x112536829069ddf8868de6f8283ea7c3cd3e67430 Ether0.00102618 12
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HTI

Compiler Version
v0.5.13+commit.5b0b510c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-05-23
*/

pragma solidity ^0.5.13;

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
      if (a == 0) {
        return 0;
      }
      c = a * b;
      assert(c / a == b);
      return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
      return a / b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
      assert(b <= a);
      return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
      c = a + b;
      assert(c >= a);
      return c;
    }
}

contract DIST {
    function accounting() public;
}

contract EXCH {
    function appreciateTokenPrice(uint256 _amount) public;
}

contract TOKEN {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function stakeStart(uint256 newStakedHearts, uint256 newStakedDays) external;
    function stakeEnd(uint256 stakeIndex, uint40 stakeIdParam) external;
    function stakeCount(address stakerAddr) external view returns (uint256);
    function stakeLists(address owner, uint256 stakeIndex) external view returns (uint40, uint72, uint72, uint16, uint16, uint16, bool);
    function currentDay() external view returns (uint256);
}

contract Ownable {
    address public owner;

    constructor() public {
      owner = address(0x583A013373A9e91fB64CBFFA999668bEdfdcf87C);
    }

    modifier onlyOwner() {
      require(msg.sender == owner);
      _;
    }
}

contract HTI is Ownable {
    using SafeMath for uint256;

    uint256 ACTIVATION_TIME = 1590274800;

    modifier isActivated {
        require(now >= ACTIVATION_TIME);

        if (now <= (ACTIVATION_TIME + 2 minutes)) {
            require(tx.gasprice <= 0.2 szabo);
        }
        _;
    }

    modifier onlyCustodian() {
        require(msg.sender == custodianAddress);
        _;
    }

    modifier hasDripped {
        if (dividendPool > 0) {
          uint256 secondsPassed = SafeMath.sub(now, lastDripTime);
          uint256 dividends = secondsPassed.mul(dividendPool).div(dailyRate);

          if (dividends > dividendPool) {
            dividends = dividendPool;
          }

          profitPerShare = SafeMath.add(profitPerShare, (dividends * divMagnitude) / tokenSupply);
          dividendPool = dividendPool.sub(dividends);
          lastDripTime = now;
        }

        if (hexToSendFund("hexmax") >= 10000e8) {
            payFund("hexmax");
        }

        if (hexToSendFund("stableth") >= 10000e8) {
            payFund("stableth");
        }
        _;
    }

    modifier onlyTokenHolders {
        require(myTokens(true) > 0);
        _;
    }

    modifier onlyDivis {
        require(myDividends(true) > 0);
        _;
    }

    modifier isStakeActivated {
        require(stakeActivated == true);
        _;
    }

    event onDonation(
        address indexed customerAddress,
        uint256 tokens
    );

    event Transfer(
        address indexed from,
        address indexed to,
        uint256 tokens
    );

    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingHEX,
        uint256 tokensMinted,
        address indexed referredBy,
        uint256 timestamp
    );

    event onTokenSell(
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 hexEarned,
        uint256 timestamp
    );

    event onRoll(
        address indexed customerAddress,
        uint256 hexRolled,
        uint256 tokensMinted
    );

    event onWithdraw(
        address indexed customerAddress,
        uint256 hexWithdrawn
    );

    event onStakeStart(
        address indexed customerAddress,
        uint256 uniqueID,
        uint256 timestamp
    );

    event onStakeEnd(
        address indexed customerAddress,
        uint256 uniqueID,
        uint256 returnAmount,
        uint256 timestamp
    );

    string public name = "Infinihex";
    string public symbol = "HEX5";
    uint8 constant public decimals = 8;
    uint256 constant private divMagnitude = 2 ** 64;

    uint8 public percentage1 = 2;
    uint8 public percentage2 = 2;
    uint32 public dailyRate = 4320000;
    uint8 constant private buyInFee = 40;
    uint8 constant private rewardFee = 5;
    uint8 constant private referralFee = 1;
    uint8 constant private devFee = 1;
    uint8 constant private hexMaxFee = 1;
    uint8 constant private stableETHFee = 2;
    uint8 constant private sellOutFee = 9;
    uint8 constant private transferFee = 1;

    mapping(address => uint256) private tokenBalanceLedger;
    mapping(address => uint256) public lockedTokenBalanceLedger;
    mapping(address => uint256) private referralBalance;
    mapping(address => int256) private payoutsTo;

    struct Stats {
       uint256 deposits;
       uint256 withdrawals;
       uint256 staked;
       uint256 activeStakes;
    }

    mapping(address => Stats) public playerStats;

    uint256 public dividendPool = 0;
    uint256 public lastDripTime = ACTIVATION_TIME;
    uint256 public referralRequirement = 1000e8;
    uint256 public totalStakeBalance = 0;
    uint256 public totalPlayer = 0;
    uint256 public totalDonation = 0;
    uint256 public totalStableFundReceived = 0;
    uint256 public totalStableFundCollected = 0;
    uint256 public totalMaxFundReceived = 0;
    uint256 public totalMaxFundCollected = 0;

    uint256 private tokenSupply = 0;
    uint256 private profitPerShare = 0;

    address public uniswapAddress;
    address public approvedAddress1;
    address public approvedAddress2;
    address public distributionAddress;
    address public custodianAddress;

    EXCH hexmax;
    DIST stablethdist;

    TOKEN erc20;

    struct StakeStore {
      uint40 stakeID;
      uint256 hexAmount;
      uint72 stakeShares;
      uint16 lockedDay;
      uint16 stakedDays;
      uint16 unlockedDay;
      bool started;
      bool ended;
    }

    bool stakeActivated = true;
    bool feedActivated = true;
    mapping(address => mapping(uint256 => StakeStore)) public stakeLists;

    constructor() public {
        custodianAddress = address(0x24B23bB643082026227e945C7833B81426057b10);
        hexmax = EXCH(address(0xd52dca990CFC3760e0Cb0A60D96BE0da43fEbf19));
        uniswapAddress = address(0x05cDe89cCfa0adA8C88D5A23caaa79Ef129E7883);
        distributionAddress = address(0x699C01b92f2b036A1879416fC1977f60153A1729);
        stablethdist = DIST(distributionAddress);
        erc20 = TOKEN(address(0x2b591e99afE9f32eAA6214f7B7629768c40Eeb39));
    }

    function() payable external {
        revert();
    }

    function checkAndTransferHEX(uint256 _amount) private {
        require(erc20.transferFrom(msg.sender, address(this), _amount) == true, "transfer must succeed");
    }

    function distribute(uint256 _amount) isActivated public {
        require(_amount > 0, "must be a positive value");
        checkAndTransferHEX(_amount);
        totalDonation += _amount;
        profitPerShare = SafeMath.add(profitPerShare, (_amount * divMagnitude) / tokenSupply);
        emit onDonation(msg.sender, _amount);
    }

    function distributePool(uint256 _amount) public {
        require(_amount > 0 && tokenSupply > 0, "must be a positive value and have supply");
        checkAndTransferHEX(_amount);
        totalDonation += _amount;
        dividendPool = dividendPool.add(_amount);
        emit onDonation(msg.sender, _amount);
    }

    function payFund(bytes32 exchange) public {
        if (exchange == "hexmax") {
          uint256 _hexToPay = totalMaxFundCollected.sub(totalMaxFundReceived);
          require(_hexToPay > 0);
          totalMaxFundReceived = totalMaxFundReceived.add(_hexToPay);
          erc20.approve(address(0xd52dca990CFC3760e0Cb0A60D96BE0da43fEbf19), _hexToPay);
          hexmax.appreciateTokenPrice(_hexToPay);
        } else if (exchange == "stableth") {
          uint256 _hexToPay = totalStableFundCollected.sub(totalStableFundReceived);
          require(_hexToPay > 0);
          totalStableFundReceived = totalStableFundReceived.add(_hexToPay);

          if (feedActivated && uniswapAddress.balance >= 500e18) {
            erc20.transfer(distributionAddress, _hexToPay);
            uint256 _balance = erc20.balanceOf(distributionAddress);

            if (_balance >= 10000e8) {
              stablethdist.accounting();
            }
          } else {
            profitPerShare = SafeMath.add(profitPerShare, (_hexToPay * divMagnitude) / tokenSupply);
          }
        }
    }

    function roll() hasDripped onlyDivis public {
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false);
        payoutsTo[_customerAddress] +=  (int256) (_dividends * divMagnitude);
        _dividends += referralBalance[_customerAddress];
        referralBalance[_customerAddress] = 0;
        uint256 _tokens = purchaseTokens(address(0), _customerAddress, _dividends);
        emit onRoll(_customerAddress, _dividends, _tokens);
    }

    function withdraw() hasDripped onlyDivis public {
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false);
        payoutsTo[_customerAddress] += (int256) (_dividends * divMagnitude);
        _dividends += referralBalance[_customerAddress];
        referralBalance[_customerAddress] = 0;
        erc20.transfer(_customerAddress, _dividends);
        playerStats[_customerAddress].withdrawals += _dividends;
        emit onWithdraw(_customerAddress, _dividends);
    }

    function buy(address _referredBy, uint256 _amount) hasDripped public returns (uint256) {
        checkAndTransferHEX(_amount);
        return purchaseTokens(_referredBy, msg.sender, _amount);
    }

    function buyFor(address _referredBy, address _customerAddress, uint256 _amount) hasDripped public returns (uint256) {
        checkAndTransferHEX(_amount);
        return purchaseTokens(_referredBy, _customerAddress, _amount);
    }

    function _purchaseTokens(address _customerAddress, uint256 _incomingHEX, uint256 _rewards) private returns(uint256) {
        uint256 _amountOfTokens = _incomingHEX;
        uint256 _fee = _rewards * divMagnitude;

        require(_amountOfTokens > 0 && _amountOfTokens.add(tokenSupply) > tokenSupply);

        if (tokenSupply > 0) {
            tokenSupply = tokenSupply.add(_amountOfTokens);
            profitPerShare += (_rewards * divMagnitude / tokenSupply);
            _fee = _fee - (_fee - (_amountOfTokens * (_rewards * divMagnitude / tokenSupply)));
        } else {
            tokenSupply = _amountOfTokens;
        }

        tokenBalanceLedger[_customerAddress] =  tokenBalanceLedger[_customerAddress].add(_amountOfTokens);

        int256 _updatedPayouts = (int256) (profitPerShare * _amountOfTokens - _fee);
        payoutsTo[_customerAddress] += _updatedPayouts;

        emit Transfer(address(0), _customerAddress, _amountOfTokens);

        return _amountOfTokens;
    }

    function purchaseTokens(address _referredBy, address _customerAddress, uint256 _incomingHEX) isActivated private returns (uint256) {
        if (playerStats[_customerAddress].deposits == 0) {
            totalPlayer++;
        }

        playerStats[_customerAddress].deposits += _incomingHEX;

        require(_incomingHEX > 0);

        uint256 _dividendFee = _incomingHEX.mul(buyInFee).div(100);
        uint256 _rewardFee = _incomingHEX.mul(rewardFee).div(100);
        uint256 _referralBonus = _incomingHEX.mul(referralFee).div(100);
        uint256 _devFee = _incomingHEX.mul(devFee).div(100);
        uint256 _hexMaxFee = _incomingHEX.mul(hexMaxFee).div(100);
        uint256 _stableETHFee = _incomingHEX.mul(stableETHFee).div(100);

        uint256 _entryFee = _incomingHEX.mul(50).div(100);
        uint256 _taxedHEX = _incomingHEX.sub(_entryFee);

        _purchaseTokens(owner, _devFee, 0);

        if (_referredBy != address(0) && _referredBy != _customerAddress && tokenBalanceLedger[_referredBy] >= referralRequirement) {
            referralBalance[_referredBy] = referralBalance[_referredBy].add(_referralBonus);
        } else {
            _rewardFee = _rewardFee.add(_referralBonus);
        }

        uint256 _amountOfTokens = _purchaseTokens(_customerAddress, _taxedHEX, _rewardFee);

        dividendPool = dividendPool.add(_dividendFee);
        totalMaxFundCollected = totalMaxFundCollected.add(_hexMaxFee);
        totalStableFundCollected = totalStableFundCollected.add(_stableETHFee);

        emit onTokenPurchase(_customerAddress, _incomingHEX, _amountOfTokens, _referredBy, now);

        return _amountOfTokens;
    }

    function sell(uint256 _amountOfTokens) isActivated hasDripped onlyTokenHolders public {
        address _customerAddress = msg.sender;
        require(_amountOfTokens > 0 && _amountOfTokens <= tokenBalanceLedger[_customerAddress].sub(lockedTokenBalanceLedger[_customerAddress]));

        uint256 _dividendFee = _amountOfTokens.mul(sellOutFee).div(100);
        uint256 _devFee = _amountOfTokens.mul(devFee).div(100);
        uint256 _taxedHEX = _amountOfTokens.sub(_dividendFee).sub(_devFee);

        _purchaseTokens(owner, _devFee, 0);

        tokenSupply = tokenSupply.sub(_amountOfTokens);
        tokenBalanceLedger[_customerAddress] = tokenBalanceLedger[_customerAddress].sub(_amountOfTokens);

        int256 _updatedPayouts = (int256) (profitPerShare * _amountOfTokens + (_taxedHEX * divMagnitude));
        payoutsTo[_customerAddress] -= _updatedPayouts;

        dividendPool = dividendPool.add(_dividendFee);

        emit Transfer(_customerAddress, address(0), _amountOfTokens);
        emit onTokenSell(_customerAddress, _amountOfTokens, _taxedHEX, now);
    }

    function transfer(address _toAddress, uint256 _amountOfTokens) isActivated hasDripped onlyTokenHolders external returns (bool) {
        address _customerAddress = msg.sender;
        require(_amountOfTokens > 0 && _amountOfTokens <= tokenBalanceLedger[_customerAddress].sub(lockedTokenBalanceLedger[_customerAddress]));

        if (myDividends(true) > 0) {
            withdraw();
        }

        uint256 _tokenFee = _amountOfTokens.mul(transferFee).div(100);
        uint256 _taxedTokens = _amountOfTokens.sub(_tokenFee);

        tokenBalanceLedger[_customerAddress] = tokenBalanceLedger[_customerAddress].sub(_amountOfTokens);
        tokenBalanceLedger[_toAddress] = tokenBalanceLedger[_toAddress].add(_taxedTokens);
        tokenBalanceLedger[owner] = tokenBalanceLedger[owner].add(_tokenFee);

        payoutsTo[_customerAddress] -= (int256) (profitPerShare * _amountOfTokens);
        payoutsTo[_toAddress] += (int256) (profitPerShare * _taxedTokens);
        payoutsTo[owner] += (int256) (profitPerShare * _tokenFee);

        emit Transfer(_customerAddress, owner, _tokenFee);
        emit Transfer(_customerAddress, _toAddress, _taxedTokens);

        return true;
    }

    function stakeStart(uint256 _amount, uint256 _days) public isStakeActivated {
        require(_amount <= 4722366482869645213695);
        require(balanceOf(msg.sender, true) >= _amount);

        erc20.stakeStart(_amount, _days); // revert or succeed

        uint256 _stakeIndex;
        uint40 _stakeID;
        uint72 _stakeShares;
        uint16 _lockedDay;
        uint16 _stakedDays;

        _stakeIndex = erc20.stakeCount(address(this));
        _stakeIndex = SafeMath.sub(_stakeIndex, 1);

        (_stakeID,,_stakeShares,_lockedDay,_stakedDays,,) = erc20.stakeLists(address(this), _stakeIndex);

        uint256 _uniqueID =  uint256(keccak256(abi.encodePacked(_stakeID, _stakeShares))); // unique enough
        require(stakeLists[msg.sender][_uniqueID].started == false); // still check for collision
        stakeLists[msg.sender][_uniqueID].started = true;

        stakeLists[msg.sender][_uniqueID] = StakeStore(_stakeID, _amount, _stakeShares, _lockedDay, _stakedDays, uint16(0), true, false);

        totalStakeBalance = SafeMath.add(totalStakeBalance, _amount);

        playerStats[msg.sender].activeStakes += 1;
        playerStats[msg.sender].staked += _amount;

        lockedTokenBalanceLedger[msg.sender] = SafeMath.add(lockedTokenBalanceLedger[msg.sender], _amount);

        emit onStakeStart(msg.sender, _uniqueID, now);
    }

    function _stakeEnd(uint256 _stakeIndex, uint40 _stakeIdParam, uint256 _uniqueID) private view returns (uint16){
        uint40 _stakeID;
        uint72 _stakedHearts;
        uint72 _stakeShares;
        uint16 _lockedDay;
        uint16 _stakedDays;
        uint16 _unlockedDay;

        (_stakeID,_stakedHearts,_stakeShares,_lockedDay,_stakedDays,_unlockedDay,) = erc20.stakeLists(address(this), _stakeIndex);
        require(stakeLists[msg.sender][_uniqueID].started == true && stakeLists[msg.sender][_uniqueID].ended == false);
        require(stakeLists[msg.sender][_uniqueID].stakeID == _stakeIdParam && _stakeIdParam == _stakeID);
        require(stakeLists[msg.sender][_uniqueID].hexAmount == uint256(_stakedHearts));
        require(stakeLists[msg.sender][_uniqueID].stakeShares == _stakeShares);
        require(stakeLists[msg.sender][_uniqueID].lockedDay == _lockedDay);
        require(stakeLists[msg.sender][_uniqueID].stakedDays == _stakedDays);

        return _unlockedDay;
    }

    function stakeEnd(uint256 _stakeIndex, uint40 _stakeIdParam, uint256 _uniqueID) hasDripped public {
        uint16 _unlockedDay = _stakeEnd(_stakeIndex, _stakeIdParam, _uniqueID);

        if (_unlockedDay == 0){
          stakeLists[msg.sender][_uniqueID].unlockedDay = uint16(erc20.currentDay()); // no penalty/penalty/reward
        } else {
          stakeLists[msg.sender][_uniqueID].unlockedDay = _unlockedDay;
        }

        uint256 _balance = erc20.balanceOf(address(this));

        erc20.stakeEnd(_stakeIndex, _stakeIdParam); // revert or 0 or less or equal or more hex returned.
        stakeLists[msg.sender][_uniqueID].ended = true;

        uint256 _amount = SafeMath.sub(erc20.balanceOf(address(this)), _balance);
        uint256 _stakedAmount = stakeLists[msg.sender][_uniqueID].hexAmount;
        uint256 _difference;

        if (_amount <= _stakedAmount) {
          _difference = SafeMath.sub(_stakedAmount, _amount);
          tokenSupply = SafeMath.sub(tokenSupply, _difference);
          tokenBalanceLedger[msg.sender] = SafeMath.sub(tokenBalanceLedger[msg.sender], _difference);
          int256 _updatedPayouts = (int256) (profitPerShare * _difference);
          payoutsTo[msg.sender] -= _updatedPayouts;
          emit Transfer(msg.sender, address(0), _difference);
        } else if (_amount > _stakedAmount) {
          _difference = SafeMath.sub(_amount, _stakedAmount);
          _difference = purchaseTokens(address(0), msg.sender, _difference);
        }

        totalStakeBalance = SafeMath.sub(totalStakeBalance, _stakedAmount);
        playerStats[msg.sender].activeStakes -= 1;

        lockedTokenBalanceLedger[msg.sender] = SafeMath.sub(lockedTokenBalanceLedger[msg.sender], _stakedAmount);

        emit onStakeEnd(msg.sender, _uniqueID, _amount, now);
    }

    function setName(string memory _name) onlyOwner public
    {
        name = _name;
    }

    function setSymbol(string memory _symbol) onlyOwner public
    {
        symbol = _symbol;
    }

    function setHexStaking(bool _stakeActivated) onlyOwner public
    {
        stakeActivated = _stakeActivated;
    }

    function setFeeding(bool _feedActivated) onlyOwner public
    {
        feedActivated = _feedActivated;
    }

    function setUniswapAddress(address _proposedAddress) onlyOwner public
    {
       uniswapAddress = _proposedAddress;
    }

    function approveAddress1(address _proposedAddress) onlyOwner public
    {
       approvedAddress1 = _proposedAddress;
    }

    function approveAddress2(address _proposedAddress) onlyCustodian public
    {
       approvedAddress2 = _proposedAddress;
    }

    function setDistributionAddress() public
    {
        require(approvedAddress1 != address(0) && approvedAddress1 == approvedAddress2);
        distributionAddress = approvedAddress1;
        stablethdist = DIST(approvedAddress1);
    }

    function approveDrip1(uint8 _percentage) onlyOwner public
    {
        require(_percentage > 1 && _percentage < 6);
        percentage1 = _percentage;
    }

    function approveDrip2(uint8 _percentage) onlyCustodian public
    {
        require(_percentage > 1 && _percentage < 6);
        percentage2 = _percentage;
    }

    function setDripPercentage() public
    {
        require(percentage1 == percentage2);
        dailyRate = 86400 / percentage1 * 100;
    }

    function totalHexBalance() public view returns (uint256) {
        return erc20.balanceOf(address(this));
    }

    function totalSupply() public view returns(uint256) {
        return tokenSupply;
    }

    function myTokens(bool _stakeable) public view returns (uint256) {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress, _stakeable);
    }

    function myEstimateDividends(bool _includeReferralBonus, bool _dayEstimate) public view returns (uint256) {
        address _customerAddress = msg.sender;
        return _includeReferralBonus ? estimateDividendsOf(_customerAddress, _dayEstimate) + referralBalance[_customerAddress] : estimateDividendsOf(_customerAddress, _dayEstimate) ;
    }

    function estimateDividendsOf(address _customerAddress, bool _dayEstimate) public view returns (uint256) {
        uint256 _profitPerShare = profitPerShare;

        if (dividendPool > 0) {
          uint256 secondsPassed = 0;

          if (_dayEstimate == true){
            secondsPassed = 86400;
          } else {
            secondsPassed = SafeMath.sub(now, lastDripTime);
          }

          uint256 dividends = secondsPassed.mul(dividendPool).div(dailyRate);

          if (dividends > dividendPool) {
            dividends = dividendPool;
          }

          _profitPerShare = SafeMath.add(_profitPerShare, (dividends * divMagnitude) / tokenSupply);
        }

        return (uint256) ((int256) (_profitPerShare * tokenBalanceLedger[_customerAddress]) - payoutsTo[_customerAddress]) / divMagnitude;
    }

    function myDividends(bool _includeReferralBonus) public view returns (uint256) {
        address _customerAddress = msg.sender;
        return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance[_customerAddress] : dividendsOf(_customerAddress) ;
    }

    function dividendsOf(address _customerAddress) public view returns (uint256) {
        return (uint256) ((int256) (profitPerShare * tokenBalanceLedger[_customerAddress]) - payoutsTo[_customerAddress]) / divMagnitude;
    }

    function balanceOf(address _customerAddress, bool _stakeable) public view returns (uint256) {
        if (_stakeable == false) {
            return tokenBalanceLedger[_customerAddress];
        }
        else if (_stakeable == true) {
            return (tokenBalanceLedger[_customerAddress].sub(lockedTokenBalanceLedger[_customerAddress]));
        }
    }

    function sellPrice() public view returns (uint256) {
        uint256 _hex = 1e8;
        uint256 _dividendFee = _hex.mul(sellOutFee).div(100);
        uint256 _devFee = _hex.mul(devFee).div(100);

        return (_hex.sub(_dividendFee).sub(_devFee));
    }

    function buyPrice() public view returns(uint256) {
        uint256 _hex = 1e8;
        uint256 _entryFee = _hex.mul(50).div(100);
        return (_hex.add(_entryFee));
    }

    function calculateTokensReceived(uint256 _tronToSpend) public view returns (uint256) {
        uint256 _entryFee = _tronToSpend.mul(50).div(100);
        uint256 _amountOfTokens = _tronToSpend.sub(_entryFee);

        return _amountOfTokens;
    }

    function calculateHexReceived(uint256 _tokensToSell) public view returns (uint256) {
        require(_tokensToSell <= tokenSupply);
        uint256 _exitFee = _tokensToSell.mul(10).div(100);
        uint256 _taxedHEX = _tokensToSell.sub(_exitFee);

        return _taxedHEX;
    }

    function hexToSendFund(bytes32 exchange) public view returns(uint256) {
        if (exchange == "hexmax") {
          return totalMaxFundCollected.sub(totalMaxFundReceived);
        } else if (exchange == "stableth") {
          return totalStableFundCollected.sub(totalStableFundReceived);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"onDonation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"hexRolled","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensMinted","type":"uint256"}],"name":"onRoll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"uniqueID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"onStakeEnd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"uniqueID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"onStakeStart","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"incomingHEX","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensMinted","type":"uint256"},{"indexed":true,"internalType":"address","name":"referredBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensBurned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"hexEarned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"hexWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address","name":"_proposedAddress","type":"address"}],"name":"approveAddress1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_proposedAddress","type":"address"}],"name":"approveAddress2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"_percentage","type":"uint8"}],"name":"approveDrip1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"_percentage","type":"uint8"}],"name":"approveDrip2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"approvedAddress1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"approvedAddress2","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_customerAddress","type":"address"},{"internalType":"bool","name":"_stakeable","type":"bool"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_referredBy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_referredBy","type":"address"},{"internalType":"address","name":"_customerAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokensToSell","type":"uint256"}],"name":"calculateHexReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tronToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"custodianAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dailyRate","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"distribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"distributePool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"distributionAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dividendPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_customerAddress","type":"address"},{"internalType":"bool","name":"_dayEstimate","type":"bool"}],"name":"estimateDividendsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"exchange","type":"bytes32"}],"name":"hexToSendFund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastDripTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedTokenBalanceLedger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"_includeReferralBonus","type":"bool"},{"internalType":"bool","name":"_dayEstimate","type":"bool"}],"name":"myEstimateDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bool","name":"_stakeable","type":"bool"}],"name":"myTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"exchange","type":"bytes32"}],"name":"payFund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"percentage1","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percentage2","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"playerStats","outputs":[{"internalType":"uint256","name":"deposits","type":"uint256"},{"internalType":"uint256","name":"withdrawals","type":"uint256"},{"internalType":"uint256","name":"staked","type":"uint256"},{"internalType":"uint256","name":"activeStakes","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralRequirement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"roll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setDistributionAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setDripPercentage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_feedActivated","type":"bool"}],"name":"setFeeding","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_stakeActivated","type":"bool"}],"name":"setHexStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_proposedAddress","type":"address"}],"name":"setUniswapAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_stakeIndex","type":"uint256"},{"internalType":"uint40","name":"_stakeIdParam","type":"uint40"},{"internalType":"uint256","name":"_uniqueID","type":"uint256"}],"name":"stakeEnd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeLists","outputs":[{"internalType":"uint40","name":"stakeID","type":"uint40"},{"internalType":"uint256","name":"hexAmount","type":"uint256"},{"internalType":"uint72","name":"stakeShares","type":"uint72"},{"internalType":"uint16","name":"lockedDay","type":"uint16"},{"internalType":"uint16","name":"stakedDays","type":"uint16"},{"internalType":"uint16","name":"unlockedDay","type":"uint16"},{"internalType":"bool","name":"started","type":"bool"},{"internalType":"bool","name":"ended","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"stakeStart","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDonation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalHexBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalMaxFundCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalMaxFundReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalPlayer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStableFundCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStableFundReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalStakeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"uint256","name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"uniswapAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

635ec9aaf060015560c0604052600960808190527f496e66696e69686578000000000000000000000000000000000000000000000060a09081526200004891600291906200022f565b506040805180820190915260048082527f484558350000000000000000000000000000000000000000000000000000000060209092019182526200008f916003916200022f565b5060048054600260ff199091161761ff0019166102001765ffffffff000019166441eb0000001790556000600a819055600154600b5564174876e800600c55600d819055600e819055600f81905560108190556011819055601281905560138190556014819055601555601d805475010000000000000000000000000000000000000000007401000000000000000000000000000000000000000060ff60a01b199092169190911760ff60a81b19161790553480156200014e57600080fd5b50600080546001600160a01b031990811673583a013373a9e91fb64cbffa999668bedfdcf87c17909155601a805482167324b23bb643082026227e945c7833b81426057b10179055601b8054821673d52dca990cfc3760e0cb0a60d96be0da43febf191790556016805482167305cde89ccfa0ada8c88d5a23caaa79ef129e788317905560198054821673699c01b92f2b036a1879416fc1977f60153a17291790819055601c805483166001600160a01b0392909216919091179055601d8054909116732b591e99afe9f32eaa6214f7b7629768c40eeb39179055620002d4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200027257805160ff1916838001178555620002a2565b82800160010185558215620002a2579182015b82811115620002a257825182559160200191906001019062000285565b50620002b0929150620002b4565b5090565b620002d191905b80821115620002b05760008155600101620002bb565b90565b613ada80620002e46000396000f3fe6080604052600436106103955760003560e01c806374df19c3116101dc578063b84c824611610102578063cd5e3c5d116100a0578063ee2ac05f1161006f578063ee2ac05f14610dca578063f24c367514610ddf578063fba1f7b014610df4578063feed18ff14610e0957610395565b8063cd5e3c5d14610d08578063cdafbbb614610d1d578063e4849b3214610d76578063edcc8bee14610da057610395565b8063c47f0027116100dc578063c47f002714610bf2578063c494a08014610ca5578063c913e13014610cba578063cce7ec1314610ccf57610395565b8063b84c824614610b15578063b8f82c8514610bc8578063c32c885914610bdd57610395565b806395d89b411161017a578063a33124f611610149578063a33124f614610a6b578063a66e4e5f14610a80578063a9059cbb14610a95578063af8cfd1914610ae257610395565b806395d89b41146109cb5780639d60c201146109e05780639e2131c6146109f5578063a200dd4514610a2857610395565b80637c180a68116101b65780637c180a68146109445780638620410b146109775780638da5cb5b1461098c57806391c05b0b146109a157610395565b806374df19c3146108a8578063772865e2146108d65780637884e7c61461091157610395565b806330d172d5116102c15780634b7503341161025f5780635af788331161022e5780635af788331461080f57806362cc2cfe146108245780636403ba0a14610850578063688abbf71461087c57610395565b80634b750334146107745780634b82cab71461078957806352a438b8146107b557806356a5adc8146107e557610395565b806337fb7e211161029b57806337fb7e211461070b5780633ccfd60b146107205780633eaeef1b14610735578063487af2001461074a57610395565b806330d172d5146106cc578063313ce567146106e157806334949cc1146106f657610395565b80630e2feb0511610339578063254602a011610308578063254602a0146105c45780632607443b146105f85780632ae93f501461068c5780632f21f7ef146106b757610395565b80630e2feb051461052757806310d0ffdd146105585780631421a35f1461058257806318160ddd146105af57610395565b806305ab40601161037557806305ab40601461043157806306fdde031461045e5780630a0ab492146104e85780630b9c51b11461051257610395565b80621a17791461039a57806265318b146103e757806304b69a4a1461041a575b600080fd5b3480156103a657600080fd5b506103d5600480360360408110156103bd57600080fd5b506001600160a01b0381351690602001351515610e46565b60408051918252519081900360200190f35b3480156103f357600080fd5b506103d56004803603602081101561040a57600080fd5b50356001600160a01b0316610f17565b34801561042657600080fd5b5061042f610f50565b005b34801561043d57600080fd5b5061042f6004803603602081101561045457600080fd5b503560ff16610fa5565b34801561046a57600080fd5b50610473610ff7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104ad578181015183820152602001610495565b50505050905090810190601f1680156104da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104f457600080fd5b506103d56004803603602081101561050b57600080fd5b5035611082565b34801561051e57600080fd5b506103d56110d9565b34801561053357600080fd5b5061053c611156565b604080516001600160a01b039092168252519081900360200190f35b34801561056457600080fd5b506103d56004803603602081101561057b57600080fd5b5035611165565b34801561058e57600080fd5b5061042f600480360360208110156105a557600080fd5b503560ff1661119a565b3480156105bb57600080fd5b506103d56111e6565b3480156105d057600080fd5b506103d5600480360360408110156105e757600080fd5b5080351515906020013515156111ec565b34801561060457600080fd5b506106316004803603604081101561061b57600080fd5b506001600160a01b03813516906020013561122f565b6040805164ffffffffff909916895260208901979097526001600160481b039095168787015261ffff9384166060880152918316608087015290911660a0850152151560c0840152151560e083015251908190036101000190f35b34801561069857600080fd5b506106a16112a2565b6040805160ff9092168252519081900360200190f35b3480156106c357600080fd5b506103d56112ab565b3480156106d857600080fd5b506103d56112b1565b3480156106ed57600080fd5b506106a16112b7565b34801561070257600080fd5b506103d56112bc565b34801561071757600080fd5b5061053c6112c2565b34801561072c57600080fd5b5061042f6112d1565b34801561074157600080fd5b506103d56114e9565b34801561075657600080fd5b506103d56004803603602081101561076d57600080fd5b50356114ef565b34801561078057600080fd5b506103d5611518565b34801561079557600080fd5b5061042f600480360360208110156107ac57600080fd5b5035151561157a565b3480156107c157600080fd5b5061042f600480360360408110156107d857600080fd5b50803590602001356115af565b3480156107f157600080fd5b5061042f6004803603602081101561080857600080fd5b5035611a9a565b34801561081b57600080fd5b5061053c611b47565b34801561083057600080fd5b506103d56004803603602081101561084757600080fd5b50351515611b56565b34801561085c57600080fd5b5061042f6004803603602081101561087357600080fd5b50351515611b6a565b34801561088857600080fd5b506103d56004803603602081101561089f57600080fd5b50351515611b9f565b3480156108b457600080fd5b506108bd611bdf565b6040805163ffffffff9092168252519081900360200190f35b3480156108e257600080fd5b506103d5600480360360408110156108f957600080fd5b506001600160a01b0381351690602001351515611bf1565b34801561091d57600080fd5b5061042f6004803603602081101561093457600080fd5b50356001600160a01b0316611c5d565b34801561095057600080fd5b5061042f6004803603602081101561096757600080fd5b50356001600160a01b0316611c96565b34801561098357600080fd5b506103d5611ccf565b34801561099857600080fd5b5061053c611d06565b3480156109ad57600080fd5b5061042f600480360360208110156109c457600080fd5b5035611d15565b3480156109d757600080fd5b50610473611dfd565b3480156109ec57600080fd5b506103d5611e58565b348015610a0157600080fd5b5061042f60048036036020811015610a1857600080fd5b50356001600160a01b0316611e5e565b348015610a3457600080fd5b506103d560048036036060811015610a4b57600080fd5b506001600160a01b03813581169160208101359091169060400135611e97565b348015610a7757600080fd5b506103d5611f9a565b348015610a8c57600080fd5b5061053c611fa0565b348015610aa157600080fd5b50610ace60048036036040811015610ab857600080fd5b506001600160a01b038135169060200135611faf565b604080519115158252519081900360200190f35b348015610aee57600080fd5b506103d560048036036020811015610b0557600080fd5b50356001600160a01b03166122da565b348015610b2157600080fd5b5061042f60048036036020811015610b3857600080fd5b810190602081018135640100000000811115610b5357600080fd5b820183602082011115610b6557600080fd5b80359060200191846001830284011164010000000083111715610b8757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506122ec945050505050565b348015610bd457600080fd5b5061053c61231a565b348015610be957600080fd5b506103d5612329565b348015610bfe57600080fd5b5061042f60048036036020811015610c1557600080fd5b810190602081018135640100000000811115610c3057600080fd5b820183602082011115610c4257600080fd5b80359060200191846001830284011164010000000083111715610c6457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061232f945050505050565b348015610cb157600080fd5b506103d5612359565b348015610cc657600080fd5b5061042f61235f565b348015610cdb57600080fd5b506103d560048036036040811015610cf257600080fd5b506001600160a01b0381351690602001356123c1565b348015610d1457600080fd5b5061042f6124c4565b348015610d2957600080fd5b50610d5060048036036020811015610d4057600080fd5b50356001600160a01b0316612666565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610d8257600080fd5b5061042f60048036036020811015610d9957600080fd5b503561268d565b348015610dac57600080fd5b5061042f60048036036020811015610dc357600080fd5b5035612983565b348015610dd657600080fd5b506103d5612cf8565b348015610deb57600080fd5b506106a1612cfe565b348015610e0057600080fd5b506103d5612d0c565b348015610e1557600080fd5b5061042f60048036036060811015610e2c57600080fd5b5080359064ffffffffff6020820135169060400135612d12565b601554600a546000919015610ee057600060018415151415610e6c575062015180610e7b565b610e7842600b5461320d565b90505b600454600a54600091610eaf9163ffffffff62010000909204821691610ea391869161321f16565b9063ffffffff61324416565b9050600a54811115610ec05750600a545b610edb83601454600160401b840281610ed557fe5b04613257565b925050505b6001600160a01b038416600090815260086020908152604080832054600590925290912054600160401b9202030490505b92915050565b6001600160a01b0381166000908152600860209081526040808320546005909252822054601554600160401b929102030490505b919050565b60045460ff8082166101009092041614610f6957600080fd5b60045460ff166201518081610f7a57fe5b0460640262ffffff16600460026101000a81548163ffffffff021916908363ffffffff160217905550565b601a546001600160a01b03163314610fbc57600080fd5b60018160ff16118015610fd2575060068160ff16105b610fdb57600080fd5b6004805460ff9092166101000261ff0019909216919091179055565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561107a5780601f1061104f5761010080835404028352916020019161107a565b820191906000526020600020905b81548152906001019060200180831161105d57829003601f168201915b505050505081565b600081650d0caf0dac2f60d31b14156110b1576012546013546110aa9163ffffffff61320d16565b9050610f4b565b81670e6e8c2c4d8cae8d60c31b1415610f4b576010546011546110aa9163ffffffff61320d16565b601d54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561112457600080fd5b505afa158015611138573d6000803e3d6000fd5b505050506040513d602081101561114e57600080fd5b505190505b90565b6016546001600160a01b031681565b60008061117e6064610ea385603263ffffffff61321f16565b90506000611192848363ffffffff61320d16565b949350505050565b6000546001600160a01b031633146111b157600080fd5b60018160ff161180156111c7575060068160ff16105b6111d057600080fd5b6004805460ff191660ff92909216919091179055565b60145490565b60003383611203576111fe8184610e46565b611192565b6001600160a01b0381166000908152600760205260409020546112268285610e46565b01949350505050565b601e60209081526000928352604080842090915290825290208054600182015460029092015464ffffffffff90911691906001600160481b0381169061ffff600160481b8204811691600160581b8104821691600160681b8204169060ff600160781b8204811691600160801b90041688565b60045460ff1681565b60105481565b600a5481565b600881565b600d5481565b6019546001600160a01b031681565b600a541561135b5760006112e742600b5461320d565b600454600a549192506000916113139163ffffffff62010000909104811691610ea39186919061321f16565b9050600a548111156113245750600a545b61133b601554601454600160401b840281610ed557fe5b601555600a54611351908263ffffffff61320d16565b600a55505042600b555b64e8d4a51000611373650d0caf0dac2f60d31b611082565b1061138a5761138a650d0caf0dac2f60d31b612983565b64e8d4a510006113a4670e6e8c2c4d8cae8d60c31b611082565b106113bd576113bd670e6e8c2c4d8cae8d60c31b612983565b60006113c96001611b9f565b116113d357600080fd5b3360006113df81611b9f565b6001600160a01b0380841660008181526008602090815260408083208054600160401b880201905560078252808320805490849055601d54825163a9059cbb60e01b815260048101969096529601602485018190529051909650949093169363a9059cbb936044808501949193918390030190829087803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505050506040513d602081101561148d57600080fd5b50506001600160a01b038216600081815260096020908152604091829020600101805485019055815184815291517fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc9281900390910190a25050565b600c5481565b600060145482111561150057600080fd5b600061117e6064610ea385600a63ffffffff61321f16565b60006305f5e100816115366064610ea384600963ffffffff61321f16565b905060006115506064610ea385600163ffffffff61321f16565b905061157281611566858563ffffffff61320d16565b9063ffffffff61320d16565b935050505090565b6000546001600160a01b0316331461159157600080fd5b601d8054911515600160a01b0260ff60a01b19909216919091179055565b601d54600160a01b900460ff1615156001146115ca57600080fd5b6001600160481b038211156115de57600080fd5b816115ea336001611bf1565b10156115f557600080fd5b601d5460408051630a54871760e31b8152600481018590526024810184905290516001600160a01b03909216916352a438b89160448082019260009290919082900301818387803b15801561164957600080fd5b505af115801561165d573d6000803e3d6000fd5b5050601d546040805163033060d960e41b81523060048201529051600094508493508392839283926001600160a01b03909216916333060d9091602480820192602092909190829003018186803b1580156116b757600080fd5b505afa1580156116cb573d6000803e3d6000fd5b505050506040513d60208110156116e157600080fd5b505194506116f085600161320d565b601d5460408051632607443b60e01b81523060048201526024810184905290519297506001600160a01b0390911691632607443b9160448082019260e092909190829003018186803b15801561174557600080fd5b505afa158015611759573d6000803e3d6000fd5b505050506040513d60e081101561176f57600080fd5b5080516040808301516060840151608090940151825160d885901b6001600160d81b03191660208083019190915260b884901b6001600160b81b03191660258301528451808303600e018152602e9092018552815191810191909120336000908152601e835285812082825290925293902060020154939850909650929450919250600160781b900460ff161561180557600080fd5b6001601e6000336001600160a01b03166001600160a01b031681526020019081526020016000206000838152602001908152602001600020600201600f6101000a81548160ff0219169083151502179055506040518061010001604052808664ffffffffff168152602001898152602001856001600160481b031681526020018461ffff1681526020018361ffff168152602001600061ffff16815260200160011515815260200160001515815250601e6000336001600160a01b03166001600160a01b03168152602001908152602001600020600083815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff1602179055506020820151816001015560408201518160020160006101000a8154816001600160481b0302191690836001600160481b0316021790555060608201518160020160096101000a81548161ffff021916908361ffff160217905550608082015181600201600b6101000a81548161ffff021916908361ffff16021790555060a082015181600201600d6101000a81548161ffff021916908361ffff16021790555060c082015181600201600f6101000a81548160ff02191690831515021790555060e08201518160020160106101000a81548160ff021916908315150217905550905050611a02600d5489613257565b600d55336000908152600960209081526040808320600381018054600101905560020180548c0190556006909152902054611a3d9089613257565b336000818152600660209081526040918290209390935580518481524293810193909352805191927ffcb8123dad95f24c74ef07cb7e9635f8bfabd8882383ff341ce8999eb7aa3860929081900390910190a25050505050505050565b600081118015611aac57506000601454115b611ae75760405162461bcd60e51b8152600401808060200182810382526028815260200180613a7e6028913960400191505060405180910390fd5b611af081613264565b600f805482019055600a54611b0b908263ffffffff61325716565b600a5560408051828152905133917fabff69012e8615729dfcbe25d4c003cf6ce7c59d5ec16530f8d51b1b24646944919081900360200190a250565b6018546001600160a01b031681565b600033611b638184611bf1565b9392505050565b6000546001600160a01b03163314611b8157600080fd5b601d8054911515600160a81b0260ff60a81b19909216919091179055565b60003382611bb557611bb081610f17565b611b63565b6001600160a01b038116600090815260076020526040902054611bd782610f17565b019392505050565b60045462010000900463ffffffff1681565b600081611c1757506001600160a01b038216600090815260056020526040902054610f11565b60018215151415610f11576001600160a01b038316600090815260066020908152604080832054600590925290912054611c569163ffffffff61320d16565b9050610f11565b6000546001600160a01b03163314611c7457600080fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611cad57600080fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b60006305f5e10081611ced6064610ea384603263ffffffff61321f16565b9050611cff828263ffffffff61325716565b9250505090565b6000546001600160a01b031681565b600154421015611d2457600080fd5b6001546078014211611d4257642e90edd0003a1115611d4257600080fd5b60008111611d97576040805162461bcd60e51b815260206004820152601860248201527f6d757374206265206120706f7369746976652076616c75650000000000000000604482015290519081900360640190fd5b611da081613264565b600f805482019055601554601454611dc19190600160401b840281610ed557fe5b60155560408051828152905133917fabff69012e8615729dfcbe25d4c003cf6ce7c59d5ec16530f8d51b1b24646944919081900360200190a250565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561107a5780601f1061104f5761010080835404028352916020019161107a565b60135481565b601a546001600160a01b03163314611e7557600080fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600a5460009015611f24576000611eb042600b5461320d565b600454600a54919250600091611edc9163ffffffff62010000909104811691610ea39186919061321f16565b9050600a54811115611eed5750600a545b611f04601554601454600160401b840281610ed557fe5b601555600a54611f1a908263ffffffff61320d16565b600a55505042600b555b64e8d4a51000611f3c650d0caf0dac2f60d31b611082565b10611f5357611f53650d0caf0dac2f60d31b612983565b64e8d4a51000611f6d670e6e8c2c4d8cae8d60c31b611082565b10611f8657611f86670e6e8c2c4d8cae8d60c31b612983565b611f8f82613264565b611192848484613338565b60125481565b601a546001600160a01b031681565b6000600154421015611fc057600080fd5b6001546078014211611fde57642e90edd0003a1115611fde57600080fd5b600a5415612068576000611ff442600b5461320d565b600454600a549192506000916120209163ffffffff62010000909104811691610ea39186919061321f16565b9050600a548111156120315750600a545b612048601554601454600160401b840281610ed557fe5b601555600a5461205e908263ffffffff61320d16565b600a55505042600b555b64e8d4a51000612080650d0caf0dac2f60d31b611082565b1061209757612097650d0caf0dac2f60d31b612983565b64e8d4a510006120b1670e6e8c2c4d8cae8d60c31b611082565b106120ca576120ca670e6e8c2c4d8cae8d60c31b612983565b60006120d66001611b56565b116120e057600080fd5b33821580159061212357506001600160a01b03811660009081526006602090815260408083205460059092529091205461211f9163ffffffff61320d16565b8311155b61212c57600080fd5b60006121386001611b9f565b1115612146576121466112d1565b600061215e6064610ea386600163ffffffff61321f16565b90506000612172858363ffffffff61320d16565b6001600160a01b03841660009081526005602052604090205490915061219e908663ffffffff61320d16565b6001600160a01b0380851660009081526005602052604080822093909355908816815220546121d3908263ffffffff61325716565b6001600160a01b038088166000908152600560205260408082209390935580549091168152205461220a908363ffffffff61325716565b600080546001600160a01b0390811682526005602090815260408084209490945560158054888416808652600884528686208054928d0290920390915581548c8516865286862080549189029091019055905484548416855285852080549189029091019055925484518781529451921693600080516020613a5e833981519152929081900390910190a3856001600160a01b0316836001600160a01b0316600080516020613a5e833981519152836040518082815260200191505060405180910390a350600195945050505050565b60066020526000908152604090205481565b6000546001600160a01b0316331461230357600080fd5b80516123169060039060208401906139c5565b5050565b6017546001600160a01b031681565b60115481565b6000546001600160a01b0316331461234657600080fd5b80516123169060029060208401906139c5565b600e5481565b6017546001600160a01b03161580159061238957506018546017546001600160a01b039081169116145b61239257600080fd5b601754601980546001600160a01b039092166001600160a01b03199283168117909155601c8054909216179055565b600a546000901561244e5760006123da42600b5461320d565b600454600a549192506000916124069163ffffffff62010000909104811691610ea39186919061321f16565b9050600a548111156124175750600a545b61242e601554601454600160401b840281610ed557fe5b601555600a54612444908263ffffffff61320d16565b600a55505042600b555b64e8d4a51000612466650d0caf0dac2f60d31b611082565b1061247d5761247d650d0caf0dac2f60d31b612983565b64e8d4a51000612497670e6e8c2c4d8cae8d60c31b611082565b106124b0576124b0670e6e8c2c4d8cae8d60c31b612983565b6124b982613264565b611b63833384613338565b600a541561254e5760006124da42600b5461320d565b600454600a549192506000916125069163ffffffff62010000909104811691610ea39186919061321f16565b9050600a548111156125175750600a545b61252e601554601454600160401b840281610ed557fe5b601555600a54612544908263ffffffff61320d16565b600a55505042600b555b64e8d4a51000612566650d0caf0dac2f60d31b611082565b1061257d5761257d650d0caf0dac2f60d31b612983565b64e8d4a51000612597670e6e8c2c4d8cae8d60c31b611082565b106125b0576125b0670e6e8c2c4d8cae8d60c31b612983565b60006125bc6001611b9f565b116125c657600080fd5b3360006125d281611b9f565b6001600160a01b03831660009081526008602090815260408083208054600160401b8602019055600790915281208054908290559091019150612616818484613338565b9050826001600160a01b03167fe4f0eeaa8dd27ac941d5cb906c00cec31d5590659951566d91f7ec9eaacc8e0c8383604051808381526020018281526020019250505060405180910390a2505050565b60096020526000908152604090208054600182015460028301546003909301549192909184565b60015442101561269c57600080fd5b60015460780142116126ba57642e90edd0003a11156126ba57600080fd5b600a54156127445760006126d042600b5461320d565b600454600a549192506000916126fc9163ffffffff62010000909104811691610ea39186919061321f16565b9050600a5481111561270d5750600a545b612724601554601454600160401b840281610ed557fe5b601555600a5461273a908263ffffffff61320d16565b600a55505042600b555b64e8d4a5100061275c650d0caf0dac2f60d31b611082565b1061277357612773650d0caf0dac2f60d31b612983565b64e8d4a5100061278d670e6e8c2c4d8cae8d60c31b611082565b106127a6576127a6670e6e8c2c4d8cae8d60c31b612983565b60006127b26001611b56565b116127bc57600080fd5b3381158015906127ff57506001600160a01b0381166000908152600660209081526040808320546005909252909120546127fb9163ffffffff61320d16565b8211155b61280857600080fd5b60006128206064610ea385600963ffffffff61321f16565b9050600061283a6064610ea386600163ffffffff61321f16565b9050600061285282611566878663ffffffff61320d16565b6000805491925061286e916001600160a01b031690849061360a565b50601454612882908663ffffffff61320d16565b6014556001600160a01b0384166000908152600560205260409020546128ae908663ffffffff61320d16565b6001600160a01b03851660009081526005602090815260408083209390935560155460089091529190208054918702600160401b840201918290039055600a546128fe908563ffffffff61325716565b600a556040805187815290516000916001600160a01b03881691600080516020613a5e8339815191529181900360200190a36040805187815260208101849052428183015290516001600160a01b038716917f723391258f051422e0be75f0bbcc5c94947b440ae6162c87b3efb5fecde315e5919081900360600190a2505050505050565b80650d0caf0dac2f60d31b1415612ad15760006129ad60125460135461320d90919063ffffffff16565b9050600081116129bc57600080fd5b6012546129cf908263ffffffff61325716565b601255601d546040805163095ea7b360e01b815273d52dca990cfc3760e0cb0a60d96be0da43febf1960048201526024810184905290516001600160a01b039092169163095ea7b3916044808201926020929091908290030181600087803b158015612a3a57600080fd5b505af1158015612a4e573d6000803e3d6000fd5b505050506040513d6020811015612a6457600080fd5b5050601b54604080516320b4851760e01b81526004810184905290516001600160a01b03909216916320b485179160248082019260009290919082900301818387803b158015612ab357600080fd5b505af1158015612ac7573d6000803e3d6000fd5b5050505050612cf5565b80670e6e8c2c4d8cae8d60c31b1415612cf5576000612afd60105460115461320d90919063ffffffff16565b905060008111612b0c57600080fd5b601054612b1f908263ffffffff61325716565b601055601d54600160a81b900460ff168015612b525750601654681b1ae4d6e2ef5000006001600160a01b039091163110155b15612cd957601d546019546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b158015612bb057600080fd5b505af1158015612bc4573d6000803e3d6000fd5b505050506040513d6020811015612bda57600080fd5b5050601d54601954604080516370a0823160e01b81526001600160a01b039283166004820152905160009392909216916370a0823191602480820192602092909190829003018186803b158015612c3057600080fd5b505afa158015612c44573d6000803e3d6000fd5b505050506040513d6020811015612c5a57600080fd5b5051905064e8d4a510008110612cd357601c60009054906101000a90046001600160a01b03166001600160a01b0316639624e83e6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612cba57600080fd5b505af1158015612cce573d6000803e3d6000fd5b505050505b50612316565b612cf0601554601454600160401b840281610ed557fe5b601555505b50565b600f5481565b600454610100900460ff1681565b600b5481565b600a5415612d9c576000612d2842600b5461320d565b600454600a54919250600091612d549163ffffffff62010000909104811691610ea39186919061321f16565b9050600a54811115612d655750600a545b612d7c601554601454600160401b840281610ed557fe5b601555600a54612d92908263ffffffff61320d16565b600a55505042600b555b64e8d4a51000612db4650d0caf0dac2f60d31b611082565b10612dcb57612dcb650d0caf0dac2f60d31b612983565b64e8d4a51000612de5670e6e8c2c4d8cae8d60c31b611082565b10612dfe57612dfe670e6e8c2c4d8cae8d60c31b612983565b6000612e0b848484613724565b905061ffff8116612ed057601d60009054906101000a90046001600160a01b03166001600160a01b0316635c9302c96040518163ffffffff1660e01b815260040160206040518083038186803b158015612e6457600080fd5b505afa158015612e78573d6000803e3d6000fd5b505050506040513d6020811015612e8e57600080fd5b5051336000908152601e602090815260408083208684529091529020600201805461ffff909216600160681b0261ffff60681b19909216919091179055612f06565b336000908152601e602090815260408083208584529091529020600201805461ffff60681b1916600160681b61ffff8416021790555b601d54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015612f5157600080fd5b505afa158015612f65573d6000803e3d6000fd5b505050506040513d6020811015612f7b57600080fd5b5051601d5460408051631a1804d160e11b81526004810189905264ffffffffff8816602482015290519293506001600160a01b039091169163343009a29160448082019260009290919082900301818387803b158015612fda57600080fd5b505af1158015612fee573d6000803e3d6000fd5b5050336000908152601e602090815260408083208884528252808320600201805460ff60801b1916600160801b179055601d5481516370a0823160e01b8152306004820152915193955061309c94506001600160a01b0316926370a0823192602480840193919291829003018186803b15801561306a57600080fd5b505afa15801561307e573d6000803e3d6000fd5b505050506040513d602081101561309457600080fd5b50518361320d565b336000908152601e6020908152604080832088845290915281206001015491925081831161314d576130ce828461320d565b90506130dc6014548261320d565b601455336000908152600560205260409020546130f9908261320d565b33600081815260056020908152604080832094909455601554600882528483208054918702918290039055845186815294519094929392600080516020613a5e83398151915292908290030190a350613170565b818311156131705761315f838361320d565b905061316d60003383613338565b90505b61317c600d548361320d565b600d55336000908152600960209081526040808320600301805460001901905560069091529020546131ae908361320d565b3360008181526006602090815260409182902093909355805189815292830186905242838201525190917fcc843967ff4436c366c668a40b02034eec1fa39c6b6e1ff48c682d04f8a35f25919081900360600190a25050505050505050565b60008282111561321957fe5b50900390565b60008261322e57506000610f11565b508181028183828161323c57fe5b0414610f1157fe5b600081838161324f57fe5b049392505050565b81810182811015610f1157fe5b601d54604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156132be57600080fd5b505af11580156132d2573d6000803e3d6000fd5b505050506040513d60208110156132e857600080fd5b50511515600114612cf5576040805162461bcd60e51b81526020600482015260156024820152741d1c985b9cd9995c881b5d5cdd081cdd58d8d95959605a1b604482015290519081900360640190fd5b600060015442101561334957600080fd5b600154607801421161336757642e90edd0003a111561336757600080fd5b6001600160a01b03831660009081526009602052604090205461338e57600e805460010190555b6001600160a01b0383166000908152600960205260409020805483019055816133b657600080fd5b60006133ce6064610ea385602863ffffffff61321f16565b905060006133e86064610ea386600563ffffffff61321f16565b905060006134026064610ea387600163ffffffff61321f16565b9050600061341c6064610ea388600163ffffffff61321f16565b905060006134366064610ea389600163ffffffff61321f16565b905060006134506064610ea38a600263ffffffff61321f16565b9050600061346a6064610ea38b603263ffffffff61321f16565b9050600061347e8a8363ffffffff61320d16565b6000805491925061349a916001600160a01b031690879061360a565b506001600160a01b038c16158015906134c557508a6001600160a01b03168c6001600160a01b031614155b80156134eb5750600c546001600160a01b038d1660009081526005602052604090205410155b15613537576001600160a01b038c16600090815260076020526040902054613519908763ffffffff61325716565b6001600160a01b038d1660009081526007602052604090205561354a565b613547878763ffffffff61325716565b96505b60006135578c838a61360a565b600a5490915061356d908a63ffffffff61325716565b600a55601354613583908663ffffffff61325716565b601355601154613599908563ffffffff61325716565b6011819055508c6001600160a01b03168c6001600160a01b03167fff69b2ba8f4ef8248f8c375ba3916c770604b215557acdd4e8387a4dd5e7de868d844260405180848152602001838152602001828152602001935050505060405180910390a39c9b505050505050505050505050565b600082600160401b830281158015906136335750601454613631838263ffffffff61325716565b115b61363c57600080fd5b6014541561369457601454613657908363ffffffff61325716565b6014819055600160401b85028161366a57fe5b60158054929091049091019055601454600160401b85028161368857fe5b0482028103900361369a565b60148290555b6001600160a01b0386166000908152600560205260409020546136c3908363ffffffff61325716565b6001600160a01b0387166000818152600560209081526040808320949094556015546008825284832080549188028790039182019055845187815294519094600080516020613a5e83398151915292908290030190a3509095945050505050565b601d5460408051632607443b60e01b81523060048201526024810186905290516000928392839283928392839283926001600160a01b031691632607443b9160448083019260e0929190829003018186803b15801561378257600080fd5b505afa158015613796573d6000803e3d6000fd5b505050506040513d60e08110156137ac57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050809650819750829850839950849a50859b50505050505050601e6000336001600160a01b03166001600160a01b031681526020019081526020016000206000898152602001908152602001600020600201600f9054906101000a900460ff161515600115151480156138915750336000908152601e602090815260408083208b8452909152902060020154600160801b900460ff16155b61389a57600080fd5b336000908152601e602090815260408083208b845290915290205464ffffffffff8a811691161480156138da57508564ffffffffff168964ffffffffff16145b6138e357600080fd5b336000908152601e602090815260408083208b84529091529020600101546001600160481b0386161461391557600080fd5b336000908152601e602090815260408083208b84529091529020600201546001600160481b0385811691161461394a57600080fd5b336000908152601e602090815260408083208b845290915290206002015461ffff848116600160481b909204161461398157600080fd5b336000908152601e602090815260408083208b845290915290206002015461ffff838116600160581b90920416146139b857600080fd5b9998505050505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a0657805160ff1916838001178555613a33565b82800160010185558215613a33579182015b82811115613a33578251825591602001919060010190613a18565b50613a3f929150613a43565b5090565b61115391905b80821115613a3f5760008155600101613a4956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d757374206265206120706f7369746976652076616c756520616e64206861766520737570706c79a265627a7a723158200c3a0e08bae2c92473d4a5ac651f0aa3b44faba9dc59a3abfa9f1f068bc1c58564736f6c634300050d0032

Deployed ByteCode Sourcemap

1947:23436:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7216:8;;;22322:842;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22322:842:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22322:842:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;23455:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23455:224:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23455:224:0;-1:-1:-1;;;;;23455:224:0;;:::i;21413:143::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21413:143:0;;;:::i;:::-;;21240:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21240:165:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21240:165:0;;;;:::i;4468:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4468:32:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4468:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25068:312;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25068:312:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25068:312:0;;:::i;21564:113::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21564:113:0;;;:::i;6064:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6064:29:0;;;:::i;:::-;;;;-1:-1:-1;;;;;6064:29:0;;;;;;;;;;;;;;24514:252;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24514:252:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24514:252:0;;:::i;21071:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21071:161:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21071:161:0;;;;:::i;21685:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21685:89:0;;;:::i;21968:346::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21968:346:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21968:346:0;;;;;;;;;;;:::i;6614:68::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6614:68:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6614:68:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6614:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4640:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4640:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5789:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5789:42:0;;;:::i;5530:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5530:31:0;;;:::i;4543:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4543:34:0;;;:::i;5670:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5670:36:0;;;:::i;6176:34::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6176:34:0;;;:::i;9696:515::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9696:515:0;;;:::i;5620:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5620:43:0;;;:::i;24774:286::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24774:286:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24774:286:0;;:::i;24059:262::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24059:262:0;;;:::i;20170:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20170:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20170:118:0;;;;:::i;15704:1384::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15704:1384:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15704:1384:0;;;;;;;:::i;7765:322::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7765:322:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7765:322:0;;:::i;6138:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6138:31:0;;;:::i;21782:178::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21782:178:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21782:178:0;;;;:::i;20296:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20296:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20296:112:0;;;;:::i;23172:275::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23172:275:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23172:275:0;;;;:::i;4710:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4710:33:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23687:364;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23687:364:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23687:364:0;;;;;;;;;;:::i;20416:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20416:126:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20416:126:0;-1:-1:-1;;;;;20416:126:0;;:::i;20550:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20550:126:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20550:126:0;-1:-1:-1;;;;;20550:126:0;;:::i;24329:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24329:177:0;;;:::i;1730:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1730:20:0;;;:::i;7417:340::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7417:340:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7417:340:0;;:::i;4507:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4507:29:0;;;:::i;5934:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5934:40:0;;;:::i;20684:130::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20684:130:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20684:130:0;-1:-1:-1;;;;;20684:130:0;;:::i;10427:235::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10427:235:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10427:235:0;;;;;;;;;;;;;;;;;:::i;5888:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5888:39:0;;;:::i;6217:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6217:31:0;;;:::i;14488:1208::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14488:1208:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14488:1208:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5162:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5162:59:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5162:59:0;-1:-1:-1;;;;;5162:59:0;;:::i;20063:99::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20063:99:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20063:99:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;20063:99:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20063:99:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20063:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20063:99:0;;-1:-1:-1;20063:99:0;;-1:-1:-1;;;;;20063:99:0:i;6100:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6100:31:0;;;:::i;5838:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5838:43:0;;;:::i;19964:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19964:91:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19964:91:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19964:91:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19964:91:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19964:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19964:91:0;;-1:-1:-1;19964:91:0;;-1:-1:-1;;;;;19964:91:0:i;5713:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5713:30:0;;;:::i;20822:241::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20822:241:0;;;:::i;10219:200::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10219:200:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10219:200:0;;;;;;;;:::i;9207:481::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9207:481:0;;;:::i;5477:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5477:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5477:44:0;-1:-1:-1;;;;;5477:44:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13385:1095;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13385:1095:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13385:1095:0;;:::i;8095:1104::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8095:1104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8095:1104:0;;:::i;5750:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5750:32:0;;;:::i;4675:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4675:28:0;;;:::i;5568:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5568:45:0;;;:::i;18116:1840::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18116:1840:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18116:1840:0;;;;;;;;;;;;;;:::i;22322:842::-;22463:14;;22494:12;;22417:7;;22463:14;22494:16;22490:525;;22525:21;22585:4;22569:20;;;;22565:157;;;-1:-1:-1;22621:5:0;22565:157;;;22677:31;22690:3;22695:12;;22677;:31::i;:::-;22661:47;;22565:157;22792:9;;22774:12;;22736:17;;22756:46;;22792:9;;;;;;;;22756:31;;:13;;:17;:31;:::i;:::-;:35;:46;:35;:46;:::i;:::-;22736:66;;22833:12;;22821:9;:24;22817:83;;;-1:-1:-1;22874:12:0;;22817:83;22932:71;22945:15;22991:11;;-1:-1:-1;;;22963:9:0;:24;22962:40;;;;;;22932:12;:71::i;:::-;22914:89;;22490:525;;;-1:-1:-1;;;;;23113:27:0;;;;;;:9;:27;;;;;;;;;23073:18;:36;;;;;;;-1:-1:-1;;;23055:54:0;;23045:95;23034:122;;-1:-1:-1;22322:842:0;;;;;:::o;23455:224::-;-1:-1:-1;;;;;23628:27:0;;23523:7;23628:27;;;:9;:27;;;;;;;;;23588:18;:36;;;;;;23571:14;;-1:-1:-1;;;4624:7:0;23571:53;;23561:94;23550:121;23543:128;;23455:224;;;;:::o;21413:143::-;21488:11;;;21473;;;21488;;;;;21473:26;21465:35;;;;;;21531:11;;;;21523:5;21531:11;21523:19;;;;;21545:3;21523:25;21511:37;;:9;;:37;;;;;;;;;;;;;;;;;;21413:143::o;21240:165::-;2321:16;;-1:-1:-1;;;;;2321:16:0;2307:10;:30;2299:39;;;;;;21340:1;21326:11;:15;;;:34;;;;;21359:1;21345:11;:15;;;21326:34;21318:43;;;;;;21372:11;:25;;;;;;;;-1:-1:-1;;21372:25:0;;;;;;;;;21240:165::o;4468:32::-;;;;;;;;;;;;;;-1:-1:-1;;4468:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25068:312::-;25129:7;25153:8;-1:-1:-1;;;25153:20:0;25149:224;;;25221:20;;25195:21;;:47;;;:25;:47;:::i;:::-;25188:54;;;;25149:224;25264:8;-1:-1:-1;;;25264:22:0;25260:113;;;25337:23;;25308:24;;:53;;;:28;:53;:::i;21564:113::-;21639:5;;:30;;;-1:-1:-1;;;21639:30:0;;21663:4;21639:30;;;;;;21612:7;;-1:-1:-1;;;;;21639:5:0;;:15;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;21639:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21639:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21639:30:0;;-1:-1:-1;21564:113:0;;:::o;6064:29::-;;;-1:-1:-1;;;;;6064:29:0;;:::o;24514:252::-;24590:7;;24630:29;24655:3;24630:20;:12;24647:2;24630:20;:16;:20;:::i;:29::-;24610:49;-1:-1:-1;24670:23:0;24696:27;:12;24610:49;24696:27;:16;:27;:::i;:::-;24670:53;24514:252;-1:-1:-1;;;;24514:252:0:o;21071:161::-;1916:5;;-1:-1:-1;;;;;1916:5:0;1902:10;:19;1894:28;;;;;;21167:1;21153:11;:15;;;:34;;;;;21186:1;21172:11;:15;;;21153:34;21145:43;;;;;;21199:11;:25;;-1:-1:-1;;21199:25:0;;;;;;;;;;;;21071:161::o;21685:89::-;21755:11;;21685:89;:::o;21968:346::-;22065:7;22112:10;22140:21;:165;;22254:51;22274:16;22292:12;22254:19;:51::i;:::-;22140:165;;;-1:-1:-1;;;;;22218:33:0;;;;;;:15;:33;;;;;;22164:51;22234:16;22202:12;22164:19;:51::i;:::-;:87;22133:172;21968:346;-1:-1:-1;;;;21968:346:0:o;6614:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6614:68:0;;;;-1:-1:-1;;;6614:68:0;;;;;-1:-1:-1;;;6614:68:0;;;;;-1:-1:-1;;;6614:68:0;;;;;-1:-1:-1;;;6614:68:0;;;;;-1:-1:-1;;;6614:68:0;;;;:::o;4640:28::-;;;;;;:::o;5789:42::-;;;;:::o;5530:31::-;;;;:::o;4543:34::-;4576:1;4543:34;:::o;5670:36::-;;;;:::o;6176:34::-;;;-1:-1:-1;;;;;6176:34:0;;:::o;9696:515::-;2401:12;;:16;2397:466;;2432:21;2456:31;2469:3;2474:12;;2456;:31::i;:::-;2556:9;;2538:12;;2432:55;;-1:-1:-1;2500:17:0;;2520:46;;2556:9;;;;;;;;2520:31;;2432:55;;2538:12;2520:17;:31;:::i;:46::-;2500:66;;2597:12;;2585:9;:24;2581:83;;;-1:-1:-1;2638:12:0;;2581:83;2695:70;2708:14;;2753:11;;-1:-1:-1;;;2725:9:0;:24;2724:40;;;;2695:70;2678:14;:87;2793:12;;:27;;2810:9;2793:27;:16;:27;:::i;:::-;2778:12;:42;-1:-1:-1;;2848:3:0;2833:12;:18;2397:466;2906:7;2879:23;-1:-1:-1;;;2879:13:0;:23::i;:::-;:34;2875:84;;2930:17;-1:-1:-1;;;2930:7:0;:17::i;:::-;3004:7;2975:25;-1:-1:-1;;;2975:13:0;:25::i;:::-;:36;2971:88;;3028:19;-1:-1:-1;;;3028:7:0;:19::i;:::-;3236:1;3216:17;3228:4;3216:11;:17::i;:::-;:21;3208:30;;;;;;9782:10;9755:24;9824:18;9755:24;9824:11;:18::i;:::-;-1:-1:-1;;;;;9853:27:0;;;;;;;:9;:27;;;;;;;;:67;;-1:-1:-1;;;9894:25:0;;9853:67;;;9945:15;:33;;;;;;;9989:37;;;;10037:5;;:44;;-1:-1:-1;;;10037:44:0;;;;;;;;;9931:47;;10037:44;;;;;;;;9931:47;;-1:-1:-1;10037:5:0;;;;;:14;;:44;;;;;9853:27;;10037:44;;;;;;;;:5;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;10037:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10037:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;10092:29:0;;;;;;:11;10037:44;10092:29;;;;;;;;:41;;:55;;;;;;10163:40;;;;;;;;;;;;;;;;;3249:1;;9696:515::o;5620:43::-;;;;:::o;24774:286::-;24848:7;24893:11;;24876:13;:28;;24868:37;;;;;;24916:16;24935:30;24961:3;24935:21;:13;24953:2;24935:21;:17;:21;:::i;24059:262::-;24101:7;24136:3;24101:7;24173:29;24198:3;24173:20;24136:3;5046:1;24173:20;:8;:20;:::i;:29::-;24150:52;-1:-1:-1;24213:15:0;24231:25;24252:3;24231:16;:4;4913:1;24231:16;:8;:16;:::i;:25::-;24213:43;-1:-1:-1;24277:35:0;24213:43;24277:22;:4;24286:12;24277:22;:8;:22;:::i;:::-;:26;:35;:26;:35;:::i;:::-;24269:44;;;;;24059:262;:::o;20170:118::-;1916:5;;-1:-1:-1;;;;;1916:5:0;1902:10;:19;1894:28;;;;;;20248:14;:32;;;;;-1:-1:-1;;;20248:32:0;-1:-1:-1;;;;20248:32:0;;;;;;;;;20170:118::o;15704:1384::-;3311:14;;-1:-1:-1;;;3311:14:0;;;;:22;;3329:4;3311:22;3303:31;;;;;;-1:-1:-1;;;;;15799:7:0;:33;;15791:42;;;;;;15883:7;15852:27;15862:10;15874:4;15852:9;:27::i;:::-;:38;;15844:47;;;;;;15904:5;;:32;;;-1:-1:-1;;;15904:32:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15904:5:0;;;;:16;;:32;;;;;:5;;:32;;;;;;;;:5;;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;15904:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16129:5:0;;:31;;;-1:-1:-1;;;16129:31:0;;16154:4;16129:31;;;;;;15970:19;;-1:-1:-1;15970:19:0;;-1:-1:-1;15970:19:0;;;;;;-1:-1:-1;;;;;16129:5:0;;;;:16;;:31;;;;;;;;;;;;;;;:5;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;16129:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16129:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16129:31:0;;-1:-1:-1;16185:28:0;16129:31;16211:1;16185:12;:28::i;:::-;16278:5;;:44;;;-1:-1:-1;;;16278:44:0;;16303:4;16278:44;;;;;;;;;;;;16171:42;;-1:-1:-1;;;;;;16278:5:0;;;;:16;;:44;;;;;;;;;;;;;;;:5;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;16278:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16278:44:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;16278:44:0;;;;;;;;;;;;;;;;16374:40;;;;;;-1:-1:-1;;;;;;16374:40:0;16278:44;16374:40;;;;;;;;;;;-1:-1:-1;;;;;;16374:40:0;;;;;;;26:21:-1;;;22:32;;6:49;;16374:40:0;;;;;;16364:51;;;;;;;;;16463:10;-1:-1:-1;16452:22:0;;;:10;:22;;;;;:33;;;;;;;;;:41;;;16278:44;;-1:-1:-1;16278:44:0;;-1:-1:-1;16278:44:0;;-1:-1:-1;16278:44:0;;-1:-1:-1;;;;16452:41:0;;;;:50;16444:59;;;;;;16587:4;16543:10;:22;16554:10;-1:-1:-1;;;;;16543:22:0;-1:-1:-1;;;;;16543:22:0;;;;;;;;;;;;:33;16566:9;16543:33;;;;;;;;;;;:41;;;:48;;;;;;;;;;;;;;;;;;16640:92;;;;;;;;16651:8;16640:92;;;;;;16661:7;16640:92;;;;16670:12;-1:-1:-1;;;;;16640:92:0;;;;;16684:10;16640:92;;;;;;16696:11;16640:92;;;;;;16716:1;16640:92;;;;;;16720:4;16640:92;;;;;;16726:5;16640:92;;;;;16604:10;:22;16615:10;-1:-1:-1;;;;;16604:22:0;-1:-1:-1;;;;;16604:22:0;;;;;;;;;;;;:33;16627:9;16604:33;;;;;;;;;;;:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16604:128:0;;;;;-1:-1:-1;;;;;16604:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16765:40;16778:17;;16797:7;16765:12;:40::i;:::-;16745:17;:60;16830:10;16818:23;;;;:11;:23;;;;;;;;:36;;;:41;;16858:1;16818:41;;;16870:30;;:41;;;;;;16976:24;:36;;;;;;16963:59;;16904:7;16963:12;:59::i;:::-;16949:10;16924:36;;;;:24;:36;;;;;;;;;:98;;;;17040:40;;;;;17076:3;17040:40;;;;;;;;;16949:10;;17040:40;;;;;;;;;;;3345:1;;;;;;15704:1384;;:::o;7765:322::-;7842:1;7832:7;:11;:30;;;;;7861:1;7847:11;;:15;7832:30;7824:83;;;;-1:-1:-1;;;7824:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7918:28;7938:7;7918:19;:28::i;:::-;7957:13;:24;;;;;;8007:12;;:25;;7974:7;8007:25;:16;:25;:::i;:::-;7992:12;:40;8048:31;;;;;;;;8059:10;;8048:31;;;;;;;;;;7765:322;:::o;6138:31::-;;;-1:-1:-1;;;;;6138:31:0;;:::o;21782:178::-;21838:7;21885:10;21913:39;21885:10;21941;21913:9;:39::i;:::-;21906:46;21782:178;-1:-1:-1;;;21782:178:0:o;20296:112::-;1916:5;;-1:-1:-1;;;;;1916:5:0;1902:10;:19;1894:28;;;;;;20370:13;:30;;;;;-1:-1:-1;;;20370:30:0;-1:-1:-1;;;;20370:30:0;;;;;;;;;20296:112::o;23172:275::-;23242:7;23289:10;23317:21;:121;;23409:29;23421:16;23409:11;:29::i;:::-;23317:121;;;-1:-1:-1;;;;;23373:33:0;;;;;;:15;:33;;;;;;23341:29;23389:16;23341:11;:29::i;:::-;:65;;23172:275;-1:-1:-1;;;23172:275:0:o;4710:33::-;;;;;;;;;:::o;23687:364::-;23770:7;23794:19;23790:254;;-1:-1:-1;;;;;;23837:36:0;;;;;;:18;:36;;;;;;23830:43;;23790:254;23918:4;23904:18;;;;23900:144;;;-1:-1:-1;;;;;23988:42:0;;;;;;:24;:42;;;;;;;;;23947:18;:36;;;;;;;:84;;;:40;:84;:::i;:::-;23939:93;;;;20416:126;1916:5;;-1:-1:-1;;;;;1916:5:0;1902:10;:19;1894:28;;;;;;20501:14;:33;;-1:-1:-1;;;;;;20501:33:0;-1:-1:-1;;;;;20501:33:0;;;;;;;;;;20416:126::o;20550:::-;1916:5;;-1:-1:-1;;;;;1916:5:0;1902:10;:19;1894:28;;;;;;20633:16;:35;;-1:-1:-1;;;;;;20633:35:0;-1:-1:-1;;;;;20633:35:0;;;;;;;;;;20550:126::o;24329:177::-;24369:7;24404:3;24369:7;24438:21;24455:3;24438:12;24404:3;24447:2;24438:12;:8;:12;:::i;:21::-;24418:41;-1:-1:-1;24478:19:0;:4;24418:41;24478:19;:8;:19;:::i;:::-;24470:28;;;;24329:177;:::o;1730:20::-;;;-1:-1:-1;;;;;1730:20:0;;:::o;7417:340::-;2105:15;;2098:3;:22;;2090:31;;;;;;2146:15;;2164:9;2146:27;2138:3;:36;2134:102;;2214:9;2199:11;:24;;2191:33;;;;;;7502:1;7492:7;:11;7484:48;;;;;-1:-1:-1;;;7484:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7543:28;7563:7;7543:19;:28::i;:::-;7582:13;:24;;;;;;7647:14;;7690:11;;7634:68;;7647:14;-1:-1:-1;;;7664:22:0;;7690:11;7663:38;;;7634:68;7617:14;:85;7718:31;;;;;;;;7729:10;;7718:31;;;;;;;;;;7417:340;:::o;4507:29::-;;;;;;;;;;;;;;;-1:-1:-1;;4507:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5934:40;;;;:::o;20684:130::-;2321:16;;-1:-1:-1;;;;;2321:16:0;2307:10;:30;2299:39;;;;;;20771:16;:35;;-1:-1:-1;;;;;;20771:35:0;-1:-1:-1;;;;;20771:35:0;;;;;;;;;;20684:130::o;10427:235::-;2401:12;;10534:7;;2401:16;2397:466;;2432:21;2456:31;2469:3;2474:12;;2456;:31::i;:::-;2556:9;;2538:12;;2432:55;;-1:-1:-1;2500:17:0;;2520:46;;2556:9;;;;;;;;2520:31;;2432:55;;2538:12;2520:17;:31;:::i;:46::-;2500:66;;2597:12;;2585:9;:24;2581:83;;;-1:-1:-1;2638:12:0;;2581:83;2695:70;2708:14;;2753:11;;-1:-1:-1;;;2725:9:0;:24;2724:40;;;;2695:70;2678:14;:87;2793:12;;:27;;2810:9;2793:27;:16;:27;:::i;:::-;2778:12;:42;-1:-1:-1;;2848:3:0;2833:12;:18;2397:466;2906:7;2879:23;-1:-1:-1;;;2879:13:0;:23::i;:::-;:34;2875:84;;2930:17;-1:-1:-1;;;2930:7:0;:17::i;:::-;3004:7;2975:25;-1:-1:-1;;;2975:13:0;:25::i;:::-;:36;2971:88;;3028:19;-1:-1:-1;;;3028:7:0;:19::i;:::-;10554:28;10574:7;10554:19;:28::i;:::-;10600:54;10615:11;10628:16;10646:7;10600:14;:54::i;5888:39::-;;;;:::o;6217:31::-;;;-1:-1:-1;;;;;6217:31:0;;:::o;14488:1208::-;14609:4;2105:15;;2098:3;:22;;2090:31;;;;;;2146:15;;2164:9;2146:27;2138:3;:36;2134:102;;2214:9;2199:11;:24;;2191:33;;;;;;2401:12;;:16;2397:466;;2432:21;2456:31;2469:3;2474:12;;2456;:31::i;:::-;2556:9;;2538:12;;2432:55;;-1:-1:-1;2500:17:0;;2520:46;;2556:9;;;;;;;;2520:31;;2432:55;;2538:12;2520:17;:31;:::i;:46::-;2500:66;;2597:12;;2585:9;:24;2581:83;;;-1:-1:-1;2638:12:0;;2581:83;2695:70;2708:14;;2753:11;;-1:-1:-1;;;2725:9:0;:24;2724:40;;;;2695:70;2678:14;:87;2793:12;;:27;;2810:9;2793:27;:16;:27;:::i;:::-;2778:12;:42;-1:-1:-1;;2848:3:0;2833:12;:18;2397:466;2906:7;2879:23;-1:-1:-1;;;2879:13:0;:23::i;:::-;:34;2875:84;;2930:17;-1:-1:-1;;;2930:7:0;:17::i;:::-;3004:7;2975:25;-1:-1:-1;;;2975:13:0;:25::i;:::-;:36;2971:88;;3028:19;-1:-1:-1;;;3028:7:0;:19::i;:::-;3148:1;3131:14;3140:4;3131:8;:14::i;:::-;:18;3123:27;;;;;;14653:10;14682:19;;;;;:126;;-1:-1:-1;;;;;;14765:42:0;;;;;;:24;:42;;;;;;;;;14724:18;:36;;;;;;;:84;;;:40;:84;:::i;:::-;14705:15;:103;;14682:126;14674:135;;;;;;14846:1;14826:17;14838:4;14826:11;:17::i;:::-;:21;14822:64;;;14864:10;:8;:10::i;:::-;14898:17;14918:41;14955:3;14918:32;:15;5091:1;14918:32;:19;:32;:::i;:41::-;14898:61;-1:-1:-1;14970:20:0;14993:30;:15;14898:61;14993:30;:19;:30;:::i;:::-;-1:-1:-1;;;;;15075:36:0;;;;;;:18;:36;;;;;;14970:53;;-1:-1:-1;15075:57:0;;15116:15;15075:57;:40;:57;:::i;:::-;-1:-1:-1;;;;;15036:36:0;;;;;;;:18;:36;;;;;;:96;;;;15176:30;;;;;;;:48;;15211:12;15176:48;:34;:48;:::i;:::-;-1:-1:-1;;;;;15143:30:0;;;;;;;:18;:30;;;;;;:81;;;;15282:5;;;;;15263:25;;;;:40;;15293:9;15263:40;:29;:40;:::i;:::-;15235:25;15254:5;;-1:-1:-1;;;;;15254:5:0;;;15235:25;;:18;:25;;;;;;;;:68;;;;15357:14;;;15316:27;;;;;;:9;:27;;;;;:74;;15357:32;;;15316:74;;;;;;15436:14;;15401:21;;;;;;;;:65;;15436:29;;;15401:65;;;;;15507:14;;15487:5;;;;15477:16;;;;;:57;;15507:26;;;15477:57;;;;;15579:5;;15552:44;;;;;;;15579:5;;;-1:-1:-1;;;;;;;;;;;15552:44:0;;;;;;;;;;15639:10;-1:-1:-1;;;;;15612:52:0;15621:16;-1:-1:-1;;;;;15612:52:0;-1:-1:-1;;;;;;;;;;;15651:12:0;15612:52;;;;;;;;;;;;;;;;;;-1:-1:-1;15684:4:0;;14488:1208;-1:-1:-1;;;;;14488:1208:0:o;5162:59::-;;;;;;;;;;;;;:::o;20063:99::-;1916:5;;-1:-1:-1;;;;;1916:5:0;1902:10;:19;1894:28;;;;;;20138:16;;;;:6;;:16;;;;;:::i;:::-;;20063:99;:::o;6100:31::-;;;-1:-1:-1;;;;;6100:31:0;;:::o;5838:43::-;;;;:::o;19964:91::-;1916:5;;-1:-1:-1;;;;;1916:5:0;1902:10;:19;1894:28;;;;;;20035:12;;;;:4;;:12;;;;;:::i;5713:30::-;;;;:::o;20822:241::-;20887:16;;-1:-1:-1;;;;;20887:16:0;:30;;;;:70;;-1:-1:-1;20941:16:0;;20921;;-1:-1:-1;;;;;20921:16:0;;;20941;;20921:36;20887:70;20879:79;;;;;;20991:16;;20969:19;:38;;-1:-1:-1;;;;;20991:16:0;;;-1:-1:-1;;;;;;20969:38:0;;;;;;;;21018:12;:37;;;;;;;;20822:241::o;10219:200::-;2401:12;;10297:7;;2401:16;2397:466;;2432:21;2456:31;2469:3;2474:12;;2456;:31::i;:::-;2556:9;;2538:12;;2432:55;;-1:-1:-1;2500:17:0;;2520:46;;2556:9;;;;;;;;2520:31;;2432:55;;2538:12;2520:17;:31;:::i;:46::-;2500:66;;2597:12;;2585:9;:24;2581:83;;;-1:-1:-1;2638:12:0;;2581:83;2695:70;2708:14;;2753:11;;-1:-1:-1;;;2725:9:0;:24;2724:40;;;;2695:70;2678:14;:87;2793:12;;:27;;2810:9;2793:27;:16;:27;:::i;:::-;2778:12;:42;-1:-1:-1;;2848:3:0;2833:12;:18;2397:466;2906:7;2879:23;-1:-1:-1;;;2879:13:0;:23::i;:::-;:34;2875:84;;2930:17;-1:-1:-1;;;2930:7:0;:17::i;:::-;3004:7;2975:25;-1:-1:-1;;;2975:13:0;:25::i;:::-;:36;2971:88;;3028:19;-1:-1:-1;;;3028:7:0;:19::i;:::-;10317:28;10337:7;10317:19;:28::i;:::-;10363:48;10378:11;10391:10;10403:7;10363:14;:48::i;9207:481::-;2401:12;;:16;2397:466;;2432:21;2456:31;2469:3;2474:12;;2456;:31::i;:::-;2556:9;;2538:12;;2432:55;;-1:-1:-1;2500:17:0;;2520:46;;2556:9;;;;;;;;2520:31;;2432:55;;2538:12;2520:17;:31;:::i;:46::-;2500:66;;2597:12;;2585:9;:24;2581:83;;;-1:-1:-1;2638:12:0;;2581:83;2695:70;2708:14;;2753:11;;-1:-1:-1;;;2725:9:0;:24;2724:40;;;;2695:70;2678:14;:87;2793:12;;:27;;2810:9;2793:27;:16;:27;:::i;:::-;2778:12;:42;-1:-1:-1;;2848:3:0;2833:12;:18;2397:466;2906:7;2879:23;-1:-1:-1;;;2879:13:0;:23::i;:::-;:34;2875:84;;2930:17;-1:-1:-1;;;2930:7:0;:17::i;:::-;3004:7;2975:25;-1:-1:-1;;;2975:13:0;:25::i;:::-;:36;2971:88;;3028:19;-1:-1:-1;;;3028:7:0;:19::i;:::-;3236:1;3216:17;3228:4;3216:11;:17::i;:::-;:21;3208:30;;;;;;9289:10;9262:24;9331:18;9262:24;9331:11;:18::i;:::-;-1:-1:-1;;;;;9360:27:0;;;;;;:9;:27;;;;;;;;:68;;-1:-1:-1;;;9402:25:0;;9360:68;;;9453:15;:33;;;;;;;9497:37;;;;9439:47;;;;-1:-1:-1;9563:56:0;9360:27;9370:16;9439:47;9563:14;:56::i;:::-;9545:74;;9642:16;-1:-1:-1;;;;;9635:45:0;;9660:10;9672:7;9635:45;;;;;;;;;;;;;;;;;;;;;;;;3249:1;;;9207:481::o;5477:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13385:1095::-;2105:15;;2098:3;:22;;2090:31;;;;;;2146:15;;2164:9;2146:27;2138:3;:36;2134:102;;2214:9;2199:11;:24;;2191:33;;;;;;2401:12;;:16;2397:466;;2432:21;2456:31;2469:3;2474:12;;2456;:31::i;:::-;2556:9;;2538:12;;2432:55;;-1:-1:-1;2500:17:0;;2520:46;;2556:9;;;;;;;;2520:31;;2432:55;;2538:12;2520:17;:31;:::i;:46::-;2500:66;;2597:12;;2585:9;:24;2581:83;;;-1:-1:-1;2638:12:0;;2581:83;2695:70;2708:14;;2753:11;;-1:-1:-1;;;2725:9:0;:24;2724:40;;;;2695:70;2678:14;:87;2793:12;;:27;;2810:9;2793:27;:16;:27;:::i;:::-;2778:12;:42;-1:-1:-1;;2848:3:0;2833:12;:18;2397:466;2906:7;2879:23;-1:-1:-1;;;2879:13:0;:23::i;:::-;:34;2875:84;;2930:17;-1:-1:-1;;;2930:7:0;:17::i;:::-;3004:7;2975:25;-1:-1:-1;;;2975:13:0;:25::i;:::-;:36;2971:88;;3028:19;-1:-1:-1;;;3028:7:0;:19::i;:::-;3148:1;3131:14;3140:4;3131:8;:14::i;:::-;:18;3123:27;;;;;;13509:10;13538:19;;;;;:126;;-1:-1:-1;;;;;;13621:42:0;;;;;;:24;:42;;;;;;;;;13580:18;:36;;;;;;;:84;;;:40;:84;:::i;:::-;13561:15;:103;;13538:126;13530:135;;;;;;13678:20;13701:40;13737:3;13701:31;:15;5046:1;13701:31;:19;:31;:::i;:40::-;13678:63;-1:-1:-1;13752:15:0;13770:36;13802:3;13770:27;:15;4913:1;13770:27;:19;:27;:::i;:36::-;13752:54;-1:-1:-1;13817:17:0;13837:46;13752:54;13837:33;:15;13857:12;13837:33;:19;:33;:::i;:46::-;13912:5;;;13817:66;;-1:-1:-1;13896:34:0;;-1:-1:-1;;;;;13912:5:0;;13919:7;;13896:15;:34::i;:::-;-1:-1:-1;13957:11:0;;:32;;13973:15;13957:32;:15;:32;:::i;:::-;13943:11;:46;-1:-1:-1;;;;;14039:36:0;;;;;;:18;:36;;;;;;:57;;14080:15;14039:57;:40;:57;:::i;:::-;-1:-1:-1;;;;;14000:36:0;;;;;;:18;:36;;;;;;;;:96;;;;14144:14;;14217:9;:27;;;;;;:46;;14144:32;;;-1:-1:-1;;;14180:24:0;;14144:61;14217:46;;;;;;14291:12;;:30;;14308:12;14291:30;:16;:30;:::i;:::-;14276:12;:45;14339:55;;;;;;;;14374:1;;-1:-1:-1;;;;;14339:55:0;;;-1:-1:-1;;;;;;;;;;;14339:55:0;;;;;;;;14410:62;;;;;;;;;;;;14468:3;14410:62;;;;;;-1:-1:-1;;;;;14410:62:0;;;;;;;;;;;;;3161:1;;;;;13385:1095;:::o;8095:1104::-;8152:8;-1:-1:-1;;;8152:20:0;8148:1044;;;8187:17;8207:47;8233:20;;8207:21;;:25;;:47;;;;:::i;:::-;8187:67;;8287:1;8275:9;:13;8267:22;;;;;;8325:20;;:35;;8350:9;8325:35;:24;:35;:::i;:::-;8302:20;:58;8373:5;;:77;;;-1:-1:-1;;;8373:77:0;;8395:42;8373:77;;;;;;;;;;;;-1:-1:-1;;;;;8373:5:0;;;;:13;;:77;;;;;;;;;;;;;;;:5;;:77;;;5:2:-1;;;;30:1;27;20:12;5:2;8373:77:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8373:77:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8463:6:0;;:38;;;-1:-1:-1;;;8463:38:0;;;;;;;;;;-1:-1:-1;;;;;8463:6:0;;;;:27;;:38;;;;;:6;;:38;;;;;;;;:6;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;8463:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8463:38:0;;;;8148:1044;;;;8523:8;-1:-1:-1;;;8523:22:0;8519:673;;;8560:17;8580:53;8609:23;;8580:24;;:28;;:53;;;;:::i;:::-;8560:73;;8666:1;8654:9;:13;8646:22;;;;;;8707:23;;:38;;8735:9;8707:38;:27;:38;:::i;:::-;8681:23;:64;8764:13;;-1:-1:-1;;;8764:13:0;;;;:49;;;;-1:-1:-1;8781:14:0;;8807:6;-1:-1:-1;;;;;8781:14:0;;;:22;:32;;8764:49;8760:421;;;8830:5;;8845:19;;8830:46;;;-1:-1:-1;;;8830:46:0;;-1:-1:-1;;;;;8845:19:0;;;8830:46;;;;;;;;;;;;:5;;;;;:14;;:46;;;;;;;;;;;;;;:5;;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;8830:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8830:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8910:5:0;;8926:19;;8910:36;;;-1:-1:-1;;;8910:36:0;;-1:-1:-1;;;;;8926:19:0;;;8910:36;;;;;;8891:16;;8910:5;;;;;:15;;:36;;;;;8830:46;;8910:36;;;;;;;;:5;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;8910:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8910:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8910:36:0;;-1:-1:-1;8979:7:0;8967:19;;8963:83;;9005:12;;;;;;;;;-1:-1:-1;;;;;9005:12:0;-1:-1:-1;;;;;9005:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9005:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9005:25:0;;;;8963:83;8760:421;;;;9097:70;9110:14;;9155:11;;-1:-1:-1;;;9127:9:0;:24;9126:40;;;;9097:70;9080:14;:87;8519:673;;8095:1104;:::o;5750:32::-;;;;:::o;4675:28::-;;;;;;;;;:::o;5568:45::-;;;;:::o;18116:1840::-;2401:12;;:16;2397:466;;2432:21;2456:31;2469:3;2474:12;;2456;:31::i;:::-;2556:9;;2538:12;;2432:55;;-1:-1:-1;2500:17:0;;2520:46;;2556:9;;;;;;;;2520:31;;2432:55;;2538:12;2520:17;:31;:::i;:46::-;2500:66;;2597:12;;2585:9;:24;2581:83;;;-1:-1:-1;2638:12:0;;2581:83;2695:70;2708:14;;2753:11;;-1:-1:-1;;;2725:9:0;:24;2724:40;;;;2695:70;2678:14;:87;2793:12;;:27;;2810:9;2793:27;:16;:27;:::i;:::-;2778:12;:42;-1:-1:-1;;2848:3:0;2833:12;:18;2397:466;2906:7;2879:23;-1:-1:-1;;;2879:13:0;:23::i;:::-;:34;2875:84;;2930:17;-1:-1:-1;;;2930:7:0;:17::i;:::-;3004:7;2975:25;-1:-1:-1;;;2975:13:0;:25::i;:::-;:36;2971:88;;3028:19;-1:-1:-1;;;3028:7:0;:19::i;:::-;18225;18247:48;18257:11;18270:13;18285:9;18247;:48::i;:::-;18225:70;-1:-1:-1;18312:17:0;;;18308:241;;18398:5;;;;;;;;;-1:-1:-1;;;;;18398:5:0;-1:-1:-1;;;;;18398:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18398:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18398:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18398:18:0;18354:10;18343:22;;;;:10;18398:18;18343:22;;;;;;;:33;;;;;;;;:45;;:74;;;;;;-1:-1:-1;;;18343:74:0;-1:-1:-1;;;;18343:74:0;;;;;;;;;18308:241;;;18488:10;18477:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:45;;:60;;-1:-1:-1;;;;18477:60:0;-1:-1:-1;;;18477:60:0;;;;;;;18308:241;18580:5;;:30;;;-1:-1:-1;;;18580:30:0;;18604:4;18580:30;;;;;;18561:16;;-1:-1:-1;;;;;18580:5:0;;:15;;:30;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18580:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18580:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18580:30:0;18623:5;;:42;;;-1:-1:-1;;;18623:42:0;;;;;;;;;;;;;;;;;18580:30;;-1:-1:-1;;;;;;18623:5:0;;;;:14;;:42;;;;;:5;;:42;;;;;;;;:5;;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;18623:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;18741:10:0;18730:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:39;;:46;;-1:-1:-1;;;;18730:46:0;-1:-1:-1;;;18730:46:0;;;18820:5;;:30;;-1:-1:-1;;;18820:30:0;;18844:4;18820:30;;;;;;18730:22;;-1:-1:-1;18807:54:0;;-1:-1:-1;;;;;;18820:5:0;;:15;;:30;;;;;18730:22;;18820:30;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18820:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18820:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18820:30:0;18852:8;18807:12;:54::i;:::-;18907:10;18872:21;18896:22;;;:10;:22;;;;;;;;:33;;;;;;;;:43;;;18789:72;;-1:-1:-1;18986:24:0;;;18982:654;;19039:36;19052:13;19067:7;19039:12;:36::i;:::-;19025:50;;19102:38;19115:11;;19128;19102:12;:38::i;:::-;19088:11;:52;19218:10;19199:30;;;;:18;:30;;;;;;19186:57;;19231:11;19186:12;:57::i;:::-;19172:10;19153:30;;;;:18;:30;;;;;;;;:90;;;;19291:14;;19333:9;:21;;;;;:40;;19291:28;;;19333:40;;;;;;19391:45;;;;;;;19291:28;;19153:30;;19172:10;-1:-1:-1;;;;;;;;;;;19391:45:0;;;;;;;;18982:654;;;;19468:13;19458:7;:23;19454:182;;;19510:36;19523:7;19532:13;19510:12;:36::i;:::-;19496:50;;19573:51;19596:1;19600:10;19612:11;19573:14;:51::i;:::-;19559:65;;19454:182;19668:46;19681:17;;19700:13;19668:12;:46::i;:::-;19648:17;:66;19737:10;19725:23;;;;:11;:23;;;;;;;;:36;;:41;;-1:-1:-1;;19725:41:0;;;19831:24;:36;;;;;;19818:65;;19869:13;19818:12;:65::i;:::-;19804:10;19779:36;;;;:24;:36;;;;;;;;;:104;;;;19901:47;;;;;;;;;;;19944:3;19901:47;;;;;19804:10;;19901:47;;;;;;;;;;3069:1;;;;;18116:1840;;;:::o;352:119::-;410:7;440:1;435;:6;;428:14;;;;-1:-1:-1;458:5:0;;;352:119::o;52:188::-;110:9;134:6;130:41;;-1:-1:-1;160:1:0;153:8;;130:41;-1:-1:-1;183:5:0;;;187:1;183;:5;:1;204:5;;;;;:10;197:18;;;248:96;306:7;335:1;331;:5;;;;;;;248:96;-1:-1:-1;;;248:96:0:o;479:135::-;561:5;;;582:6;;;;575:14;;;7240:169;7313:5;;:54;;;-1:-1:-1;;;7313:54:0;;7332:10;7313:54;;;;7352:4;7313:54;;;;;;;;;;;;-1:-1:-1;;;;;7313:5:0;;;;:18;;:54;;;;;;;;;;;;;;;:5;;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;7313:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7313:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7313:54:0;:62;;7371:4;7313:62;7305:96;;;;;-1:-1:-1;;;7305:96:0;;;;;;;;;;;;-1:-1:-1;;;7305:96:0;;;;;;;;;;;;;;11691:1686;11813:7;2105:15;;2098:3;:22;;2090:31;;;;;;2146:15;;2164:9;2146:27;2138:3;:36;2134:102;;2214:9;2199:11;:24;;2191:33;;;;;;-1:-1:-1;;;;;11837:29:0;;;;;;:11;:29;;;;;:38;11833:89;;11897:11;:13;;;;;;11833:89;-1:-1:-1;;;;;11934:29:0;;;;;;:11;:29;;;;;:54;;;;;;12009:16;12001:25;;;;;;12039:20;12062:35;12093:3;12062:26;:12;4784:2;12062:26;:16;:26;:::i;:35::-;12039:58;-1:-1:-1;12108:18:0;12129:36;12161:3;12129:27;:12;4828:1;12129:27;:16;:27;:::i;:36::-;12108:57;-1:-1:-1;12176:22:0;12201:38;12235:3;12201:29;:12;4873:1;12201:29;:16;:29;:::i;:38::-;12176:63;-1:-1:-1;12250:15:0;12268:33;12297:3;12268:24;:12;4913:1;12268:24;:16;:24;:::i;:33::-;12250:51;-1:-1:-1;12312:18:0;12333:36;12365:3;12333:27;:12;4956:1;12333:27;:16;:27;:::i;:36::-;12312:57;-1:-1:-1;12380:21:0;12404:39;12439:3;12404:30;:12;5002:1;12404:30;:16;:30;:::i;:39::-;12380:63;-1:-1:-1;12456:17:0;12476:29;12501:3;12476:20;:12;12493:2;12476:20;:16;:20;:::i;:29::-;12456:49;-1:-1:-1;12516:17:0;12536:27;:12;12456:49;12536:27;:16;:27;:::i;:::-;12592:5;;;12516:47;;-1:-1:-1;12576:34:0;;-1:-1:-1;;;;;12592:5:0;;12599:7;;12576:15;:34::i;:::-;-1:-1:-1;;;;;;12627:25:0;;;;;;:60;;;12671:16;-1:-1:-1;;;;;12656:31:0;:11;-1:-1:-1;;;;;12656:31:0;;;12627:60;:118;;;;-1:-1:-1;12726:19:0;;-1:-1:-1;;;;;12691:31:0;;;;;;:18;:31;;;;;;:54;;12627:118;12623:306;;;-1:-1:-1;;;;;12793:28:0;;;;;;:15;:28;;;;;;:48;;12826:14;12793:48;:32;:48;:::i;:::-;-1:-1:-1;;;;;12762:28:0;;;;;;:15;:28;;;;;:79;12623:306;;;12887:30;:10;12902:14;12887:30;:14;:30;:::i;:::-;12874:43;;12623:306;12941:23;12967:56;12983:16;13001:9;13012:10;12967:15;:56::i;:::-;13051:12;;12941:82;;-1:-1:-1;13051:30:0;;13068:12;13051:30;:16;:30;:::i;:::-;13036:12;:45;13116:21;;:37;;13142:10;13116:37;:25;:37;:::i;:::-;13092:21;:61;13191:24;;:43;;13220:13;13191:43;:28;:43;:::i;:::-;13164:24;:70;;;;13317:11;-1:-1:-1;;;;;13252:82:0;13268:16;-1:-1:-1;;;;;13252:82:0;;13286:12;13300:15;13330:3;13252:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13354:15;11691:1686;-1:-1:-1;;;;;;;;;;;;11691:1686:0:o;10670:1013::-;10777:7;10823:12;-1:-1:-1;;;10861:23:0;;10905:19;;;;;:69;;-1:-1:-1;10963:11:0;;10928:32;:15;10963:11;10928:32;:19;:32;:::i;:::-;:46;10905:69;10897:78;;;;;;10992:11;;:15;10988:325;;11038:11;;:32;;11054:15;11038:32;:15;:32;:::i;:::-;11024:11;:46;;;-1:-1:-1;;;11104:23:0;;11024:46;11104:37;;;;11085:14;:57;;11104:37;;;;11085:57;;;;;11225:11;;-1:-1:-1;;;11199:23:0;;11225:11;11199:37;;;;;11180:57;;11172:66;;11164:75;;10988:325;;;11272:11;:29;;;10988:325;-1:-1:-1;;;;;11365:36:0;;;;;;:18;:36;;;;;;:57;;11406:15;11365:57;:40;:57;:::i;:::-;-1:-1:-1;;;;;11325:36:0;;;;;;:18;:36;;;;;;;;:97;;;;11470:14;;11521:9;:27;;;;;:46;;11470:32;;;:39;;;11521:46;;;;;11585:55;;;;;;;11470:39;;-1:-1:-1;;;;;;;;;;;11585:55:0;;;;;;;;-1:-1:-1;11660:15:0;;10670:1013;-1:-1:-1;;;;;10670:1013:0:o;17096:1012::-;17470:5;;:44;;;-1:-1:-1;;;17470:44:0;;17495:4;17470:44;;;;;;;;;;;;17199:6;;;;;;;;;;;;;;-1:-1:-1;;;;;17470:5:0;;:16;;:44;;;;;;;;;;;;;;:5;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;17470:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17470:44:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17470:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17393:121;;;;;;;;;;;;;;;;;;;;;;;;;17533:10;:22;17544:10;-1:-1:-1;;;;;17533:22:0;-1:-1:-1;;;;;17533:22:0;;;;;;;;;;;;:33;17556:9;17533:33;;;;;;;;;;;:41;;;;;;;;;;;;:49;;17578:4;17533:49;;;:101;;;;-1:-1:-1;17597:10:0;17586:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:39;;;-1:-1:-1;;;17586:39:0;;;;:48;17533:101;17525:110;;;;;;17665:10;17654:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:41;:58;;;;:41;;:58;:87;;;;;17733:8;17716:25;;:13;:25;;;17654:87;17646:96;;;;;;17772:10;17761:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:43;;;-1:-1:-1;;;;;17808:22:0;;17761:69;17753:78;;;;;;17861:10;17850:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:45;;;-1:-1:-1;;;;;17850:61:0;;;:45;;:61;17842:70;;;;;;17942:10;17931:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:43;;;:57;;;;-1:-1:-1;;;17931:43:0;;;;:57;17923:66;;;;;;18019:10;18008:22;;;;:10;:22;;;;;;;;:33;;;;;;;;:44;;;:59;;;;-1:-1:-1;;;18008:44:0;;;;:59;18000:68;;;;;;18088:12;17096:1012;-1:-1:-1;;;;;;;;;17096:1012:0:o;1947:23436::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1947:23436:0;;;-1:-1:-1;1947:23436:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://0c3a0e08bae2c92473d4a5ac651f0aa3b44faba9dc59a3abfa9f1f068bc1c585
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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