ETH Price: $2,135.62 (+2.43%)

Contract

0xEf61Cd96cc2389E1F4E6cEb8d86d46694902C73c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Funded By

N/A

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Destruct110596872020-10-15 9:58:491977 days ago1602755929IN
0xEf61Cd96...94902C73c
0 ETH0.0007734155
Register Dev234110596722020-10-15 9:55:051977 days ago1602755705IN
0xEf61Cd96...94902C73c
0 ETH0.0041479955
Buy110584922020-10-15 5:31:291977 days ago1602739889IN
0xEf61Cd96...94902C73c
0.24 ETH0.010811965
Buy110553722020-10-14 18:10:321978 days ago1602699032IN
0xEf61Cd96...94902C73c
0.975 ETH0.0116055664
Buy110552502020-10-14 17:42:391978 days ago1602697359IN
0xEf61Cd96...94902C73c
0.46 ETH0.0096475458
Withdraw Rewards110550762020-10-14 17:08:051978 days ago1602695285IN
0xEf61Cd96...94902C73c
0 ETH0.0014867370
Buy110539622020-10-14 13:11:511978 days ago1602681111IN
0xEf61Cd96...94902C73c
0.182 ETH0.0110615561
Buy110539562020-10-14 13:10:491978 days ago1602681049IN
0xEf61Cd96...94902C73c
0.485 ETH0.0101465561
Withdraw Rewards110524352020-10-14 7:22:271978 days ago1602660147IN
0xEf61Cd96...94902C73c
0 ETH0.0012382358.30000023
Buy110521532020-10-14 6:21:251978 days ago1602656485IN
0xEf61Cd96...94902C73c
0.1 ETH0.006890838
Buy110520202020-10-14 5:54:111978 days ago1602654851IN
0xEf61Cd96...94902C73c
0.1 ETH0.0100131851
Withdraw Rewards110519332020-10-14 5:35:271978 days ago1602653727IN
0xEf61Cd96...94902C73c
0 ETH0.0010619550
Transfer110483552020-10-13 16:22:231979 days ago1602606143IN
0xEf61Cd96...94902C73c
0 ETH0.004032193
Transfer110482942020-10-13 16:10:041979 days ago1602605404IN
0xEf61Cd96...94902C73c
0 ETH0.0065297589
Buy110473352020-10-13 12:38:281979 days ago1602592708IN
0xEf61Cd96...94902C73c
0.325 ETH0.006498954
Withdraw Rewards110472752020-10-13 12:23:061979 days ago1602591786IN
0xEf61Cd96...94902C73c
0 ETH0.0008707941
Buy110470482020-10-13 11:33:401979 days ago1602588820IN
0xEf61Cd96...94902C73c
0.99 ETH0.0059841233
Buy110462152020-10-13 8:28:591979 days ago1602577739IN
0xEf61Cd96...94902C73c
0.27 ETH0.0053728551
Withdraw Rewards110461702020-10-13 8:18:121979 days ago1602577092IN
0xEf61Cd96...94902C73c
0 ETH0.0008283239
Buy110459652020-10-13 7:28:551979 days ago1602574135IN
0xEf61Cd96...94902C73c
0.115554 ETH0.007016458.30000023
Withdraw Rewards110459402020-10-13 7:24:211979 days ago1602573861IN
0xEf61Cd96...94902C73c
0 ETH0.0012382358.30000023
Buy110459312020-10-13 7:22:511979 days ago1602573771IN
0xEf61Cd96...94902C73c
0.14 ETH0.0093148756
Buy110451792020-10-13 4:44:331979 days ago1602564273IN
0xEf61Cd96...94902C73c
0.251 ETH0.0058217935
Withdraw Rewards110450482020-10-13 4:16:261979 days ago1602562586IN
0xEf61Cd96...94902C73c
0 ETH0.0007504533
Withdraw Rewards110450402020-10-13 4:14:511979 days ago1602562491IN
0xEf61Cd96...94902C73c
0 ETH0.0006159329
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-110596872020-10-15 9:58:491977 days ago1602755929
0xEf61Cd96...94902C73c
28.9340271 ETH
-110550762020-10-14 17:08:051978 days ago1602695285
0xEf61Cd96...94902C73c
0.1462725 ETH
-110524352020-10-14 7:22:271978 days ago1602660147
0xEf61Cd96...94902C73c
0.05497774 ETH
-110519332020-10-14 5:35:271978 days ago1602653727
0xEf61Cd96...94902C73c
0.11573785 ETH
-110472752020-10-13 12:23:061979 days ago1602591786
0xEf61Cd96...94902C73c
0.16216618 ETH
-110461702020-10-13 8:18:121979 days ago1602577092
0xEf61Cd96...94902C73c
0.26819244 ETH
-110459402020-10-13 7:24:211979 days ago1602573861
0xEf61Cd96...94902C73c
0.137511 ETH
-110450402020-10-13 4:14:511979 days ago1602562491
0xEf61Cd96...94902C73c
0.25690452 ETH
-110363962020-10-11 20:21:301981 days ago1602447690
0xEf61Cd96...94902C73c
0.01078048 ETH
-110290782020-10-10 17:39:051982 days ago1602351545
0xEf61Cd96...94902C73c
0.17173754 ETH
-110284962020-10-10 15:31:451982 days ago1602343905
0xEf61Cd96...94902C73c
0.31869664 ETH
-110257932020-10-10 5:27:381982 days ago1602307658
0xEf61Cd96...94902C73c
0.02326753 ETH
-110226022020-10-09 17:33:031983 days ago1602264783
0xEf61Cd96...94902C73c
0.152955 ETH
-110225482020-10-09 17:19:371983 days ago1602263977
0xEf61Cd96...94902C73c
0.00827015 ETH
-110219732020-10-09 15:03:451983 days ago1602255825
0xEf61Cd96...94902C73c
0.1914496 ETH
-110219052020-10-09 14:48:041983 days ago1602254884
0xEf61Cd96...94902C73c
0.47903793 ETH
-110202042020-10-09 8:37:571983 days ago1602232677
0xEf61Cd96...94902C73c
0.06371977 ETH
-110190822020-10-09 4:19:251983 days ago1602217165
0xEf61Cd96...94902C73c
0.13998879 ETH
-110157752020-10-08 15:42:231984 days ago1602171743
0xEf61Cd96...94902C73c
0.67406575 ETH
-110156522020-10-08 15:13:501984 days ago1602170030
0xEf61Cd96...94902C73c
0.16489704 ETH
-110156292020-10-08 15:09:121984 days ago1602169752
0xEf61Cd96...94902C73c
0.09548894 ETH
-110156212020-10-08 15:07:121984 days ago1602169632
0xEf61Cd96...94902C73c
0.22423469 ETH
-110086202020-10-07 12:33:581985 days ago1602074038
0xEf61Cd96...94902C73c
0.604395 ETH
-110081862020-10-07 10:59:281985 days ago1602068368
0xEf61Cd96...94902C73c
0.02673 ETH
-110080902020-10-07 10:38:111985 days ago1602067091
0xEf61Cd96...94902C73c
0.043362 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
Contract Self Destruct called at Txn Hash 0x5e3a12374e236a01381269589936fe646ba10841a2e48d219722b557e1bac7a5


Contract Source Code Verified (Exact Match)

Contract Name:
Fisso

Compiler Version
v0.4.26+commit.4563c3fc

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license
/**
 *Submitted for verification at Etherscan.io on 2020-09-26
*/

pragma solidity ^0.4.26;

contract Fisso {
    modifier onlyBagholders() {
        require(myTokens() > 0);
        _;
    }

    modifier onlyAdministrator(){
        address _customerAddress = msg.sender;
        require(administrators[_customerAddress]);
        _;
    }
   
    /*==============================
    =            EVENTS            =
    ==============================*/
    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        uint256 totalSupply,
        address indexed referredBy
    );
   
    event onTokenSell(
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 ethereumEarned
    );
   
    event onReinvestment(
        address indexed customerAddress,
        uint256 ethereumReinvested,
        uint256 tokensMinted
    );
   
    event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );
   
    // ERC20
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 tokens
    );
   
   
    /*=====================================
    =            CONFIGURABLES            =
    =====================================*/
    string public name = "Fisso";
    string public symbol = "FSO";
    uint256 constant public totalSupply_ = 50000000;
    uint8 constant public decimals = 0;
    uint256 constant internal tokenPriceInitial_ = 27027027;
    uint256 constant internal tokenPriceIncremental_ = 216216;
    uint256 public percent = 300;
    uint256 public currentPrice_ = tokenPriceInitial_ + tokenPriceIncremental_;
    uint256 public communityFunds = 0;
    address dev1; //management fees
    address dev2; //development and progress account
    address dev3; //marketing expenditure
    address dev4; //running cost and other expenses
   
   /*================================
    =            DATASETS            =
    ================================*/
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal rewardBalanceLedger_;
    address[] public holders_=new address[](0);
    address sonk;
    uint256 internal tokenSupply_ = 0;
    mapping(address => bool) public administrators;
    mapping(address => address) public genTree;
   
    constructor() public
    {
        sonk = msg.sender;
        administrators[sonk] = true;
    }
   
    function buy(address _referredBy)
        public
        payable
        returns(uint256)
    {
        genTree[msg.sender] = _referredBy;
        purchaseTokens(msg.value, _referredBy);
    }
   
    function()
        payable
        public
    {
        purchaseTokens(msg.value, 0x0);
    }
   
    function withdrawRewards()
        public
    {
        address customerAddress_ = msg.sender;
        if(rewardBalanceLedger_[customerAddress_]>1000000000)
        {
            customerAddress_.transfer(rewardBalanceLedger_[customerAddress_]);
            rewardBalanceLedger_[customerAddress_] = 0;
        }
    }
   
    function reInvest()
        public
    {
        address customerAddress_ = msg.sender;
        require(rewardBalanceLedger_[customerAddress_] >= (currentPrice_*2), 'Your rewards are too low yet');
        rewardBalanceLedger_[customerAddress_] = 0;
        purchaseTokens(rewardBalanceLedger_[customerAddress_], genTree[msg.sender]);
    }
   
    function distributeRewards(uint256 amountToDistribute)
    public
    onlyAdministrator()
    {
        if(communityFunds >= amountToDistribute)
        {
            for(uint i = 0; i<holders_.length;i++)
            {
                uint256 _balance = tokenBalanceLedger_[holders_[i]];
                if(_balance>0)
                {
                    rewardBalanceLedger_[holders_[i]] += ((_balance*10000000/tokenSupply_)*(amountToDistribute))/10000000;
                }
            }
            communityFunds -= amountToDistribute;
        }
    }
   
    function exit()
        public
    {
        address _customerAddress = msg.sender;
        uint256 _tokens = tokenBalanceLedger_[_customerAddress];
        if(_tokens > 0) sell(_tokens);
        if(rewardBalanceLedger_[_customerAddress]>0)
        {
            _customerAddress.transfer(rewardBalanceLedger_[_customerAddress]);
        }
    }

    /**
     * Liquifies tokens to ethereum.
     */
    function sell(uint256 _amountOfTokens)
        onlyBagholders()
        public
    {
        // setup data
        address _customerAddress = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens = _amountOfTokens;
        uint256 _ethereum = tokensToEthereum_(_tokens,true);
        uint256 _dividends = _ethereum * 200/1000;
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        uint256 rewardsToDistribute = _dividends*1000/2000;
        rewardBalanceLedger_[dev1] = rewardBalanceLedger_[dev1]+(rewardsToDistribute*250/1000);
        rewardBalanceLedger_[dev2] = rewardBalanceLedger_[dev2]+(rewardsToDistribute*250/1000);
        rewardBalanceLedger_[dev3] = rewardBalanceLedger_[dev3]+(rewardsToDistribute*250/1000);
        rewardBalanceLedger_[dev4] = rewardBalanceLedger_[dev4]+(rewardsToDistribute*250/1000);
        communityFunds += rewardsToDistribute;
        rewardBalanceLedger_[feeHolder_] += _dividends-(2*rewardsToDistribute);
        // fire event
        emit Transfer(_customerAddress,address(this), _amountOfTokens);
        // burn the sold tokens
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);
        _customerAddress.transfer(_taxedEthereum);
    }
    address feeHolder_;
    function registerDev234(address _devAddress1, address _devAddress2, address _devAddress3,address _devAddress4,address _feeHolder)
    onlyAdministrator()
    public
    {
        dev1 = _devAddress1;
        dev2 = _devAddress2;
        dev3 = _devAddress3;
        dev4 = _devAddress4;
        feeHolder_ = _feeHolder;
        administrators[feeHolder_] = true;
    }
   
    function transfer(address _toAddress, uint256 _amountOfTokens)
        public
        returns(bool)
    {
        // setup
        address _customerAddress = msg.sender;
       
        // these are dispersed to shareholders
        uint256 _tokenFee = _amountOfTokens * 10/100;
        uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee);
        tokenBalanceLedger_[feeHolder_] += _tokenFee;
        // exchange tokens
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);
        emit Transfer(_customerAddress, _toAddress, _taxedTokens);
       
        // ERC20
        return true;
       
    }
   
    function destruct() onlyAdministrator() public{
        selfdestruct(feeHolder_);
    }
   
    function setPercent(uint256 newPercent) onlyAdministrator() public {
        percent = newPercent * 10;
    }
   
    function setName(string _name)
        onlyAdministrator()
        public
    {
        name = _name;
    }
   
    function setSymbol(string _symbol)
        onlyAdministrator()
        public
    {
        symbol = _symbol;
    }

    function totalEthereumBalance()
        public
        view
        returns(uint)
    {
        return address(this).balance;
    }
   
    function totalSupply()
        public
        pure
        returns(uint256)
    {
        return totalSupply_;
    }
    
    function tokenSupply()
        public
        view
        returns(uint256)
    {
        return tokenSupply_;
    }
   
    function getCommunityFunds()
    public
    view
    returns(uint256)
    {
        return communityFunds;
    }
   
    /**
     * Retrieve the tokens owned by the caller.
     */
    function myTokens()
        public
        view
        returns(uint256)
    {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress);
    }
   
    /**
     * Retrieve the token balance of any single address.
     */
    function balanceOf(address _customerAddress)
        view
        public
        returns(uint256)
    {
        return tokenBalanceLedger_[_customerAddress];
    }
   
    //check the ethereum reward balance
     function rewardOf(address _customerAddress)
        view
        public
        returns(uint256)
    {
        return rewardBalanceLedger_[_customerAddress];
    }

    function sellPrice()
        public
        view
        returns(uint256)
    {
        // our calculation relies on the token supply, so we need supply. Doh.
        if(tokenSupply_ == 0){
            return tokenPriceInitial_ - tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(2,false);
            uint256 _dividends = _ethereum * 200/1000;
            uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }
   
    /**
     * Return the sell price of 1 individual token.
     */
    function buyPrice()
        public
        view
        returns(uint256)
    {
        return currentPrice_;
    }
   
    function calculateEthereumReceived(uint256 _tokensToSell)
        public
        view
        returns(uint256)
    {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum = tokensToEthereum_(_tokensToSell,false);
        uint256 _dividends = _ethereum * 200/1000;
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }
   
    /*==========================================
    =            INTERNAL FUNCTIONS            =
    ==========================================*/
   
    event testLog(
        uint256 currBal
    );
    function calculateTokensReceived(uint256 _ethereumToSpend)
        public
        view
        returns(uint256)
    {
        uint256 _dividends = _ethereumToSpend * percent/1000;
        uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum, currentPrice_, false);
        return _amountOfTokens;
    }
   
    function purchaseTokens(uint256 _incomingEthereum, address _referredBy)
        internal
        returns(uint256)
    {
        // data setup
        address _customerAddress = msg.sender;
        uint256 _dividends = _incomingEthereum * percent/1000;
        uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum , currentPrice_, true);
        require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));
        tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        if(tokenBalanceLedger_[_customerAddress] == _amountOfTokens)
        {
            holders_.push(_customerAddress);
        }
        uint256 rewardsToDistribute = _dividends*330/1000;
        communityFunds += rewardsToDistribute;
        rewardBalanceLedger_[_referredBy] += (rewardsToDistribute * 150) / 100;
        rewardBalanceLedger_[feeHolder_] += _dividends-(2*rewardsToDistribute);
        rewardsToDistribute = (rewardsToDistribute * 50) / 100;
        rewardBalanceLedger_[dev1] = rewardBalanceLedger_[dev1]+(rewardsToDistribute*250/1000);
        rewardBalanceLedger_[dev2] = rewardBalanceLedger_[dev2]+(rewardsToDistribute*250/1000);
        rewardBalanceLedger_[dev3] = rewardBalanceLedger_[dev3]+(rewardsToDistribute*250/1000);
        rewardBalanceLedger_[dev4] = rewardBalanceLedger_[dev4]+(rewardsToDistribute*250/1000);
        require(SafeMath.add(_amountOfTokens,tokenSupply_) <= totalSupply_);
        // fire event
        emit Transfer(address(this),_customerAddress, _amountOfTokens);
        return _amountOfTokens;
    }
   
    function ethereumToTokens_(uint256 _ethereum, uint256 _currentPrice, bool buy)
        internal
        view
        returns(uint256)
    {
        uint256 _tempad = SafeMath.sub((2*_currentPrice), _tokenPriceIncremental);
        uint256 _tokenSupply = tokenSupply_;
        uint256 _tokenPriceIncremental = (tokenPriceIncremental_*(3**(_tokenSupply/5000000)));
        uint256 _totalTokens = 0;
        uint256 _tokensReceived = (
            (
                SafeMath.sub(
                    (sqrt
                        (
                            _tempad**2
                            + (8*_tokenPriceIncremental*_ethereum)
                        )
                    ), _tempad
                )
            )/(2*_tokenPriceIncremental)
        );
        uint256 tempbase = ((_tokenSupply/5000000)+1)*5000000;
        while((_tokensReceived + _tokenSupply) > tempbase){
            _tokensReceived = tempbase - _tokenSupply;
            _ethereum = SafeMath.sub(
                _ethereum,
                ((_tokensReceived)/2)*
                ((2*_currentPrice)+((_tokensReceived-1)
                *_tokenPriceIncremental))
            );
            _currentPrice = _currentPrice+((_tokensReceived-1)*_tokenPriceIncremental);
            _tokenPriceIncremental = (tokenPriceIncremental_*((3)**((_tokensReceived + _tokenSupply)/5000000)));
            _tempad = SafeMath.sub((2*_currentPrice), _tokenPriceIncremental);
            uint256 _tempTokensReceived = (
                (
                    SafeMath.sub(
                        (sqrt
                            (
                                _tempad**2
                                + (8*_tokenPriceIncremental*_ethereum)
                            )
                        ), _tempad
                    )
                )/(2*_tokenPriceIncremental)
            );
            _tokenSupply = _tokenSupply + _tokensReceived;
            _totalTokens = _totalTokens + _tokensReceived;
            _tokensReceived = _tempTokensReceived;
            tempbase = ((_tokenSupply/5000000)+1)*5000000;
        }
        _totalTokens = _totalTokens + _tokensReceived;
        _currentPrice = _currentPrice+((_tokensReceived-1)*_tokenPriceIncremental);
        if(buy == true)
        {
            currentPrice_ = _currentPrice;
        }
        return _totalTokens;
    }
   
     function tokensToEthereum_(uint256 _tokens, bool sell)
        internal
        view
        returns(uint256)
    {
        uint256 _tokenSupply = tokenSupply_;
        uint256 _etherReceived = 0;
        uint256 tempbase = ((_tokenSupply/5000000))*5000000;
        uint256 _currentPrice = currentPrice_;
        uint256 _tokenPriceIncremental = (tokenPriceIncremental_*((3)**(_tokenSupply/5000000)));
        while((_tokenSupply - _tokens) < tempbase)
        {
            uint256 tokensToSell = _tokenSupply - tempbase;
            if(tokensToSell == 0)
            {
                _tokenSupply = _tokenSupply - 1;
                tempbase = ((_tokenSupply/5000000))*5000000;
                continue;
            }
            uint256 b = ((tokensToSell-1)*_tokenPriceIncremental);
            uint256 a = _currentPrice - b;
            _tokens = _tokens - tokensToSell;
            _etherReceived = _etherReceived + ((tokensToSell/2)*((2*a)+b));
            _currentPrice = a;
            _tokenSupply = _tokenSupply - tokensToSell;
            _tokenPriceIncremental = (tokenPriceIncremental_*((3)**((_tokenSupply-1)/5000000)));
            tempbase = (((_tokenSupply-1)/5000000))*5000000;
        }
        if(_tokens > 0)
        {
             a = _currentPrice - ((_tokens-1)*_tokenPriceIncremental);
             _etherReceived = _etherReceived + ((_tokens/2)*((2*a)+((_tokens-1)*_tokenPriceIncremental)));
             _tokenSupply = _tokenSupply - _tokens;
             _currentPrice = a;
        }
        if(sell == true)
        {
            currentPrice_ = _currentPrice;
        }
        return _etherReceived;
    }
   
   
    function sqrt(uint x) internal pure returns (uint y) {
        uint z = (x + 1) / 2;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    /**
    * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"rewardOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_devAddress1","type":"address"},{"name":"_devAddress2","type":"address"},{"name":"_devAddress3","type":"address"},{"name":"_devAddress4","type":"address"},{"name":"_feeHolder","type":"address"}],"name":"registerDev234","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentPrice_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"reInvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amountToDistribute","type":"uint256"}],"name":"distributeRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"communityFunds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPercent","type":"uint256"}],"name":"setPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCommunityFunds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"genTree","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"holders_","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":false,"name":"totalSupply","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"currBal","type":"uint256"}],"name":"testLog","type":"event"}]

60806040526040805190810160405280600581526020017f466973736f0000000000000000000000000000000000000000000000000000008152506000908051906020019062000051929190620001d6565b506040805190810160405280600381526020017f46534f0000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f929190620001d6565b5061012c60025562034c9863019c66530160035560006004556000604051908082528060200260200182016040528015620000e95781602001602082028038833980820191505090505b50600b9080519060200190620001019291906200025d565b506000600d553480156200011457600080fd5b5033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200035a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021957805160ff19168380011785556200024a565b828001600101855582156200024a579182015b82811115620002495782518255916020019190600101906200022c565b5b509050620002599190620002ec565b5090565b828054828255906000526020600020908101928215620002d9579160200282015b82811115620002d85782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200027e565b5b509050620002e8919062000314565b5090565b6200031191905b808211156200030d576000816000905550600101620002f3565b5090565b90565b6200035791905b808211156200035357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200031b565b5090565b90565b612b7b806200036a6000396000f3006080604052600436106101a1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101af57806310d0ffdd1461023f57806318160ddd146102805780631d62ebd9146102ab5780632216a7631461030257806322609373146103c55780632b68b9c6146104065780632e926d491461041d578063313ce56714610448578063324536eb146104795780634b750334146104a457806350be99ad146104cf57806359974e38146104e65780635caef00a146105135780636b2f46321461053e57806370a082311461056957806370ba1113146105c05780637154b8b5146105eb57806376be15851461061857806376ffbec6146106735780637824407f1461069e5780638620410b146106c9578063949e8acd146106f457806395d89b411461071f5780639b5aaebf146107af578063a9059cbb14610832578063b84c824614610897578063c47f002714610900578063c7b8981c14610969578063e1dc76b014610980578063e4849b32146109ed578063e9fad8ee14610a1a578063f088d54714610a31575b6101ac346000610a7b565b50005b3480156101bb57600080fd5b506101c4611125565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102045780820151818401526020810190506101e9565b50505050905090810190601f1680156102315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024b57600080fd5b5061026a600480360381019080803590602001909291905050506111c3565b6040518082815260200191505060405180910390f35b34801561028c57600080fd5b50610295611204565b6040518082815260200191505060405180910390f35b3480156102b757600080fd5b506102ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611210565b6040518082815260200191505060405180910390f35b34801561030e57600080fd5b506103c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611259565b005b3480156103d157600080fd5b506103f06004803603810190808035906020019092919050505061147d565b6040518082815260200191505060405180910390f35b34801561041257600080fd5b5061041b6114cb565b005b34801561042957600080fd5b50610432611563565b6040518082815260200191505060405180910390f35b34801561045457600080fd5b5061045d611569565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048557600080fd5b5061048e61156e565b6040518082815260200191505060405180910390f35b3480156104b057600080fd5b506104b9611576565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b506104e46115cf565b005b3480156104f257600080fd5b5061051160048036038101908080359060200190929190505050611781565b005b34801561051f57600080fd5b5061052861194f565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b50610553611955565b6040518082815260200191505060405180910390f35b34801561057557600080fd5b506105aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611974565b6040518082815260200191505060405180910390f35b3480156105cc57600080fd5b506105d56119bd565b6040518082815260200191505060405180910390f35b3480156105f757600080fd5b50610616600480360381019080803590602001909291905050506119c3565b005b34801561062457600080fd5b50610659600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2e565b604051808215151515815260200191505060405180910390f35b34801561067f57600080fd5b50610688611a4e565b6040518082815260200191505060405180910390f35b3480156106aa57600080fd5b506106b3611a58565b6040518082815260200191505060405180910390f35b3480156106d557600080fd5b506106de611a62565b6040518082815260200191505060405180910390f35b34801561070057600080fd5b50610709611a6c565b6040518082815260200191505060405180910390f35b34801561072b57600080fd5b50610734611a81565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610774578082015181840152602081019050610759565b50505050905090810190601f1680156107a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107bb57600080fd5b506107f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083e57600080fd5b5061087d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b52565b604051808215151515815260200191505060405180910390f35b3480156108a357600080fd5b506108fe600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d72565b005b34801561090c57600080fd5b50610967600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611dea565b005b34801561097557600080fd5b5061097e611e62565b005b34801561098c57600080fd5b506109ab60048036038101908080359060200190929190505050611f81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109f957600080fd5b50610a1860048036038101908080359060200190929190505050611fbf565b005b348015610a2657600080fd5b50610a2f6125ad565b005b610a65600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126db565b6040518082815260200191505060405180910390f35b6000806000806000803394506103e86002548902811515610a9857fe5b049350610aa5888561276b565b9250610ab5836003546001612784565b9150600082118015610ad35750600d54610ad183600d546128fa565b115b1515610ade57600080fd5b610aea600d54836128fa565b600d81905550610b39600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836128fa565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c2a57600b8590806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6103e861014a8502811515610c3b57fe5b04905080600460008282540192505081905550606460968202811515610c5d57fe5b04600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550806002028403600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550606460328202811515610d2d57fe5b0490506103e860fa8202811515610d4057fe5b04600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa8202811515610e1957fe5b04600a6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa8202811515610ef257fe5b04600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa8202811515610fcb57fe5b04600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506302faf0806110a583600d546128fa565b111515156110b257600080fd5b8473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3819550505050505092915050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b6000806000806103e860025486028115156111da57fe5b0492506111e7858461276b565b91506111f7826003546000612784565b9050809350505050919050565b60006302faf080905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156112b657600080fd5b85600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b600080600080600d54851115151561149457600080fd5b61149f856000612918565b92506103e860c884028115156114b157fe5b0491506114be838361276b565b9050809350505050919050565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561152857600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60035481565b600081565b6302faf08081565b6000806000806000600d5414156115985762034c9863019c66530393506115c9565b6115a460026000612918565b92506103e860c884028115156115b657fe5b0491506115c3838361276b565b90508093505b50505090565b6000339050600260035402600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f757220726577617264732061726520746f6f206c6f77207965740000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061177d600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a7b565b5050565b6000806000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156117e157600080fd5b8360045410151561194957600092505b600b805490508310156119385760096000600b8581548110151561181157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600082111561192b576298968084600d5462989680850281151561189957fe5b04028115156118a457fe5b04600a6000600b868154811015156118b857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b82806001019350506117f1565b836004600082825403925050819055505b50505050565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60025481565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a2057600080fd5b600a82026002819055505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600454905090565b6000600d54905090565b6000600354905090565b600080339050611a7b81611974565b91505090565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b175780601f10611aec57610100808354040283529160200191611b17565b820191906000526020600020905b815481529060010190602001808311611afa57829003601f168201915b505050505081565b600f6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000803392506064600a8602811515611b6a57fe5b049150611b77858361276b565b90508160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611c31600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661276b565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cbd600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826128fa565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36001935050505092915050565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611dcf57600080fd5b8160019080519060200190611de5929190612aaa565b505050565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4757600080fd5b8160009080519060200190611e5d929190612aaa565b505050565b6000339050633b9aca00600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f7e578073ffffffffffffffffffffffffffffffffffffffff166108fc600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015611f37573d6000803e3d6000fd5b506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600b81815481101515611f9057fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000611fd2611a6c565b111515611fde57600080fd5b339550600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054871115151561202f57600080fd5b86945061203d856001612918565b93506103e860c8850281151561204f57fe5b04925061205c848461276b565b91506107d06103e8840281151561206f57fe5b0490506103e860fa820281151561208257fe5b04600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa820281151561215b57fe5b04600a6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa820281151561223457fe5b04600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa820281151561230d57fe5b04600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600460008282540192505081905550806002028303600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a36124cb600d548661276b565b600d8190555061251a600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661276b565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156125a3573d6000803e3d6000fd5b5050505050505050565b600080339150600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156126085761260781611fbf565b5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156126d7578173ffffffffffffffffffffffffffffffffffffffff166108fc600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156126d5573d6000803e3d6000fd5b505b5050565b600081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506127653483610a7b565b50919050565b600082821115151561277957fe5b818303905092915050565b60008060008060008060008061279d8a6002028661276b565b9650600d549550624c4b40868115156127b257fe5b0460030a62034c9802945060009350846002026127e16127db8d886008020260028b0a01612a5f565b8961276b565b8115156127ea57fe5b049250624c4b406001624c4b408881151561280157fe5b04010291505b8186840111156128c55785820392506128388b8660018603028c6002020160028681151561283157fe5b040261276b565b9a508460018403028a019950624c4b4086840181151561285457fe5b0460030a62034c9802945061286c8a6002028661276b565b96508460020261288e6128888d886008020260028b0a01612a5f565b8961276b565b81151561289757fe5b04905082860195508284019350809250624c4b406001624c4b40888115156128bb57fe5b0401029150612807565b82840193508460018403028a0199506001151589151514156128e957896003819055505b839750505050505050509392505050565b600080828401905083811015151561290e57fe5b8091505092915050565b6000806000806000806000806000600d54975060009650624c4b40808981151561293e57fe5b040295506003549450624c4b408881151561295557fe5b0460030a62034c980293505b858b89031015612a00578588039250600083141561299757600188039750624c4b40808981151561298e57fe5b04029550612961565b83600184030291508185039050828b039a508181600202016002848115156129bb57fe5b0402870196508094508288039750624c4b40600189038115156129da57fe5b0460030a62034c98029350624c4b408060018a038115156129f757fe5b04029550612961565b60008b1115612a39578360018c0302850390508360018c0302816002020160028c811515612a2a57fe5b0402870196508a880397508094505b600115158a15151415612a4e57846003819055505b869850505050505050505092915050565b600080600260018401811515612a7157fe5b0490508291505b81811015612aa4578091506002818285811515612a9157fe5b0401811515612a9c57fe5b049050612a78565b50919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612aeb57805160ff1916838001178555612b19565b82800160010185558215612b19579182015b82811115612b18578251825591602001919060010190612afd565b5b509050612b269190612b2a565b5090565b612b4c91905b80821115612b48576000816000905550600101612b30565b5090565b905600a165627a7a723058201debb4a6f1a96ea88f50bfb3c4f05c61046bf753cf4bd575d53038dc98ff15ec0029

Deployed Bytecode

0x6080604052600436106101a1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101af57806310d0ffdd1461023f57806318160ddd146102805780631d62ebd9146102ab5780632216a7631461030257806322609373146103c55780632b68b9c6146104065780632e926d491461041d578063313ce56714610448578063324536eb146104795780634b750334146104a457806350be99ad146104cf57806359974e38146104e65780635caef00a146105135780636b2f46321461053e57806370a082311461056957806370ba1113146105c05780637154b8b5146105eb57806376be15851461061857806376ffbec6146106735780637824407f1461069e5780638620410b146106c9578063949e8acd146106f457806395d89b411461071f5780639b5aaebf146107af578063a9059cbb14610832578063b84c824614610897578063c47f002714610900578063c7b8981c14610969578063e1dc76b014610980578063e4849b32146109ed578063e9fad8ee14610a1a578063f088d54714610a31575b6101ac346000610a7b565b50005b3480156101bb57600080fd5b506101c4611125565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102045780820151818401526020810190506101e9565b50505050905090810190601f1680156102315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024b57600080fd5b5061026a600480360381019080803590602001909291905050506111c3565b6040518082815260200191505060405180910390f35b34801561028c57600080fd5b50610295611204565b6040518082815260200191505060405180910390f35b3480156102b757600080fd5b506102ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611210565b6040518082815260200191505060405180910390f35b34801561030e57600080fd5b506103c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611259565b005b3480156103d157600080fd5b506103f06004803603810190808035906020019092919050505061147d565b6040518082815260200191505060405180910390f35b34801561041257600080fd5b5061041b6114cb565b005b34801561042957600080fd5b50610432611563565b6040518082815260200191505060405180910390f35b34801561045457600080fd5b5061045d611569565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048557600080fd5b5061048e61156e565b6040518082815260200191505060405180910390f35b3480156104b057600080fd5b506104b9611576565b6040518082815260200191505060405180910390f35b3480156104db57600080fd5b506104e46115cf565b005b3480156104f257600080fd5b5061051160048036038101908080359060200190929190505050611781565b005b34801561051f57600080fd5b5061052861194f565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b50610553611955565b6040518082815260200191505060405180910390f35b34801561057557600080fd5b506105aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611974565b6040518082815260200191505060405180910390f35b3480156105cc57600080fd5b506105d56119bd565b6040518082815260200191505060405180910390f35b3480156105f757600080fd5b50610616600480360381019080803590602001909291905050506119c3565b005b34801561062457600080fd5b50610659600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2e565b604051808215151515815260200191505060405180910390f35b34801561067f57600080fd5b50610688611a4e565b6040518082815260200191505060405180910390f35b3480156106aa57600080fd5b506106b3611a58565b6040518082815260200191505060405180910390f35b3480156106d557600080fd5b506106de611a62565b6040518082815260200191505060405180910390f35b34801561070057600080fd5b50610709611a6c565b6040518082815260200191505060405180910390f35b34801561072b57600080fd5b50610734611a81565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610774578082015181840152602081019050610759565b50505050905090810190601f1680156107a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107bb57600080fd5b506107f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b1f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561083e57600080fd5b5061087d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b52565b604051808215151515815260200191505060405180910390f35b3480156108a357600080fd5b506108fe600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d72565b005b34801561090c57600080fd5b50610967600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611dea565b005b34801561097557600080fd5b5061097e611e62565b005b34801561098c57600080fd5b506109ab60048036038101908080359060200190929190505050611f81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109f957600080fd5b50610a1860048036038101908080359060200190929190505050611fbf565b005b348015610a2657600080fd5b50610a2f6125ad565b005b610a65600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126db565b6040518082815260200191505060405180910390f35b6000806000806000803394506103e86002548902811515610a9857fe5b049350610aa5888561276b565b9250610ab5836003546001612784565b9150600082118015610ad35750600d54610ad183600d546128fa565b115b1515610ade57600080fd5b610aea600d54836128fa565b600d81905550610b39600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836128fa565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c2a57600b8590806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6103e861014a8502811515610c3b57fe5b04905080600460008282540192505081905550606460968202811515610c5d57fe5b04600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550806002028403600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550606460328202811515610d2d57fe5b0490506103e860fa8202811515610d4057fe5b04600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa8202811515610e1957fe5b04600a6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa8202811515610ef257fe5b04600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa8202811515610fcb57fe5b04600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506302faf0806110a583600d546128fa565b111515156110b257600080fd5b8473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3819550505050505092915050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111bb5780601f10611190576101008083540402835291602001916111bb565b820191906000526020600020905b81548152906001019060200180831161119e57829003601f168201915b505050505081565b6000806000806103e860025486028115156111da57fe5b0492506111e7858461276b565b91506111f7826003546000612784565b9050809350505050919050565b60006302faf080905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156112b657600080fd5b85600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b600080600080600d54851115151561149457600080fd5b61149f856000612918565b92506103e860c884028115156114b157fe5b0491506114be838361276b565b9050809350505050919050565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561152857600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60035481565b600081565b6302faf08081565b6000806000806000600d5414156115985762034c9863019c66530393506115c9565b6115a460026000612918565b92506103e860c884028115156115b657fe5b0491506115c3838361276b565b90508093505b50505090565b6000339050600260035402600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f757220726577617264732061726520746f6f206c6f77207965740000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061177d600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a7b565b5050565b6000806000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156117e157600080fd5b8360045410151561194957600092505b600b805490508310156119385760096000600b8581548110151561181157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600082111561192b576298968084600d5462989680850281151561189957fe5b04028115156118a457fe5b04600a6000600b868154811015156118b857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b82806001019350506117f1565b836004600082825403925050819055505b50505050565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60025481565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a2057600080fd5b600a82026002819055505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600454905090565b6000600d54905090565b6000600354905090565b600080339050611a7b81611974565b91505090565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b175780601f10611aec57610100808354040283529160200191611b17565b820191906000526020600020905b815481529060010190602001808311611afa57829003601f168201915b505050505081565b600f6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000803392506064600a8602811515611b6a57fe5b049150611b77858361276b565b90508160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611c31600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661276b565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cbd600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826128fa565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36001935050505092915050565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611dcf57600080fd5b8160019080519060200190611de5929190612aaa565b505050565b6000339050600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4757600080fd5b8160009080519060200190611e5d929190612aaa565b505050565b6000339050633b9aca00600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f7e578073ffffffffffffffffffffffffffffffffffffffff166108fc600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015611f37573d6000803e3d6000fd5b506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b600b81815481101515611f9057fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000611fd2611a6c565b111515611fde57600080fd5b339550600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054871115151561202f57600080fd5b86945061203d856001612918565b93506103e860c8850281151561204f57fe5b04925061205c848461276b565b91506107d06103e8840281151561206f57fe5b0490506103e860fa820281151561208257fe5b04600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa820281151561215b57fe5b04600a6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa820281151561223457fe5b04600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506103e860fa820281151561230d57fe5b04600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600460008282540192505081905550806002028303600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a36124cb600d548661276b565b600d8190555061251a600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661276b565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156125a3573d6000803e3d6000fd5b5050505050505050565b600080339150600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156126085761260781611fbf565b5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156126d7578173ffffffffffffffffffffffffffffffffffffffff166108fc600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156126d5573d6000803e3d6000fd5b505b5050565b600081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506127653483610a7b565b50919050565b600082821115151561277957fe5b818303905092915050565b60008060008060008060008061279d8a6002028661276b565b9650600d549550624c4b40868115156127b257fe5b0460030a62034c9802945060009350846002026127e16127db8d886008020260028b0a01612a5f565b8961276b565b8115156127ea57fe5b049250624c4b406001624c4b408881151561280157fe5b04010291505b8186840111156128c55785820392506128388b8660018603028c6002020160028681151561283157fe5b040261276b565b9a508460018403028a019950624c4b4086840181151561285457fe5b0460030a62034c9802945061286c8a6002028661276b565b96508460020261288e6128888d886008020260028b0a01612a5f565b8961276b565b81151561289757fe5b04905082860195508284019350809250624c4b406001624c4b40888115156128bb57fe5b0401029150612807565b82840193508460018403028a0199506001151589151514156128e957896003819055505b839750505050505050509392505050565b600080828401905083811015151561290e57fe5b8091505092915050565b6000806000806000806000806000600d54975060009650624c4b40808981151561293e57fe5b040295506003549450624c4b408881151561295557fe5b0460030a62034c980293505b858b89031015612a00578588039250600083141561299757600188039750624c4b40808981151561298e57fe5b04029550612961565b83600184030291508185039050828b039a508181600202016002848115156129bb57fe5b0402870196508094508288039750624c4b40600189038115156129da57fe5b0460030a62034c98029350624c4b408060018a038115156129f757fe5b04029550612961565b60008b1115612a39578360018c0302850390508360018c0302816002020160028c811515612a2a57fe5b0402870196508a880397508094505b600115158a15151415612a4e57846003819055505b869850505050505050505092915050565b600080600260018401811515612a7157fe5b0490508291505b81811015612aa4578091506002818285811515612a9157fe5b0401811515612a9c57fe5b049050612a78565b50919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612aeb57805160ff1916838001178555612b19565b82800160010185558215612b19579182015b82811115612b18578251825591602001919060010190612afd565b5b509050612b269190612b2a565b5090565b612b4c91905b80821115612b48576000816000905550600101612b30565b5090565b905600a165627a7a723058201debb4a6f1a96ea88f50bfb3c4f05c61046bf753cf4bd575d53038dc98ff15ec0029

Deployed Bytecode Sourcemap

28:16767:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2783:30;2798:9;2809:3;2783:14;:30::i;:::-;;28:16767;1302:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1302:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10270:394;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10270:394:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7783:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7783:122:0;;;;;;;;;;;;;;;;;;;;;;;8737:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8737:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5963:378;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5963:378:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9651:400;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9651:400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7162:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7162:89:0;;;;;;1628:74;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1628:74:0;;;;;;;;;;;;;;;;;;;;;;;1426:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1372:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1372:47:0;;;;;;;;;;;;;;;;;;;;;;;8914:524;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8914:524:0;;;;;;;;;;;;;;;;;;;;;;;3169:347;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:347:0;;;;;;3527:574;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3527:574:0;;;;;;;;;;;;;;;;;;;;;;;;;;1709:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1709:33:0;;;;;;;;;;;;;;;;;;;;;;;7635:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7635:137:0;;;;;;;;;;;;;;;;;;;;;;;8515:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8515:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1593:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1593:28:0;;;;;;;;;;;;;;;;;;;;;;;7262:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7262:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;2295:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2295:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8050:118:0;;;;;;;;;;;;;;;;;;;;;;;7917:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7917:122:0;;;;;;;;;;;;;;;;;;;;;;;9520:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9520:120:0;;;;;;;;;;;;;;;;;;;;;;;8246:182;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8246:182:0;;;;;;;;;;;;;;;;;;;;;;;1337:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1337:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1337:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2348:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2348:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6352:799;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6352:799:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7507:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7507:120:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7384:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7384:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2832:326;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2832:326:0;;;;;;2187:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2187:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4531:1401;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4531:1401:0;;;;;;;;;;;;;;;;;;;;;;;;;;4112:355;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4112:355:0;;;;;;2513:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10675:1793;10782:7;10830:24;10878:18;10942:22;11021:23;11541:27;10857:10;10830:37;;10927:4;10919:7;;10899:17;:27;:32;;;;;;;;10878:53;;10967:43;10980:17;10999:10;10967:12;:43::i;:::-;10942:68;;11047:55;11065:14;11082:13;;11097:4;11047:17;:55::i;:::-;11021:81;;11139:1;11121:15;:19;:82;;;;;11190:12;;11145:42;11158:15;11174:12;;11145;:42::i;:::-;:57;11121:82;11113:91;;;;;;;;11230:43;11243:12;;11257:15;11230:12;:43::i;:::-;11215:12;:58;;;;11324:68;11337:19;:37;11357:16;11337:37;;;;;;;;;;;;;;;;11376:15;11324:12;:68::i;:::-;11284:19;:37;11304:16;11284:37;;;;;;;;;;;;;;;:108;;;;11447:15;11406:19;:37;11426:16;11406:37;;;;;;;;;;;;;;;;:56;11403:128;;;11488:8;11502:16;11488:31;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;11488:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11403:128;11586:4;11582:3;11571:10;:14;:19;;;;;;;;11541:49;;11619:19;11601:14;;:37;;;;;;;;;;;11716:3;11709;11687:19;:25;11686:33;;;;;;;;11649:20;:33;11670:11;11649:33;;;;;;;;;;;;;;;;:70;;;;;;;;;;;11780:19;11778:1;:21;11766:10;:34;11730:20;:32;11751:10;;;;;;;;;;;11730:32;;;;;;;;;;;;;;;;:70;;;;;;;;;;;11862:3;11856:2;11834:19;:24;11833:32;;;;;;;;11811:54;;11957:4;11953:3;11933:19;:23;:28;;;;;;;;11905:20;:26;11926:4;;;;;;;;;;;11905:26;;;;;;;;;;;;;;;;:57;11876:20;:26;11897:4;;;;;;;;;;;11876:26;;;;;;;;;;;;;;;:86;;;;12054:4;12050:3;12030:19;:23;:28;;;;;;;;12002:20;:26;12023:4;;;;;;;;;;;12002:26;;;;;;;;;;;;;;;;:57;11973:20;:26;11994:4;;;;;;;;;;;11973:26;;;;;;;;;;;;;;;:86;;;;12151:4;12147:3;12127:19;:23;:28;;;;;;;;12099:20;:26;12120:4;;;;;;;;;;;12099:26;;;;;;;;;;;;;;;;:57;12070:20;:26;12091:4;;;;;;;;;;;12070:26;;;;;;;;;;;;;;;:86;;;;12248:4;12244:3;12224:19;:23;:28;;;;;;;;12196:20;:26;12217:4;;;;;;;;;;;12196:26;;;;;;;;;;;;;;;;:57;12167:20;:26;12188:4;;;;;;;;;;;12167:26;;;;;;;;;;;;;;;:86;;;;1411:8;12272:42;12285:15;12301:12;;12272;:42::i;:::-;:58;;12264:67;;;;;;;;12393:16;12370:57;;12387:4;12370:57;;;12411:15;12370:57;;;;;;;;;;;;;;;;;;12445:15;12438:22;;10675:1793;;;;;;;;;:::o;1302:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10270:394::-;10376:7;10401:18;10464:22;10542:23;10449:4;10441:7;;10422:16;:26;:31;;;;;;;;10401:52;;10489:42;10502:16;10520:10;10489:12;:42::i;:::-;10464:67;;10568:55;10586:14;10602:13;;10617:5;10568:17;:55::i;:::-;10542:81;;10641:15;10634:22;;10270:394;;;;;;:::o;7783:122::-;7853:7;1411:8;7878:19;;7783:122;:::o;8737:169::-;8828:7;8860:20;:38;8881:16;8860:38;;;;;;;;;;;;;;;;8853:45;;8737:169;;;:::o;5963:378::-;177:24;204:10;177:37;;233:14;:32;248:16;233:32;;;;;;;;;;;;;;;;;;;;;;;;;225:41;;;;;;;;6153:12;6146:4;;:19;;;;;;;;;;;;;;;;;;6183:12;6176:4;;:19;;;;;;;;;;;;;;;;;;6213:12;6206:4;;:19;;;;;;;;;;;;;;;;;;6243:12;6236:4;;:19;;;;;;;;;;;;;;;;;;6279:10;6266;;:23;;;;;;;;;;;;;;;;;;6329:4;6300:14;:26;6315:10;;;;;;;;;;;6300:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;5963:378;;;;;;:::o;9651:400::-;9756:7;9830:17;9899:18;9951:22;9806:12;;9789:13;:29;;9781:38;;;;;;;;9850;9868:13;9882:5;9850:17;:38::i;:::-;9830:58;;9936:4;9932:3;9920:9;:15;:20;;;;;;;;9899:41;;9976:35;9989:9;10000:10;9976:12;:35::i;:::-;9951:60;;10029:14;10022:21;;9651:400;;;;;;:::o;7162:89::-;177:24;204:10;177:37;;233:14;:32;248:16;233:32;;;;;;;;;;;;;;;;;;;;;;;;;225:41;;;;;;;;7232:10;;;;;;;;;;;7219:24;;;1628:74;;;;:::o;1426:34::-;1459:1;1426:34;:::o;1372:47::-;1411:8;1372:47;:::o;8914:524::-;8982:7;9206:17;9267:18;9323:22;9106:1;9090:12;;:17;9087:344;;;1580:6;1514:8;9130:43;9123:50;;;;9087:344;9226:26;9244:1;9246:5;9226:17;:26::i;:::-;9206:46;;9304:4;9300:3;9288:9;:15;:20;;;;;;;;9267:41;;9348:35;9361:9;9372:10;9348:12;:35::i;:::-;9323:60;;9405:14;9398:21;;8914:524;;;;;:::o;3169:347::-;3221:24;3248:10;3221:37;;3334:1;3320:13;;:15;3277:20;:38;3298:16;3277:38;;;;;;;;;;;;;;;;:59;;3269:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3421:1;3380:20;:38;3401:16;3380:38;;;;;;;;;;;;;;;:42;;;;3433:75;3448:20;:38;3469:16;3448:38;;;;;;;;;;;;;;;;3488:7;:19;3496:10;3488:19;;;;;;;;;;;;;;;;;;;;;;;;;3433:14;:75::i;:::-;;3169:347;:::o;3527:574::-;3704:6;3771:16;177:24;204:10;177:37;;233:14;:32;248:16;233:32;;;;;;;;;;;;;;;;;;;;;;;;;225:41;;;;;;;;3656:18;3638:14;;:36;;3635:459;;;3713:1;3704:10;;3700:332;3718:8;:15;;;;3716:1;:17;3700:332;;;3790:19;:32;3810:8;3819:1;3810:11;;;;;;;;;;;;;;;;;;;;;;;;;;;3790:32;;;;;;;;;;;;;;;;3771:51;;3853:1;3844:8;:10;3841:176;;;3989:8;3968:18;3953:12;;3944:8;3935;:17;:30;;;;;;;;3934:53;3933:64;;;;;;;;3896:20;:33;3917:8;3926:1;3917:11;;;;;;;;;;;;;;;;;;;;;;;;;;;3896:33;;;;;;;;;;;;;;;;:101;;;;;;;;;;;3841:176;3734:3;;;;;;;3700:332;;;4064:18;4046:14;;:36;;;;;;;;;;;3635:459;3527:574;;;;:::o;1709:33::-;;;;:::o;7635:137::-;7714:4;7751;7743:21;;;7736:28;;7635:137;:::o;8515:169::-;8607:7;8639:19;:37;8659:16;8639:37;;;;;;;;;;;;;;;;8632:44;;8515:169;;;:::o;1593:28::-;;;;:::o;7262:111::-;177:24;204:10;177:37;;233:14;:32;248:16;233:32;;;;;;;;;;;;;;;;;;;;;;;;;225:41;;;;;;;;7363:2;7350:10;:15;7340:7;:25;;;;7262:111;;:::o;2295:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;8050:118::-;8114:7;8146:14;;8139:21;;8050:118;:::o;7917:122::-;7987:7;8019:12;;8012:19;;7917:122;:::o;9520:120::-;9587:7;9619:13;;9612:20;;9520:120;:::o;8246:182::-;8313:7;8338:24;8365:10;8338:37;;8393:27;8403:16;8393:9;:27::i;:::-;8386:34;;8246:182;;:::o;1337:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2348:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;6352:799::-;6448:4;6488:24;6593:17;6648:20;6515:10;6488:37;;6634:3;6631:2;6613:15;:20;:24;;;;;;;;6593:44;;6671:40;6684:15;6701:9;6671:12;:40::i;:::-;6648:63;;6757:9;6722:19;:31;6742:10;;;;;;;;;;;6722:31;;;;;;;;;;;;;;;;:44;;;;;;;;;;;6845:68;6858:19;:37;6878:16;6858:37;;;;;;;;;;;;;;;;6897:15;6845:12;:68::i;:::-;6805:19;:37;6825:16;6805:37;;;;;;;;;;;;;;;:108;;;;6958:59;6971:19;:31;6991:10;6971:31;;;;;;;;;;;;;;;;7004:12;6958;:59::i;:::-;6924:19;:31;6944:10;6924:31;;;;;;;;;;;;;;;:93;;;;7060:10;7033:52;;7042:16;7033:52;;;7072:12;7033:52;;;;;;;;;;;;;;;;;;7130:4;7123:11;;6352:799;;;;;;;:::o;7507:120::-;177:24;204:10;177:37;;233:14;:32;248:16;233:32;;;;;;;;;;;;;;;;;;;;;;;;;225:41;;;;;;;;7612:7;7603:6;:16;;;;;;;;;;;;:::i;:::-;;7507:120;;:::o;7384:112::-;177:24;204:10;177:37;;233:14;:32;248:16;233:32;;;;;;;;;;;;;;;;;;;;;;;;;225:41;;;;;;;;7483:5;7476:4;:12;;;;;;;;;;;;:::i;:::-;;7384:112;;:::o;2832:326::-;2891:24;2918:10;2891:37;;2981:10;2942:20;:38;2963:16;2942:38;;;;;;;;;;;;;;;;:49;2939:212;;;3017:16;:25;;:65;3043:20;:38;3064:16;3043:38;;;;;;;;;;;;;;;;3017:65;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:65:0;3138:1;3097:20;:38;3118:16;3097:38;;;;;;;;;;;;;;;:42;;;;2939:212;2832:326;:::o;2187:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4531:1401::-;4651:24;4775:15;4819:17;4881:18;4933:22;5004:27;108:1;95:10;:8;:10::i;:::-;:14;87:23;;;;;;;;4678:10;4651:37;;4726:19;:37;4746:16;4726:37;;;;;;;;;;;;;;;;4707:15;:56;;4699:65;;;;;;;;4793:15;4775:33;;4839:31;4857:7;4865:4;4839:17;:31::i;:::-;4819:51;;4918:4;4914:3;4902:9;:15;:20;;;;;;;;4881:41;;4958:35;4971:9;4982:10;4958:12;:35::i;:::-;4933:60;;5050:4;5045;5034:10;:15;:20;;;;;;;;5004:50;;5146:4;5142:3;5122:19;:23;:28;;;;;;;;5094:20;:26;5115:4;;;;;;;;;;;5094:26;;;;;;;;;;;;;;;;:57;5065:20;:26;5086:4;;;;;;;;;;;5065:26;;;;;;;;;;;;;;;:86;;;;5243:4;5239:3;5219:19;:23;:28;;;;;;;;5191:20;:26;5212:4;;;;;;;;;;;5191:26;;;;;;;;;;;;;;;;:57;5162:20;:26;5183:4;;;;;;;;;;;5162:26;;;;;;;;;;;;;;;:86;;;;5340:4;5336:3;5316:19;:23;:28;;;;;;;;5288:20;:26;5309:4;;;;;;;;;;;5288:26;;;;;;;;;;;;;;;;:57;5259:20;:26;5280:4;;;;;;;;;;;5259:26;;;;;;;;;;;;;;;:86;;;;5437:4;5433:3;5413:19;:23;:28;;;;;;;;5385:20;:26;5406:4;;;;;;;;;;;5385:26;;;;;;;;;;;;;;;;:57;5356:20;:26;5377:4;;;;;;;;;;;5356:26;;;;;;;;;;;;;;;:86;;;;5471:19;5453:14;;:37;;;;;;;;;;;5551:19;5549:1;:21;5537:10;:34;5501:20;:32;5522:10;;;;;;;;;;;5501:32;;;;;;;;;;;;;;;;:70;;;;;;;;;;;5644:4;5610:57;;5619:16;5610:57;;;5651:15;5610:57;;;;;;;;;;;;;;;;;;5726:35;5739:12;;5753:7;5726:12;:35::i;:::-;5711:12;:50;;;;5812:60;5825:19;:37;5845:16;5825:37;;;;;;;;;;;;;;;;5864:7;5812:12;:60::i;:::-;5772:19;:37;5792:16;5772:37;;;;;;;;;;;;;;;:100;;;;5883:16;:25;;:41;5909:14;5883:41;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5883:41:0;4531:1401;;;;;;;:::o;4112:355::-;4160:24;4208:15;4187:10;4160:37;;4226:19;:37;4246:16;4226:37;;;;;;;;;;;;;;;;4208:55;;4287:1;4277:7;:11;4274:29;;;4290:13;4295:7;4290:4;:13::i;:::-;4274:29;4356:1;4317:20;:38;4338:16;4317:38;;;;;;;;;;;;;;;;:40;4314:146;;;4383:16;:25;;:65;4409:20;:38;4430:16;4409:38;;;;;;;;;;;;;;;;4383:65;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4383:65:0;4314:146;4112:355;;:::o;2513:199::-;2597:7;2644:11;2622:7;:19;2630:10;2622:19;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;2666:38;2681:9;2692:11;2666:14;:38::i;:::-;;2513:199;;;:::o;17709:123::-;17767:7;17799:1;17794;:6;;17787:14;;;;;;17823:1;17819;:5;17812:12;;17709:123;;;;:::o;12479:2409::-;12607:7;12632:15;12716:20;12762:30;12858:20;12893:23;13270:16;13961:27;12650:55;12666:13;12664:1;:15;12682:22;12650:12;:55::i;:::-;12632:73;;12739:12;;12716:35;;12837:7;12824:12;:20;;;;;;;;12820:1;:25;1580:6;12796:50;12762:85;;12881:1;12858:24;;13225:22;13223:1;:24;12953:253;12989:166;13118:9;13095:22;13093:1;:24;:34;13059:1;13050:7;:10;:78;12989:4;:166::i;:::-;13180:7;12953:12;:253::i;:::-;12934:314;;;;;;;;12893:366;;13316:7;13313:1;13304:7;13291:12;:20;;;;;;;;13290:24;13289:34;13270:53;;13334:1285;13375:8;13359:12;13341:15;:30;13340:43;13334:1285;;;13428:12;13417:8;:23;13399:41;;13467:196;13498:9;13624:22;13603:1;13587:15;:17;13586:60;13570:13;13568:1;:15;13567:80;13545:1;13528:15;13527:19;;;;;;;;13526:122;13467:12;:196::i;:::-;13455:208;;13729:22;13726:1;13710:15;:17;13709:42;13694:13;:58;13678:74;;13856:7;13842:12;13824:15;:30;13823:40;;;;;;;;13818:1;13817:47;1580:6;13793:72;13767:99;;13891:55;13907:13;13905:1;:15;13923:22;13891:12;:55::i;:::-;13881:65;;14337:22;14335:1;:24;14033:281;14073:182;14214:9;14191:22;14189:1;:24;:34;14151:1;14142:7;:10;:82;14073:4;:182::i;:::-;14284:7;14033:12;:281::i;:::-;14010:350;;;;;;;;13961:414;;14420:15;14405:12;:30;14390:45;;14480:15;14465:12;:30;14450:45;;14528:19;14510:37;;14600:7;14597:1;14588:7;14575:12;:20;;;;;;;;14574:24;14573:34;14562:45;;13334:1285;;;14659:15;14644:12;:30;14629:45;;14736:22;14733:1;14717:15;:17;14716:42;14701:13;:58;14685:74;;14780:4;14773:11;;:3;:11;;;14770:81;;;14826:13;14810;:29;;;;14770:81;14868:12;14861:19;;12479:2409;;;;;;;;;;;;:::o;17907:147::-;17965:7;17985:9;18001:1;17997;:5;17985:17;;18025:1;18020;:6;;18013:14;;;;;;18045:1;18038:8;;17907:147;;;;;:::o;14900:1678::-;15004:7;15029:20;15075:22;15112:16;15174:21;15222:30;15387:20;15652:9;15720;15052:12;;15029:35;;15100:1;15075:26;;15156:7;15146;15133:12;:20;;;;;;;;15131:32;15112:51;;15198:13;;15174:37;;15299:7;15286:12;:20;;;;;;;;15281:1;15280:27;1580:6;15256:52;15222:87;;15320:814;15353:8;15342:7;15327:12;:22;15326:35;15320:814;;;15425:8;15410:12;:23;15387:46;;15467:1;15451:12;:17;15448:190;;;15532:1;15517:12;:16;15502:31;;15588:7;15578;15565:12;:20;;;;;;;;15563:32;15552:43;;15614:8;;15448:190;15682:22;15679:1;15666:12;:14;15665:39;15652:53;;15748:1;15732:13;:17;15720:29;;15784:12;15774:7;:22;15764:32;;15870:1;15867;15865;:3;15864:7;15860:1;15847:12;:14;;;;;;;;15846:26;15828:14;:45;15811:62;;15904:1;15888:17;;15950:12;15935;:27;15920:42;;16050:7;16047:1;16034:12;:14;16033:24;;;;;;;;16028:1;16027:31;1580:6;16003:56;15977:83;;16115:7;16105;16102:1;16089:12;:14;16088:24;;;;;;;;16086:36;16075:47;;15320:814;;;16157:1;16147:7;:11;16144:303;;;16218:22;16215:1;16207:7;:9;16206:34;16189:13;:52;16185:56;;16324:22;16321:1;16313:7;:9;16312:34;16308:1;16306;:3;16305:42;16301:1;16293:7;:9;;;;;;;;16292:56;16274:14;:75;16257:92;;16395:7;16380:12;:22;16365:37;;16434:1;16418:17;;16144:303;16468:4;16460:12;;:4;:12;;;16457:82;;;16514:13;16498;:29;;;;16457:82;16556:14;16549:21;;14900:1678;;;;;;;;;;;;:::o;16594:198::-;16639:6;16658;16677:1;16672;16668;:5;16667:11;;;;;;;;16658:20;;16693:1;16689:5;;16705:80;16716:1;16712;:5;16705:80;;;16738:1;16734:5;;16772:1;16767;16763;16759;:5;;;;;;;;:9;16758:15;;;;;;;;16754:19;;16705:80;;;16594:198;;;;:::o;28:16767::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://1debb4a6f1a96ea88f50bfb3c4f05c61046bf753cf4bd575d53038dc98ff15ec

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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