Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 4 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x818598b0305dc16c694294e2d863f4e668a0aad5at txn 0xd36fdc3ca0067540cc73a808ea4bb1a3e785754bc30977b614404c16650cfee1
 Latest 4 txns

TxHash Age From To Value [TxFee]
0xb6e73037772fec24c2f003bdbd44406ad6dee64ef09c9c371421571d76a83d87288 days 15 hrs ago0x818598b0305dc16c694294e2d863f4e668a0aad5  IN   0x35fd00d47202b1b2158dba75e7cc8f71b068c2560 Ether0.00021616
0x1568354b8ad402efb48b6e62e578873cfe11f3289e3defedf8c1d063ffa5b5be288 days 15 hrs ago0x818598b0305dc16c694294e2d863f4e668a0aad5  IN   0x35fd00d47202b1b2158dba75e7cc8f71b068c2560 Ether0.00034818
0xdfbc5203893296b4879bfabad399a8c80536f9bf049ea4e4cdae9b670ac912ac288 days 15 hrs ago0x818598b0305dc16c694294e2d863f4e668a0aad5  IN   0x35fd00d47202b1b2158dba75e7cc8f71b068c2560 Ether0.00056005
0xd36fdc3ca0067540cc73a808ea4bb1a3e785754bc30977b614404c16650cfee1288 days 15 hrs ago0x818598b0305dc16c694294e2d863f4e668a0aad5  IN    Contract Creation0 Ether0.02421108
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Crowdsale
Compiler Text: v0.4.20+commit.3155dd80
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^ 0.4.17;


library SafeMath {

    function mul(uint a, uint b) internal pure returns(uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

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

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


contract ERC20 {
    uint public totalSupply;

    function balanceOf(address who) public view returns(uint);

    function allowance(address owner, address spender) public view returns(uint);

    function transfer(address to, uint value) public returns(bool ok);

    function transferFrom(address from, address to, uint value) public returns(bool ok);

    function approve(address spender, uint value) public returns(bool ok);

    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}


/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {

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

    /**
    * @dev The Ownable constructor sets the original `owner` of the contract to the sender
    * account.
    */
    function Ownable() public {
        owner = msg.sender;
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
    * @dev Allows the current owner to transfer control of the contract to a newOwner.
    * @param newOwner The address to transfer ownership to.
    */
    function transferOwnership(address newOwner) onlyOwner public {
        require(newOwner != address(0));
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}


/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;

  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
    modifier whenPaused() {
        require(paused);
        _;
    }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
    function pause() public onlyOwner whenNotPaused {
        paused = true;
        Pause();
    }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
    function unpause() public onlyOwner whenPaused {
        paused = false;
        Unpause();
    }
}


// Whitelist smart contract
// This smart contract keeps list of addresses to whitelist
contract WhiteList is Ownable {
    
    mapping(address => bool) public whiteList;
    uint public totalWhiteListed; //white listed users number

    event LogWhiteListed(address indexed user, uint whiteListedNum);
    event LogWhiteListedMultiple(uint whiteListedNum);
    event LogRemoveWhiteListed(address indexed user);

    // @notice it will return status of white listing
    // @return true if user is white listed and false if is not
    function isWhiteListed(address _user) external view returns (bool) {

        return whiteList[_user]; 
    }

    // @notice it will remove whitelisted user
    // @param _contributor {address} of user to unwhitelist
    function removeFromWhiteList(address _user) external onlyOwner() returns (bool) {
       
        require(whiteList[_user] == true);
        whiteList[_user] = false;
        totalWhiteListed--;
        LogRemoveWhiteListed(_user);
        return true;
    }

    // @notice it will white list one member
    // @param _user {address} of user to whitelist
    // @return true if successful
    function addToWhiteList(address _user) external onlyOwner()  returns (bool) {

        if (whiteList[_user] != true) {
            whiteList[_user] = true;
            totalWhiteListed++;
            LogWhiteListed(_user, totalWhiteListed);            
        }
        return true;
    }

    // @notice it will white list multiple members
    // @param _user {address[]} of users to whitelist
    // @return true if successful
    function addToWhiteListMultiple(address[] _users) external onlyOwner()  returns (bool) {

        for (uint i = 0; i < _users.length; ++i) {

            if (whiteList[_users[i]] != true) {
                whiteList[_users[i]] = true;
                totalWhiteListed++;                          
            }           
        }
        LogWhiteListedMultiple(totalWhiteListed); 
        return true;
    }
}


// @note this contract can be inherited by Crowdsale and TeamAllocation contracts and
// control release of tokens through even time release based on the inputted duration time interval
contract TokenVesting is Ownable {
    using SafeMath for uint;

    struct TokenHolder {
        uint weiReceived; // amount of ETH contributed
        uint tokensToSend; // amount of tokens  sent  
        bool refunded; // true if user has been refunded       
        uint releasedAmount; // amount released through vesting schedule
        bool revoked; // true if right to continue vesting is revoked
    }

    event Released(uint256 amount, uint256 tokenDecimals);
    event ContractUpdated(bool done);

    uint256 public cliff;  // time in  when vesting should begin
    uint256 public startCountDown;  // time when countdown starts
    uint256 public duration; // duration of period in which vesting takes place   
    Token public token;  // token contract containing tokens
    mapping(address => TokenHolder) public tokenHolders; //tokenHolder list
    WhiteList public whiteList; // whitelist contract
    uint256 public presaleBonus;
    
    // @note constructor 
    /**
    function TokenVesting(uint256 _start, uint256 _cliff, uint256 _duration) public {   
         require(_cliff <= _duration);   
        duration = _duration;
        cliff = _start.add(_cliff);
        startCountDown = _start;         
        ContractUpdated(true);                    
    }
    */
    // @notice Specify address of token contract
    // @param _tokenAddress {address} address of token contract
    // @return res {bool}
    function initilizeVestingAndTokenAndWhiteList(Token _tokenAddress, 
                                        uint256 _start, 
                                        uint256 _cliff, 
                                        uint256 _duration,
                                        uint256 _presaleBonus, 
                                        WhiteList _whiteList) external onlyOwner() returns(bool res) {
        require(_cliff <= _duration);   
        require(_tokenAddress != address(0));
        duration = _duration;
        cliff = _start.add(_cliff);
        startCountDown = _start;  
        token = _tokenAddress; 
        whiteList = _whiteList;
        presaleBonus = _presaleBonus;
        ContractUpdated(true);
        return true;    
    }

    // @notice Specify address of token contract
    // @param _tokenAddress {address} address of token contract
    // @return res {bool}
    function initilizeVestingAndToken(Token _tokenAddress, 
                                        uint256 _start, 
                                        uint256 _cliff, 
                                        uint256 _duration,
                                        uint256 _presaleBonus
                                        ) external onlyOwner() returns(bool res) {
        require(_cliff <= _duration);   
        require(_tokenAddress != address(0));
        duration = _duration;
        cliff = _start.add(_cliff);
        startCountDown = _start;  
        token = _tokenAddress;        
        presaleBonus = _presaleBonus;
        ContractUpdated(true);
        return true;    
    }

    function returnVestingSchedule() external view returns (uint, uint, uint) {

        return (duration, cliff, startCountDown);
    }

    // @note owner can revoke access to continue vesting of tokens
    // @param _user {address} of user to revoke their right to vesting
    function revoke(address _user) public onlyOwner() {

        TokenHolder storage tokenHolder = tokenHolders[_user];
        tokenHolder.revoked = true; 
    }

    function vestedAmountAvailable() public view returns (uint amount, uint decimals) {

        TokenHolder storage tokenHolder = tokenHolders[msg.sender];
        uint tokensToRelease = vestedAmount(tokenHolder.tokensToSend);

     //   if (tokenHolder.releasedAmount + tokensToRelease > tokenHolder.tokensToSend)
      //      return (tokenHolder.tokensToSend - tokenHolder.releasedAmount, token.decimals());
     //   else 
        return (tokensToRelease - tokenHolder.releasedAmount, token.decimals());
    }
    
    // @notice Transfers vested available tokens to beneficiary   
    function release() public {

        TokenHolder storage tokenHolder = tokenHolders[msg.sender];        
        // check if right to vesting is not revoked
        require(!tokenHolder.revoked);                                   
        uint tokensToRelease = vestedAmount(tokenHolder.tokensToSend);      
        uint currentTokenToRelease = tokensToRelease - tokenHolder.releasedAmount;
        tokenHolder.releasedAmount += currentTokenToRelease;            
        token.transfer(msg.sender, currentTokenToRelease);

        Released(currentTokenToRelease, token.decimals());
    }
  
    // @notice this function will determine vested amount
    // @param _totalBalance {uint} total balance of tokens assigned to this user
    // @return {uint} amount of tokens available to transfer
    function vestedAmount(uint _totalBalance) public view returns (uint) {

        if (now < cliff) {
            return 0;
        } else if (now >= startCountDown.add(duration)) {
            return _totalBalance;
        } else {
            return _totalBalance.mul(now.sub(startCountDown)) / duration;
        }
    }
}


// Crowdsale Smart Contract
// This smart contract collects ETH and in return sends  tokens to the Backers
contract Crowdsale is Pausable, TokenVesting {

    using SafeMath for uint;

    address public multisigETH; // Multisig contract that will receive the ETH
    address public commissionAddress;  // address to deposit commissions
    uint public tokensForTeam; // tokens for the team
    uint public ethReceivedPresale; // Number of ETH received in presale
    uint public ethReceivedMain; // Number of ETH received in main sale
    uint public totalTokensSent; // Number of tokens sent to ETH contributors
    uint public tokensSentMain;
    uint public tokensSentPresale;       
    uint public tokensSentDev;         
    uint public startBlock; // Crowdsale start block
    uint public endBlock; // Crowdsale end block
    uint public maxCap; // Maximum number of token to sell
    uint public minCap; // Minimum number of ETH to raise
    uint public minContributionMainSale; // Minimum amount to contribute in main sale
    uint public minContributionPresale; // Minimum amount to contribut in presale
    uint public maxContribution;
    bool public crowdsaleClosed; // Is crowdsale still on going
    uint public tokenPriceWei;
    uint public refundCount;
    uint public totalRefunded;
    uint public campaignDurationDays; // campaign duration in days 
    uint public firstPeriod; 
    uint public secondPeriod; 
    uint public thirdPeriod; 
    uint public firstBonus; 
    uint public secondBonus;
    uint public thirdBonus;
    uint public multiplier;
    uint public status;    
    Step public currentStep;  // To allow for controlled steps of the campaign 
   
    // Looping through Backer
    //mapping(address => Backer) public backers; //backer list
    address[] public holdersIndex;   // to be able to itarate through backers when distributing the tokens
    address[] public devIndex;   // to be able to itarate through backers when distributing the tokens

    // @notice to set and determine steps of crowdsale
    enum Step {      
        FundingPreSale,     // presale mode
        FundingMainSale,  // public mode
        Refunding  // in case campaign failed during this step contributors will be able to receive refunds
    }

    // @notice to verify if action is not performed out of the campaing range
    modifier respectTimeFrame() {
        if ((block.number < startBlock) || (block.number > endBlock)) 
            revert();
        _;
    }

    modifier minCapNotReached() {
        if (totalTokensSent >= minCap) 
            revert();
        _;
    }

    // Events
    event LogReceivedETH(address indexed backer, uint amount, uint tokenAmount);
    event LogStarted(uint startBlockLog, uint endBlockLog);
    event LogFinalized(bool success);  
    event LogRefundETH(address indexed backer, uint amount);
    event LogStepAdvanced();
    event LogDevTokensAllocated(address indexed dev, uint amount);
    event LogNonVestedTokensSent(address indexed user, uint amount);

    // Crowdsale  {constructor}
    // @notice fired when contract is crated. Initilizes all constnat variables.
    function Crowdsale(uint _decimalPoints,
                        address _multisigETH,
                        uint _toekensForTeam, 
                        uint _minContributionPresale,
                        uint _minContributionMainSale,
                        uint _maxContribution,                        
                        uint _maxCap, 
                        uint _minCap, 
                        uint _tokenPriceWei, 
                        uint _campaignDurationDays,
                        uint _firstPeriod, 
                        uint _secondPeriod, 
                        uint _thirdPeriod, 
                        uint _firstBonus, 
                        uint _secondBonus,
                        uint _thirdBonus) public {
        multiplier = 10**_decimalPoints;
        multisigETH = _multisigETH; 
        tokensForTeam = _toekensForTeam * multiplier; 
        minContributionPresale = _minContributionPresale; 
        minContributionMainSale = _minContributionMainSale;
        maxContribution = _maxContribution;       
        maxCap = _maxCap * multiplier;       
        minCap = _minCap * multiplier;
        tokenPriceWei = _tokenPriceWei;
        campaignDurationDays = _campaignDurationDays;
        firstPeriod = _firstPeriod; 
        secondPeriod = _secondPeriod; 
        thirdPeriod = _thirdPeriod;
        firstBonus = _firstBonus;
        secondBonus = _secondBonus;
        thirdBonus = _thirdBonus;       
        //TODO replace this address below with correct address.
        commissionAddress = 0x326B5E9b8B2ebf415F9e91b42c7911279d296ea1;
        //commissionAddress = 0x853A3F142430658A32f75A0dc891b98BF4bDF5c1;
        currentStep = Step.FundingPreSale; 
    }

    // @notice to populate website with status of the sale 
    function returnWebsiteData() external view returns(uint, 
        uint, uint, uint, uint, uint, uint, uint, uint, uint, bool, bool, uint, Step) {
    
        return (startBlock, endBlock, numberOfBackers(), ethReceivedPresale + ethReceivedMain, maxCap, minCap, 
                totalTokensSent, tokenPriceWei, minContributionPresale, minContributionMainSale, 
                paused, crowdsaleClosed, token.decimals(), currentStep);
    }
    
    // @notice this function will determine status of crowdsale
    function determineStatus() external view returns (uint) {
       
        if (crowdsaleClosed)            // ICO finihsed
            return 1;   

        if (block.number < endBlock && totalTokensSent < maxCap - 100)   // ICO in progress
            return 2;            
    
        if (totalTokensSent < minCap && block.number > endBlock)      // ICO failed    
            return 3;            
    
        if (endBlock == 0)           // ICO hasn't been started yet 
            return 4;            
    
        return 0;         
    } 

    // {fallback function}
    // @notice It will call internal function which handels allocation of Ether and calculates tokens.
    function () public payable {    
             
        contribute(msg.sender);
    }

    // @notice to allow for contribution from interface
    function contributePublic() external payable {
        contribute(msg.sender);
    }

    // @notice set the step of the campaign from presale to public sale
    // contract is deployed in presale mode
    // WARNING: there is no way to go back
    function advanceStep() external onlyOwner() {
        currentStep = Step.FundingMainSale;
        LogStepAdvanced();
    }

    // @notice It will be called by owner to start the sale    
    function start() external onlyOwner() {
        startBlock = block.number;
        endBlock = startBlock + (4*60*24*campaignDurationDays); // assumption is that one block takes 15 sec. 
        crowdsaleClosed = false;
        LogStarted(startBlock, endBlock);
    }

    // @notice This function will finalize the sale.
    // It will only execute if predetermined sale time passed or all tokens are sold.
    function finalize() external onlyOwner() {

        require(!crowdsaleClosed);                       
        require(block.number >= endBlock || totalTokensSent > maxCap - 1000);
                    // - 1000 is used to allow closing of the campaing when contribution is near 
                    // finished as exact amount of maxCap might be not feasible e.g. you can't easily buy few tokens. 
                    // when min contribution is 0.1 Eth.  

        require(totalTokensSent >= minCap);
        crowdsaleClosed = true;
        
        // transfer commission portion to the platform
        commissionAddress.transfer(determineCommissions());         
        
        // transfer remaning funds to the campaign wallet
        multisigETH.transfer(this.balance);
        
        /*if (!token.transfer(owner, token.balanceOf(this))) 
            revert(); // transfer tokens to admin account  
            
        if (!token.burn(this, token.balanceOf(this))) 
            revert();  // burn all the tokens remaining in the contract   */
        token.unlock();    // release lock from transfering tokens. 

        LogFinalized(true);        
    }

    // @notice it will allow contributors to get refund in case campaign failed
    // @return {bool} true if successful
    function refund() external whenNotPaused returns (bool) {      
        
        uint totalEtherReceived = ethReceivedPresale + ethReceivedMain;

        require(totalEtherReceived < minCap);  // ensure that campaign failed
        require(this.balance > 0);  // contract will hold 0 ether at the end of campaign.
                                    // contract needs to be funded through fundContract() 
        TokenHolder storage backer = tokenHolders[msg.sender];

        require(backer.weiReceived > 0);  // ensure that user has sent contribution
        require(!backer.refunded);        // ensure that user hasn't been refunded yet

        backer.refunded = true;  // save refund status to true
        refundCount++;
        totalRefunded += backer.weiReceived;

        if (!token.burn(msg.sender, backer.tokensToSend)) // burn tokens
            revert();        
        msg.sender.transfer(backer.weiReceived);  // send back the contribution 
        LogRefundETH(msg.sender, backer.weiReceived);
        return true;
    }

    // @notice allocate tokens to dev/team/advisors
    // @param _dev {address} 
    // @param _amount {uint} amount of tokens
    function devAllocation(address _dev, uint _amount) external onlyOwner() returns (bool) {

        require(_dev != address(0));
        require(crowdsaleClosed); 
        require(totalTokensSent.add(_amount) <= token.totalSupply());
        devIndex.push(_dev);
        TokenHolder storage tokenHolder = tokenHolders[_dev];
        tokenHolder.tokensToSend = _amount;
        tokensSentDev += _amount;
        totalTokensSent += _amount;        
        LogDevTokensAllocated(_dev, _amount); // Register event
        return true;

    }

    // @notice Failsafe drain
    function drain(uint _amount) external onlyOwner() {
        owner.transfer(_amount);           
    }

    // @notice transfer tokens which are not subject to vesting
    // @param _recipient {addres}
    // @param _amont {uint} amount to transfer
    function transferTokens(address _recipient, uint _amount) external onlyOwner() returns (bool) {

        require(_recipient != address(0));
        if (!token.transfer(_recipient, _amount))
            revert();
        LogNonVestedTokensSent(_recipient, _amount);
    }

    // @notice determine amount of commissions for the platform    
    function determineCommissions() public view returns (uint) {
     
        if (this.balance <= 500 ether) {
            return (this.balance * 10)/100;
        }else if (this.balance <= 1000 ether) {
            return (this.balance * 8)/100;
        }else if (this.balance < 10000 ether) {
            return (this.balance * 6)/100;
        }else {
            return (this.balance * 6)/100;
        }
    }

    // @notice return number of contributors
    // @return  {uint} number of contributors
    function numberOfBackers() public view returns (uint) {
        return holdersIndex.length;
    }

    // @notice It will be called by fallback function whenever ether is sent to it
    // @param  _backer {address} address of beneficiary
    // @return res {bool} true if transaction was successful
    function contribute(address _backer) internal whenNotPaused respectTimeFrame returns(bool res) {

        //require(msg.value <= maxContribution);

        if (whiteList != address(0))  // if whitelist initialized verify member whitelist status
            require(whiteList.isWhiteListed(_backer));  // ensure that user is whitelisted
          
        uint tokensToSend = calculateNoOfTokensToSend(); // calculate number of tokens

        // Ensure that max cap hasn't been reached
        require(totalTokensSent + tokensToSend <= maxCap);
        
        TokenHolder storage backer = tokenHolders[_backer];

        if (backer.weiReceived == 0)
            holdersIndex.push(_backer);

        if (Step.FundingMainSale == currentStep) { // Update the total Ether received and tokens sent during public sale
            require(msg.value >= minContributionMainSale); // stop when required minimum is not met    
            ethReceivedMain = ethReceivedMain.add(msg.value);
            tokensSentMain += tokensToSend;
        }else {  
            require(msg.value >= minContributionPresale); // stop when required minimum is not met
            ethReceivedPresale = ethReceivedPresale.add(msg.value); 
            tokensSentPresale += tokensToSend;
        }  
       
        backer.tokensToSend += tokensToSend;
        backer.weiReceived = backer.weiReceived.add(msg.value);       
        totalTokensSent += tokensToSend;      
        
        // tokens are not transferrd to contributors during this phase
        // tokens will be transferred based on the vesting schedule, when contributor
        // calls release() function of this contract
        LogReceivedETH(_backer, msg.value, tokensToSend); // Register event
        return true;
    }

    // @notice This function will return number of tokens based on time intervals in the campaign
    function calculateNoOfTokensToSend() internal view returns (uint) {

        uint tokenAmount = msg.value.mul(multiplier) / tokenPriceWei;

        if (Step.FundingMainSale == currentStep) {
        
            if (block.number <= startBlock + firstPeriod) {  
                return  tokenAmount + tokenAmount.mul(firstBonus) / 100;
            }else if (block.number <= startBlock + secondPeriod) {
                return  tokenAmount + tokenAmount.mul(secondBonus) / 100; 
            }else if (block.number <= startBlock + thirdPeriod) { 
                return  tokenAmount + tokenAmount.mul(thirdBonus) / 100;        
            }else {              
                return  tokenAmount; 
            }
        }else 
            return  tokenAmount + tokenAmount.mul(presaleBonus) / 100;
    }  
}


// The  token
contract Token is ERC20, Ownable {

    using SafeMath for uint;
    // Public variables of the token
    string public name;
    string public symbol;
    uint public decimals; // How many decimals to show.
    string public version = "v0.1";
    uint public totalSupply;
    bool public locked;
    address public crowdSaleAddress;

    mapping(address => uint) public balances;
    mapping(address => mapping(address => uint)) public allowed;
    
    // Lock transfer during the ICO
    modifier onlyUnlocked() {
        if (msg.sender != crowdSaleAddress && locked && msg.sender != owner) 
            revert();
        _;
    }

    modifier onlyAuthorized() {
        if (msg.sender != crowdSaleAddress && msg.sender != owner) 
            revert();
        _;
    }

    // The Token constructor     
    function Token(uint _initialSupply,
            string _tokenName,
            uint _decimalUnits,
            string _tokenSymbol,
            string _version,
            address _crowdSaleAddress) public {      
        locked = true;  // Lock the transfer of tokens during the crowdsale
        totalSupply = _initialSupply * (10**_decimalUnits);     
                                        
        name = _tokenName; // Set the name for display purposes
        symbol = _tokenSymbol; // Set the symbol for display purposes
        decimals = _decimalUnits; // Amount of decimals for display purposes
        version = _version;
        crowdSaleAddress = _crowdSaleAddress;              
        balances[crowdSaleAddress] = totalSupply;   
    }

    function unlock() public onlyAuthorized {
        locked = false;
    }

    function lock() public onlyAuthorized {
        locked = true;
    }

    function burn(address _member, uint256 _value) public onlyAuthorized returns(bool) {
        require(balances[_member] >= _value);
        balances[_member] -= _value;
        totalSupply -= _value;
        Transfer(_member, 0x0, _value);
        return true;
    }

   
    // @notice transfer tokens to given address
    // @param _to {address} address or recipient
    // @param _value {uint} amount to transfer
    // @return  {bool} true if successful
    function transfer(address _to, uint _value) public onlyUnlocked returns(bool) {

        require(_to != address(0));
        require(balances[msg.sender] >= _value);
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        Transfer(msg.sender, _to, _value);
        return true;
    }

    // @notice transfer tokens from given address to another address
    // @param _from {address} from whom tokens are transferred
    // @param _to {address} to whom tokens are transferred
    // @param _value {uint} amount of tokens to transfer
    // @return  {bool} true if successful
    function transferFrom(address _from, address _to, uint256 _value) public onlyUnlocked returns(bool success) {

        require(_to != address(0));
        require(balances[_from] >= _value); // Check if the sender has enough
        require(_value <= allowed[_from][msg.sender]); // Check if allowed is greater or equal
        balances[_from] -= _value; // Subtract from the sender
        balances[_to] += _value; // Add the same to the recipient
        allowed[_from][msg.sender] -= _value;  // adjust allowed
        Transfer(_from, _to, _value);
        return true;
    }

      // @notice to query balance of account
    // @return _owner {address} address of user to query balance
    function balanceOf(address _owner) public view returns(uint balance) {
        return balances[_owner];
    }

    /**
    * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
    *
    * Beware that changing an allowance with this method brings the risk that someone may use both the old
    * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
    * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
    * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    * @param _spender The address which will spend the funds.
    * @param _value The amount of tokens to be spent.
    */
    function approve(address _spender, uint _value) public returns(bool) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    // @notice to query of allowance of one user to the other
    // @param _owner {address} of the owner of the account
    // @param _spender {address} of the spender of the account
    // @return remaining {uint} amount of remaining allowance
    function allowance(address _owner, address _spender) public view returns(uint remaining) {
        return allowed[_owner][_spender];
    }

    /**
    * approve should be called when allowed[_spender] == 0. To increment
    * allowed value is better to use this function to avoid 2 calls (and wait until
    * the first transaction is mined)
    * From MonolithDAO Token.sol
    */
    function increaseApproval (address _spender, uint _addedValue) public returns (bool success) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function decreaseApproval (address _spender, uint _subtractedValue) public returns (bool success) {
        uint oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"tokenPriceWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"refundCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfBackers","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"firstBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"returnWebsiteData","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"bool"},{"name":"","type":"uint256"},{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cliff","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"campaignDurationDays","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplier","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_totalBalance","type":"uint256"}],"name":"vestedAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"status","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startCountDown","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"returnVestingSchedule","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"determineStatus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"holdersIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"determineCommissions","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whiteList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestedAmountAvailable","outputs":[{"name":"amount","type":"uint256"},{"name":"decimals","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"contributePublic","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"advanceStep","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentStep","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minContributionMainSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"secondBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenHolders","outputs":[{"name":"weiReceived","type":"uint256"},{"name":"tokensToSend","type":"uint256"},{"name":"refunded","type":"bool"},{"name":"releasedAmount","type":"uint256"},{"name":"revoked","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"revoke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"multisigETH","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"release","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensSentDev","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxContribution","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethReceivedMain","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"commissionAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"thirdBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_start","type":"uint256"},{"name":"_cliff","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_presaleBonus","type":"uint256"},{"name":"_whiteList","type":"address"}],"name":"initilizeVestingAndTokenAndWhiteList","outputs":[{"name":"res","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"presaleBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"thirdPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_start","type":"uint256"},{"name":"_cliff","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_presaleBonus","type":"uint256"}],"name":"initilizeVestingAndToken","outputs":[{"name":"res","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethReceivedPresale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensSent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSentPresale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"firstPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dev","type":"address"},{"name":"_amount","type":"uint256"}],"name":"devAllocation","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalRefunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minContributionPresale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"secondPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSentMain","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"devIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"drain","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensForTeam","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_decimalPoints","type":"uint256"},{"name":"_multisigETH","type":"address"},{"name":"_toekensForTeam","type":"uint256"},{"name":"_minContributionPresale","type":"uint256"},{"name":"_minContributionMainSale","type":"uint256"},{"name":"_maxContribution","type":"uint256"},{"name":"_maxCap","type":"uint256"},{"name":"_minCap","type":"uint256"},{"name":"_tokenPriceWei","type":"uint256"},{"name":"_campaignDurationDays","type":"uint256"},{"name":"_firstPeriod","type":"uint256"},{"name":"_secondPeriod","type":"uint256"},{"name":"_thirdPeriod","type":"uint256"},{"name":"_firstBonus","type":"uint256"},{"name":"_secondBonus","type":"uint256"},{"name":"_thirdBonus","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"backer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"}],"name":"LogReceivedETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startBlockLog","type":"uint256"},{"indexed":false,"name":"endBlockLog","type":"uint256"}],"name":"LogStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"success","type":"bool"}],"name":"LogFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"backer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogRefundETH","type":"event"},{"anonymous":false,"inputs":[],"name":"LogStepAdvanced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"dev","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogDevTokensAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogNonVestedTokensSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"tokenDecimals","type":"uint256"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"done","type":"bool"}],"name":"ContractUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526000805460a060020a60ff0219169055341561001f57600080fd5b60405161020080611fc083398101604052808051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051919060200180519190602001805191906020018051906020019091905050336000806101000a815481600160a060020a030219169083600160a060020a031602179055508f600a0a6023819055508e600860006101000a815481600160a060020a030219169083600160a060020a031602179055506023548e02600a819055508c6016819055508b6015819055508a6017819055506023548a0260138190555060235489026014819055508760198190555086601c8190555085601d8190555084601e8190555083601f8190555082602081905550816021819055508060228190555073326b5e9b8b2ebf415f9e91b42c7911279d296ea1600960006101000a815481600160a060020a030219169083600160a060020a031602179055506000602560006101000a81548160ff021916908360028111156101c457fe5b021790555050505050505050505050505050505050611dd8806101e86000396000f3006060604052600436106102d15763ffffffff60e060020a60003504166305d0f15b81146102dd578063083c6323146103025780630bda4dbf146103155780630dbd5270146103285780630fb5a6b41461033b578063127e499c1461034e57806313b5d4201461036157806313d033c0146103fb57806319711d671461040e5780631b3ed722146104215780631bfce85314610434578063200d2ed21461044a57806321d7bdff1461045d57806323548b8b1461047057806325d104d4146104835780632975659d146104ba5780632a14a9da146104cd5780632b0e64b3146104ff5780633544a8641461051257806335593bcf1461052557806336335e19146105505780633cac38e41461055a5780633f4ba83a1461056d5780633fa615b01461058057806348cd4cb1146105935780634bb278f3146105a6578063590e1ae3146105b95780635bc34f71146105e05780635c975abb146106175780635eec743b1461062a57806361bb246c1461063d578063638b5e531461065057806374a8f103146106a6578063823914d9146106c55780638456cb59146106d857806386d1a69f146106eb578063878a18ef146106fe5780638d3d6576146107115780638da5cb5b146107245780639263b55914610737578063931742d31461074a57806393928c911461075d578063965e08e81461077057806399cb0823146107a55780639e439ff8146107b8578063a20d426c146107cb578063a5cf56f2146107f6578063ac1559d214610809578063b630aa481461081c578063be9a65551461082f578063bec3fa1714610842578063c4e3a63b14610864578063ccb07cef14610877578063d4fbe1e01461088a578063d9082962146108ac578063e44a94d3146108bf578063e4818e4b146108d2578063ed810d02146108e5578063ee73cf66146108f8578063f2fde38b1461090e578063f6b19c741461092d578063fc0c546a14610943578063fde83a3414610956575b6102da33610969565b50005b34156102e857600080fd5b6102f0610ba2565b60405190815260200160405180910390f35b341561030d57600080fd5b6102f0610ba8565b341561032057600080fd5b6102f0610bae565b341561033357600080fd5b6102f0610bb4565b341561034657600080fd5b6102f0610bbb565b341561035957600080fd5b6102f0610bc1565b341561036c57600080fd5b610374610bc7565b604051808f81526020018e81526020018d81526020018c81526020018b81526020018a815260200189815260200188815260200187815260200186815260200185151515158152602001841515151581526020018381526020018260028111156103da57fe5b60ff1681526020019e50505050505050505050505050505060405180910390f35b341561040657600080fd5b6102f0610cd5565b341561041957600080fd5b6102f0610cdb565b341561042c57600080fd5b6102f0610ce1565b341561043f57600080fd5b6102f0600435610ce7565b341561045557600080fd5b6102f0610d57565b341561046857600080fd5b6102f0610d5d565b341561047b57600080fd5b6102f0610d63565b341561048e57600080fd5b610496610d69565b60405180848152602001838152602001828152602001935050505060405180910390f35b34156104c557600080fd5b6102f0610d77565b34156104d857600080fd5b6104e3600435610de9565b604051600160a060020a03909116815260200160405180910390f35b341561050a57600080fd5b6102f0610e11565b341561051d57600080fd5b6104e3610ebb565b341561053057600080fd5b610538610eca565b60405191825260208201526040908101905180910390f35b610558610f6d565b005b341561056557600080fd5b610558610f79565b341561057857600080fd5b610558610fcf565b341561058b57600080fd5b6102f061104e565b341561059e57600080fd5b6102f0611054565b34156105b157600080fd5b61055861105a565b34156105c457600080fd5b6105cc6111c6565b604051901515815260200160405180910390f35b34156105eb57600080fd5b6105f361137b565b6040518082600281111561060357fe5b60ff16815260200191505060405180910390f35b341561062257600080fd5b6105cc611384565b341561063557600080fd5b6102f0611394565b341561064857600080fd5b6102f061139a565b341561065b57600080fd5b61066f600160a060020a03600435166113a0565b60405194855260208501939093529015156040808501919091526060840191909152901515608083015260a0909101905180910390f35b34156106b157600080fd5b610558600160a060020a03600435166113d4565b34156106d057600080fd5b6104e3611418565b34156106e357600080fd5b610558611427565b34156106f657600080fd5b6105586114ab565b341561070957600080fd5b6102f0611618565b341561071c57600080fd5b6102f061161e565b341561072f57600080fd5b6104e3611624565b341561074257600080fd5b6102f0611633565b341561075557600080fd5b6104e3611639565b341561076857600080fd5b6102f0611648565b341561077b57600080fd5b6105cc600160a060020a036004358116906024359060443590606435906084359060a4351661164e565b34156107b057600080fd5b6102f061172f565b34156107c357600080fd5b6102f0611735565b34156107d657600080fd5b6105cc600160a060020a036004351660243560443560643560843561173b565b341561080157600080fd5b6102f0611806565b341561081457600080fd5b6102f061180c565b341561082757600080fd5b6102f0611812565b341561083a57600080fd5b610558611818565b341561084d57600080fd5b6105cc600160a060020a036004351660243561188d565b341561086f57600080fd5b6102f0611986565b341561088257600080fd5b6105cc61198c565b341561089557600080fd5b6105cc600160a060020a0360043516602435611995565b34156108b757600080fd5b6102f0611b0a565b34156108ca57600080fd5b6102f0611b10565b34156108dd57600080fd5b6102f0611b16565b34156108f057600080fd5b6102f0611b1c565b341561090357600080fd5b6104e3600435611b22565b341561091957600080fd5b610558600160a060020a0360043516611b30565b341561093857600080fd5b610558600435611bcb565b341561094e57600080fd5b6104e3611c19565b341561096157600080fd5b6102f0611c28565b600080548190819060a060020a900460ff161561098557600080fd5b601154431080610996575060125443115b156109a057600080fd5b600654600160a060020a031615610a3057600654600160a060020a0316636f9170f68560006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610a0a57600080fd5b6102c65a03f11515610a1b57600080fd5b505050604051805190501515610a3057600080fd5b610a38611c2e565b915060135482600d540111151515610a4f57600080fd5b50600160a060020a038316600090815260056020526040902080541515610ab5576026805460018101610a828382611d69565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790555b60255460ff166002811115610ac657fe5b60011415610b0057601554341015610add57600080fd5b600c54610af0903463ffffffff611d1216565b600c55600e805483019055610b2e565b601654341015610b0f57600080fd5b600b54610b22903463ffffffff611d1216565b600b55600f8054830190555b600181018054830190558054610b4a903463ffffffff611d1216565b8155600d805483019055600160a060020a0384167fe3539dcc17b38d337133cfce1f00f1e94765090378d48a1d73171a93e6a1ff78348460405191825260208201526040908101905180910390a25060019392505050565b60195481565b60125481565b601a5481565b6026545b90565b60035481565b60205481565b600080600080600080600080600080600080600080601154601254610bea610bb4565b600c54600b5401601354601454600d54601954601654601554600060149054906101000a900460ff16601860009054906101000a900460ff16600460009054906101000a9004600160a060020a0316600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610c7e57600080fd5b6102c65a03f11515610c8f57600080fd5b50505060405180519050602560009054906101000a900460ff169d509d509d509d509d509d509d509d509d509d509d509d509d509d50909192939495969798999a9b9c9d565b60015481565b601c5481565b60235481565b6000600154421015610cfb57506000610d52565b600354600254610d109163ffffffff611d1216565b4210610d1d575080610d52565b600354610d45610d3860025442611d3690919063ffffffff16565b849063ffffffff611d4816565b811515610d4e57fe5b0490505b919050565b60245481565b60025481565b60135481565b600354600154600254909192565b60185460009060ff1615610d8d57506001610bb8565b60125443108015610da45750606460135403600d54105b15610db157506002610bb8565b601454600d54108015610dc5575060125443115b15610dd257506003610bb8565b6012541515610de357506004610bb8565b50600090565b6026805482908110610df757fe5b600091825260209091200154600160a060020a0316905081565b6000681b1ae4d6e2ef500000600160a060020a0330163111610e46576064600a600160a060020a03301631025b049050610bb8565b683635c9adc5dea00000600160a060020a0330163111610e755760646008600160a060020a0330163102610e3e565b69021e19e0c9bab240000030600160a060020a0316311015610ea65760646006600160a060020a0330163102610e3e565b60646006600160a060020a0330163102610e3e565b600654600160a060020a031681565b600160a060020a033316600090815260056020526040812060018101548291908290610ef590610ce7565b6003830154600454919250820390600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f4857600080fd5b6102c65a03f11515610f5957600080fd5b505050604051805190509350935050509091565b610f7633610969565b50565b60005433600160a060020a03908116911614610f9457600080fd5b6025805460ff191660011790557f592c878e6add7d4d1ceb88871d699a1f9655424e4cd45f0ca7ad9f98526f286860405160405180910390a1565b60005433600160a060020a03908116911614610fea57600080fd5b60005460a060020a900460ff16151561100257600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60145481565b60115481565b60005433600160a060020a0390811691161461107557600080fd5b60185460ff161561108557600080fd5b6012544310158061109d57506103e860135403600d54115b15156110a857600080fd5b601454600d5410156110b957600080fd5b6018805460ff19166001179055600954600160a060020a03166108fc6110dd610e11565b9081150290604051600060405180830381858888f19350505050151561110257600080fd5b600854600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561113b57600080fd5b600454600160a060020a031663a69df4b56040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561117a57600080fd5b6102c65a03f1151561118b57600080fd5b5050507fe2b612f94c4cb9a16dd0d29db7c97a0e08091b23de2a812f782c2d8b760537706001604051901515815260200160405180910390a1565b600080548190819060a060020a900460ff16156111e257600080fd5b600c54600b546014549101925082106111fa57600080fd5b6000600160a060020a033016311161121157600080fd5b50600160a060020a033316600090815260056020526040812080549091901161123957600080fd5b600281015460ff161561124b57600080fd5b60028101805460ff19166001908117909155601a8054820190558154601b8054909101905560045490820154600160a060020a0390911690639dc29fac90339060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156112d757600080fd5b6102c65a03f115156112e857600080fd5b5050506040518051905015156112fd57600080fd5b8054600160a060020a0333169080156108fc0290604051600060405180830381858888f19350505050151561133157600080fd5b33600160a060020a03167f991678bf7f45816a1ff5cf860f3dabd3e26c34d959aa479904bf9caec17af1c5826000015460405190815260200160405180910390a260019250505090565b60255460ff1681565b60005460a060020a900460ff1681565b60155481565b60215481565b600560205260009081526040902080546001820154600283015460038401546004909401549293919260ff91821692911685565b6000805433600160a060020a039081169116146113f057600080fd5b50600160a060020a03166000908152600560205260409020600401805460ff19166001179055565b600854600160a060020a031681565b60005433600160a060020a0390811691161461144257600080fd5b60005460a060020a900460ff161561145957600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600160a060020a03331660009081526005602052604081206004810154909190819060ff16156114da57600080fd5b6114e78360010154610ce7565b6003840180548083039081019091556004549193509150600160a060020a031663a9059cbb338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561155a57600080fd5b6102c65a03f1151561156b57600080fd5b505050604051805150506004547fd5840651550c173a8bf246eede440a59253bc61eadb2e8887168faad2fad631d908290600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156115e157600080fd5b6102c65a03f115156115f257600080fd5b5050506040518051905060405191825260208201526040908101905180910390a1505050565b60105481565b60175481565b600054600160a060020a031681565b600c5481565b600954600160a060020a031681565b60225481565b6000805433600160a060020a0390811691161461166a57600080fd5b8385111561167757600080fd5b600160a060020a038716151561168c57600080fd5b60038490556116a1868663ffffffff611d1216565b6001908155600287905560048054600160a060020a03808b1673ffffffffffffffffffffffffffffffffffffffff1992831617909255600680549286169290911691909117905560078490557f197d0e3bb2b41721838884620cf57f1ed98cc18d2f03a8f182b616bea64af84e90604051901515815260200160405180910390a15060019695505050505050565b60075481565b601f5481565b6000805433600160a060020a0390811691161461175757600080fd5b8284111561176457600080fd5b600160a060020a038616151561177957600080fd5b600383905561178e858563ffffffff611d1216565b600190815560028690556004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03891617905560078390557f197d0e3bb2b41721838884620cf57f1ed98cc18d2f03a8f182b616bea64af84e90604051901515815260200160405180910390a150600195945050505050565b600b5481565b600d5481565b600f5481565b60005433600160a060020a0390811691161461183357600080fd5b436011819055601c5461168002810160128190556018805460ff191690557fa88abb2da4d124e645a64f427adf44fa8111af1831a3f5437591925a2cf7a4e7919060405191825260208201526040908101905180910390a1565b6000805433600160a060020a039081169116146118a957600080fd5b600160a060020a03831615156118be57600080fd5b600454600160a060020a031663a9059cbb848460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561191d57600080fd5b6102c65a03f1151561192e57600080fd5b50505060405180519050151561194357600080fd5b82600160a060020a03167fc0e43987907a4f82c4722f79a2e833ae2fc53dca0daa8b8141726b810591126e8360405190815260200160405180910390a292915050565b601d5481565b60185460ff1681565b60008054819033600160a060020a039081169116146119b357600080fd5b600160a060020a03841615156119c857600080fd5b60185460ff1615156119d957600080fd5b600454600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a2157600080fd5b6102c65a03f11515611a3257600080fd5b5050506040518051600d54909150611a50908563ffffffff611d1216565b1115611a5b57600080fd5b6027805460018101611a6d8382611d69565b506000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0388169081179091558083526005909152604091829020600181018690556010805487019055600d8054870190559250907f969830dc5773a5b34b166c8a34cd2600c8cb681dab9cc14b1a69b000731fe3aa9085905190815260200160405180910390a25060019392505050565b601b5481565b60165481565b601e5481565b600e5481565b6027805482908110610df757fe5b60005433600160a060020a03908116911614611b4b57600080fd5b600160a060020a0381161515611b6057600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614611be657600080fd5b600054600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610f7657600080fd5b600454600160a060020a031681565b600a5481565b600080601954611c4960235434611d4890919063ffffffff16565b811515611c5257fe5b602554919004915060ff166002811115611c6857fe5b60011415611cf757601d54601154014311611ca7576064611c9460205483611d4890919063ffffffff16565b811515611c9d57fe5b0481019150611d0e565b601e54601154014311611ccb576064611c9460215483611d4890919063ffffffff16565b601f54601154014311611cef576064611c9460225483611d4890919063ffffffff16565b809150611d0e565b6064611c9460075483611d4890919063ffffffff16565b5090565b6000828201838110801590611d275750828110155b1515611d2f57fe5b9392505050565b600082821115611d4257fe5b50900390565b6000828202831580611d275750828482811515611d6157fe5b0414611d2f57fe5b815481835581811511611d8d57600083815260209020611d8d918101908301611d92565b505050565b610bb891905b80821115611d0e5760008155600101611d985600a165627a7a7230582069cf72ba79943bcfb648637d08cf076b6c3c1939f4ef4ea8a462b6f755958e9200290000000000000000000000000000000000000000000000000000000000000012000000000000000000000000818598b0305dc16c694294e2d863f4e668a0aad5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004b7ec32d7a2000000000000000000000000000000000000000000000000000004b7ec32d7a2000000000000000000000000000000000000000000000000003635c9adc5dea0000000000000000000000000000000000000000000000000000000000000000016c6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000044364c5bb0000000000000000000000000000000000000000000000000000000000000000005a00000000000000000000000000000000000000000000000000000000000871eb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

-----Encoded View---------------
16 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [1] : 000000000000000000000000818598b0305dc16c694294e2d863f4e668a0aad5
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 00000000000000000000000000000000000000000000000004b7ec32d7a20000
Arg [4] : 00000000000000000000000000000000000000000000000004b7ec32d7a20000
Arg [5] : 00000000000000000000000000000000000000000000003635c9adc5dea00000
Arg [6] : 00000000000000000000000000000000000000000000000000000000000016c6
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [8] : 00000000000000000000000000000000000000000000000000044364c5bb0000
Arg [9] : 000000000000000000000000000000000000000000000000000000000000005a
Arg [10] : 00000000000000000000000000000000000000000000000000000000000871eb
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000023
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000000


   Swarm Source:
bzzr://69cf72ba79943bcfb648637d08cf076b6c3c1939f4ef4ea8a462b6f755958e92

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.