ETH Price: $2,024.08 (+1.14%)

Token

MCFit Token (MCF)
 

Overview

Max Total Supply

1,000,000,000 MCF

Holders

54

Transfers

-
0 (0%)

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MCFitCrowdsale

Compiler Version
v0.4.22-nightly.2018.3.8+commit.fbc29f6d

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-13
*/

pragma solidity ^0.4.18;

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

    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;
    }

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

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

    function max64(uint64 a, uint64 b) internal pure returns (uint64) {
        return a >= b ? a : b;
    }

    function min64(uint64 a, uint64 b) internal pure returns (uint64) {
        return a < b ? a : b;
    }

    function max256(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min256(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }
}

contract ERC20Basic {
    uint256 public totalSupply;

    bool public transfersEnabled;

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 {
    uint256 public totalSupply;

    bool public transfersEnabled;

    function balanceOf(address _owner) public constant returns (uint256 balance);

    function transfer(address _to, uint256 _value) public returns (bool success);

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

    function approve(address _spender, uint256 _value) public returns (bool success);

    function allowance(address _owner, address _spender) public constant returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract BasicToken is ERC20Basic {
    using SafeMath for uint256;

    mapping(address => uint256) balances;

    /**
    * @dev transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);
        require(transfersEnabled);

        // SafeMath.sub will throw if there is not enough balance.
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(msg.sender, _to, _value);
        return true;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public constant returns (uint256 balance) {
        return balances[_owner];
    }

}

contract StandardToken is ERC20, BasicToken {

    mapping(address => mapping(address => uint256)) internal allowed;


    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        require(transfersEnabled);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        Transfer(_from, _to, _value);
        return true;
    }

    /**
     * @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, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) public constant returns (uint256 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;
    }

}

/**
 * @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;
    address public advisor;

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

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


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


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

    function changeAdvisor(address newAdvisor) onlyOwner public {
        advisor = newAdvisor;
        OwnerChanged(advisor, newAdvisor);
    }

}

/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */

contract MintableToken is StandardToken, Ownable {
    string public constant name = "MCFit Token";
    string public constant symbol = "MCF";
    uint8 public constant decimals = 18;

    uint256 public totalAllocated = 0;

    event Mint(address indexed to, uint256 amount);
    event MintFinished();

    bool public mintingFinished;

    modifier canMint() {
        require(!mintingFinished);
        _;
    }

    /**
     * @dev Function to mint tokens
     * @param _to The address that will receive the minted tokens.
     * @param _amount The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address _to, uint256 _amount) canMint internal returns (bool) {

        require(!mintingFinished);
        totalAllocated = totalAllocated.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        Mint(_to, _amount);
        Transfer(address(0), _to, _amount);
        return true;
    }

    function withDraw(address _investor) internal returns (bool) {

        require(mintingFinished);
        uint256 amount = balanceOf(_investor);
        require(amount <= totalAllocated);
        totalAllocated = totalAllocated.sub(amount);
        balances[_investor] = balances[_investor].sub(amount);
        return true;
    }

    /**
     * @dev Function to stop minting new tokens.
     * @return True if the operation was successful.
     */
    function finishMinting() onlyOwner canMint internal returns (bool) {
        mintingFinished = true;
        MintFinished();
        return true;
    }

}

/**
 * @title Crowdsale
 * @dev Crowdsale is a base contract for managing a token crowdsale.
 * Crowdsales have a start and end timestamps, where investors can make
 * token purchases and the crowdsale will assign them tokens based
 * on a token per ETH rate. Funds collected are forwarded to a wallet
 * as they arrive.
 */
contract Crowdsale is Ownable {
    using SafeMath for uint256;

    // start and end timestamps where investments are allowed (both inclusive)
    uint256 public startTime;
    uint256 public endTime;
    bool public checkDate;

    // address where funds are collected
    address public wallet;

    // how many token units a buyer gets per wei
    uint256 public rate;

    // amount of raised money in wei
    uint256 public weiRaised;
    uint256 public tokenRaised;
    bool public isFinalized = false;

    event Finalized();


    function Crowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) public {

        require(_startTime >= now);
        require(_endTime >= _startTime);
        require(_rate > 0);
        require(_wallet != address(0));

        //token = createTokenContract();
        startTime = _startTime;
        endTime = _endTime;
        rate = _rate;
        wallet = _wallet;
        checkDate = false;
    }

    // @return true if crowdsale event has ended
    function hasEnded() public constant returns (bool) {
        return now > endTime;
    }

    /**
 * @dev Must be called after crowdsale ends, to do some extra finalization
 * work. Calls the contract's finalization function.
 */
    function finalize() onlyOwner public {
        require(!isFinalized);
        //require(hasEnded());

        finalization();
        Finalized();

        isFinalized = true;
    }

    /**
     * @dev Can be overridden to add finalization logic. The overriding function
     * should call super.finalization() to ensure the chain of finalization is
     * executed entirely.
     */
    function finalization() internal pure {
    }
}


contract MCFitCrowdsale is Ownable, Crowdsale, MintableToken {
    using SafeMath for uint256;

    enum State {Active, Closed}
    State public state;

    mapping(address => uint256) public deposited;
    uint256 public constant INITIAL_SUPPLY = 1 * (10**9) * (10 ** uint256(decimals));
    uint256 public fundReservCompany = 350 * (10**6) * (10 ** uint256(decimals));
    uint256 public fundTeamCompany = 300 * (10**6) * (10 ** uint256(decimals));
    uint256 public countInvestor;

    uint256 limit40Percent = 30*10**6*10**18;
    uint256 limit20Percent = 60*10**6*10**18;
    uint256 limit10Percent = 100*10**6*10**18;

    event Closed();
    event TokenPurchase(address indexed beneficiary, uint256 value, uint256 amount);


    function MCFitCrowdsale(uint256 _startTime, uint256 _endTime,uint256 _rate, address _wallet) public
    Crowdsale(_startTime, _endTime, _rate, _wallet)
    {
        owner = _wallet;
        //advisor = msg.sender;
        transfersEnabled = true;
        mintingFinished = false;
        state = State.Active;
        totalSupply = INITIAL_SUPPLY;
        bool resultMintFunds = mintToSpecialFund(owner);
        require(resultMintFunds);
    }

    // fallback function can be used to buy tokens
    function() payable public {
        buyTokens(msg.sender);
    }

    // low level token purchase function
    function buyTokens(address _investor) public payable returns (uint256){
        require(state == State.Active);
        require(_investor != address(0));
        if(checkDate){
            assert(now >= startTime && now < endTime);
        }
        uint256 weiAmount = msg.value;
        // calculate token amount to be created
        uint256 tokens = getTotalAmountOfTokens(weiAmount);
        weiRaised = weiRaised.add(weiAmount);
        mint(_investor, tokens);
        TokenPurchase(_investor, weiAmount, tokens);
        if(deposited[_investor] == 0){
            countInvestor = countInvestor.add(1);
        }
        deposit(_investor);
        wallet.transfer(weiAmount);
        return tokens;
    }

    function getTotalAmountOfTokens(uint256 _weiAmount) internal constant returns (uint256 amountOfTokens) {
        uint256 currentTokenRate = 0;
        uint256 currentDate = now;
        //uint256 currentDate = 1516492800; // 21 Jan 2018
        require(currentDate >= startTime);

        if (totalAllocated < limit40Percent && currentDate < endTime) {
            if(_weiAmount < 5 * 10**17){revert();}
            return currentTokenRate = _weiAmount.mul(rate*140);
        } else if (totalAllocated < limit20Percent && currentDate < endTime) {
            if(_weiAmount < 5 * 10**17){revert();}
            return currentTokenRate = _weiAmount.mul(rate*120);
        } else if (totalAllocated < limit10Percent && currentDate < endTime) {
            if(_weiAmount < 5 * 10**17){revert();}
            return currentTokenRate = _weiAmount.mul(rate*110);
        } else {
            return currentTokenRate = _weiAmount.mul(rate*100);
        }
    }

    function deposit(address investor) internal {
        require(state == State.Active);
        deposited[investor] = deposited[investor].add(msg.value);
    }

    function close() onlyOwner public {
        require(state == State.Active);
        if(checkDate){
            require(hasEnded());
        }
        state = State.Closed;
        transfersEnabled = false;
        finishMinting();
        Closed();
        finalize();
        wallet.transfer(this.balance);
    }

    function mintToSpecialFund(address _wallet) public onlyOwner returns (bool result) {
        result = false;
        require(_wallet != address(0));
        balances[_wallet] = balances[_wallet].add(fundReservCompany);
        balances[_wallet] = balances[_wallet].add(fundTeamCompany);
        result = true;
    }

    function changeRateUSD(uint256 _rate) onlyOwner public {
        require(state == State.Active);
        require(_rate > 0);
        rate = _rate;
    }

    function changeCheckDate(bool _state, uint256 _startTime, uint256 _endTime) onlyOwner public {
        require(state == State.Active);
        require(_startTime >= now);
        require(_endTime >= _startTime);

        checkDate = _state;
        startTime = _startTime;
        endTime = _endTime;
    }

    function getDeposited(address _investor) public view returns (uint256){
        return deposited[_investor];
    }

    function removeContract() public onlyOwner {
        selfdestruct(owner);
    }

}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"advisor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkDate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","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":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAdvisor","type":"address"}],"name":"changeAdvisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalAllocated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_investor","type":"address"}],"name":"getDeposited","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"fundTeamCompany","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundReservCompany","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"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":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"changeRateUSD","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_state","type":"bool"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"}],"name":"changeCheckDate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transfersEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"deposited","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"countInvestor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_investor","type":"address"}],"name":"buyTokens","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"mintToSpecialFund","outputs":[{"name":"result","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"removeContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Closed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

60606040526000600e60006101000a81548160ff0219169083151502179055506000600f55601260ff16600a0a6314dc938002601255601260ff16600a0a6311e1a300026013556a18d0bf423c03d8de0000006015556a31a17e847807b1bc0000006016556a52b7d2dcc80cd2e400000060175534156200007f57600080fd5b604051608080620032d38339810160405280805190602001909190805190602001909190805190602001909190805190602001909190505060008484848433600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504284101515156200010e57600080fd5b8383101515156200011e57600080fd5b6000821115156200012e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200016b57600080fd5b836008819055508260098190555081600b8190555080600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60006101000a81548160ff0219169083151502179055505050505081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360006101000a81548160ff0219169083151502179055506000601060006101000a81548160ff0219169083151502179055506000601060016101000a81548160ff021916908360018111156200027757fe5b0217905550601260ff16600a0a633b9aca0002600281905550620002d1600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620002eb64010000000002620024f0176401000000009004565b9050801515620002e057600080fd5b50505050506200055a565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480620003975750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515620003a357600080fd5b60009050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620003e457600080fd5b62000448601254600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200053b640100000000026200293d179091906401000000009004565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620004ef601354600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200053b640100000000026200293d179091906401000000009004565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050919050565b60008082840190508381101515156200055057fe5b8091505092915050565b612d69806200056a6000396000f3006060604052600436106101f9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461020557806306fdde0314610232578063095ea7b3146102c057806318160ddd1461031a5780631936e4be146103435780631a9360dd1461039857806323b872dd146103c557806326a215751461043e5780632c4e722e146104675780632ff2e9dc14610490578063313ce567146104b95780633197cbb6146104e85780633b1663be146105115780634042b66f1461054a57806343d726d61461057357806345f7f24914610588578063466bb312146105b15780634bb278f3146105fe5780634c67672514610613578063521eb2731461063c578063661884631461069157806370a08231146106eb5780637209036a1461073857806378e97925146107615780638d4e40831461078a5780638da5cb5b146107b757806395d89b411461080c578063a3cc8b9c1461089a578063a6f9dae1146108bd578063a9059cbb146108f6578063b517557114610950578063bef97c8714610987578063c19d93fb146109b4578063cb13cddb146109eb578063d1e2eb5e14610a38578063d73dd62314610a61578063dd62ed3e14610abb578063ec8ac4d814610b27578063ecb70fb714610b69578063f7d9078e14610b96578063fe389e0914610be7575b61020233610bfc565b50005b341561021057600080fd5b610218610e05565b604051808215151515815260200191505060405180910390f35b341561023d57600080fd5b610245610e18565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028557808201518184015260208101905061026a565b50505050905090810190601f1680156102b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102cb57600080fd5b610300600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610e51565b604051808215151515815260200191505060405180910390f35b341561032557600080fd5b61032d610f43565b6040518082815260200191505060405180910390f35b341561034e57600080fd5b610356610f49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103a357600080fd5b6103ab610f6f565b604051808215151515815260200191505060405180910390f35b34156103d057600080fd5b610424600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f82565b604051808215151515815260200191505060405180910390f35b341561044957600080fd5b61045161135c565b6040518082815260200191505060405180910390f35b341561047257600080fd5b61047a611362565b6040518082815260200191505060405180910390f35b341561049b57600080fd5b6104a3611368565b6040518082815260200191505060405180910390f35b34156104c457600080fd5b6104cc611379565b604051808260ff1660ff16815260200191505060405180910390f35b34156104f357600080fd5b6104fb61137e565b6040518082815260200191505060405180910390f35b341561051c57600080fd5b610548600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611384565b005b341561055557600080fd5b61055d6114f8565b6040518082815260200191505060405180910390f35b341561057e57600080fd5b6105866114fe565b005b341561059357600080fd5b61059b611706565b6040518082815260200191505060405180910390f35b34156105bc57600080fd5b6105e8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061170c565b6040518082815260200191505060405180910390f35b341561060957600080fd5b610611611755565b005b341561061e57600080fd5b610626611876565b6040518082815260200191505060405180910390f35b341561064757600080fd5b61064f61187c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561069c57600080fd5b6106d1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118a2565b604051808215151515815260200191505060405180910390f35b34156106f657600080fd5b610722600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b33565b6040518082815260200191505060405180910390f35b341561074357600080fd5b61074b611b7c565b6040518082815260200191505060405180910390f35b341561076c57600080fd5b610774611b82565b6040518082815260200191505060405180910390f35b341561079557600080fd5b61079d611b88565b604051808215151515815260200191505060405180910390f35b34156107c257600080fd5b6107ca611b9b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561081757600080fd5b61081f611bc1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085f578082015181840152602081019050610844565b50505050905090810190601f16801561088c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108a557600080fd5b6108bb6004808035906020019091905050611bfa565b005b34156108c857600080fd5b6108f4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611cfb565b005b341561090157600080fd5b610936600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611eab565b604051808215151515815260200191505060405180910390f35b341561095b57600080fd5b610985600480803515159060200190919080359060200190919080359060200190919050506120ea565b005b341561099257600080fd5b61099a61221d565b604051808215151515815260200191505060405180910390f35b34156109bf57600080fd5b6109c7612230565b604051808260018111156109d757fe5b60ff16815260200191505060405180910390f35b34156109f657600080fd5b610a22600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612243565b6040518082815260200191505060405180910390f35b3415610a4357600080fd5b610a4b61225b565b6040518082815260200191505060405180910390f35b3415610a6c57600080fd5b610aa1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612261565b604051808215151515815260200191505060405180910390f35b3415610ac657600080fd5b610b11600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061245d565b6040518082815260200191505060405180910390f35b610b53600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bfc565b6040518082815260200191505060405180910390f35b3415610b7457600080fd5b610b7c6124e4565b604051808215151515815260200191505060405180910390f35b3415610ba157600080fd5b610bcd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506124f0565b604051808215151515815260200191505060405180910390f35b3415610bf257600080fd5b610bfa61271d565b005b6000806000806001811115610c0d57fe5b601060019054906101000a900460ff166001811115610c2857fe5b141515610c3457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610c7057600080fd5b600a60009054906101000a900460ff1615610ca1576008544210158015610c98575060095442105b1515610ca057fe5b5b349150610cad8261280c565b9050610cc482600c5461293d90919063ffffffff16565b600c81905550610cd4848261295b565b508373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8383604051808381526020018281526020019250505060405180910390a26000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610d9057610d89600160145461293d90919063ffffffff16565b6014819055505b610d9984612b03565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515610dfb57600080fd5b8092505050919050565b601060009054906101000a900460ff1681565b6040805190810160405280600b81526020017f4d4346697420546f6b656e00000000000000000000000000000000000000000081525081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610fbf57600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561100d57600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561109857600080fd5b600360009054906101000a900460ff1615156110b357600080fd5b61110582600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bcf90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061119a82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061126c82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bcf90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600d5481565b600b5481565b601260ff16600a0a633b9aca000281565b601281565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061142d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561143857600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60405160405180910390a350565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115a75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156115b257600080fd5b600060018111156115bf57fe5b601060019054906101000a900460ff1660018111156115da57fe5b1415156115e657600080fd5b600a60009054906101000a900460ff161561160f576116036124e4565b151561160e57600080fd5b5b6001601060016101000a81548160ff0219169083600181111561162e57fe5b02179055506000600360006101000a81548160ff021916908315150217905550611656612be8565b507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a161168b611755565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561170457600080fd5b565b600f5481565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117fe5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561180957600080fd5b600e60009054906101000a900460ff1615151561182557600080fd5b61182d612d08565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a16001600e60006101000a81548160ff021916908315150217905550565b60135481565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156119b3576000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a47565b6119c68382612bcf90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60125481565b60085481565b600e60009054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f4d4346000000000000000000000000000000000000000000000000000000000081525081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611ca35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611cae57600080fd5b60006001811115611cbb57fe5b601060019054906101000a900460ff166001811115611cd657fe5b141515611ce257600080fd5b600081111515611cf157600080fd5b80600b8190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611da45750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611daf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611deb57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611ee857600080fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611f3657600080fd5b600360009054906101000a900460ff161515611f5157600080fd5b611fa382600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bcf90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061203882600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806121935750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561219e57600080fd5b600060018111156121ab57fe5b601060019054906101000a900460ff1660018111156121c657fe5b1415156121d257600080fd5b4282101515156121e157600080fd5b8181101515156121f057600080fd5b82600a60006101000a81548160ff0219169083151502179055508160088190555080600981905550505050565b600360009054906101000a900460ff1681565b601060019054906101000a900460ff1681565b60116020528060005260406000206000915090505481565b60145481565b60006122f282600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006009544211905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061259b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156125a657600080fd5b60009050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156125e657600080fd5b61263a601254600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126d1601354600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806127c65750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127d157600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000806000809150429050600854811015151561282857600080fd5b601554600f5410801561283c575060095481105b15612878576706f05b59d3b2000084101561285657600080fd5b61286e608c600b540285612d0a90919063ffffffff16565b9150819250612936565b601654600f5410801561288c575060095481105b156128c8576706f05b59d3b200008410156128a657600080fd5b6128be6078600b540285612d0a90919063ffffffff16565b9150819250612936565b601754600f541080156128dc575060095481105b15612918576706f05b59d3b200008410156128f657600080fd5b61290e606e600b540285612d0a90919063ffffffff16565b9150819250612936565b6129306064600b540285612d0a90919063ffffffff16565b91508192505b5050919050565b600080828401905083811015151561295157fe5b8091505092915050565b6000601060009054906101000a900460ff1615151561297957600080fd5b601060009054906101000a900460ff1615151561299557600080fd5b6129aa82600f5461293d90919063ffffffff16565b600f81905550612a0282600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006001811115612b1057fe5b601060019054906101000a900460ff166001811115612b2b57fe5b141515612b3757600080fd5b612b8934601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000828211151515612bdd57fe5b818303905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612c935750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612c9e57600080fd5b601060009054906101000a900460ff16151515612cba57600080fd5b6001601060006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b565b60008082840290506000841480612d2b5750828482811515612d2857fe5b04145b1515612d3357fe5b80915050929150505600a165627a7a72305820672142c597ae4f0bb2254cc88d464cffee57a0bdda2039a09353c82bd083d3f80029000000000000000000000000000000000000000000000000000000005a613500000000000000000000000000000000000000000000000000000000005a97427f00000000000000000000000000000000000000000000000000000000000004b0000000000000000000000000f4b99e8d0841df74a694f591293331c32e530d9b

Deployed Bytecode

0x6060604052600436106101f9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461020557806306fdde0314610232578063095ea7b3146102c057806318160ddd1461031a5780631936e4be146103435780631a9360dd1461039857806323b872dd146103c557806326a215751461043e5780632c4e722e146104675780632ff2e9dc14610490578063313ce567146104b95780633197cbb6146104e85780633b1663be146105115780634042b66f1461054a57806343d726d61461057357806345f7f24914610588578063466bb312146105b15780634bb278f3146105fe5780634c67672514610613578063521eb2731461063c578063661884631461069157806370a08231146106eb5780637209036a1461073857806378e97925146107615780638d4e40831461078a5780638da5cb5b146107b757806395d89b411461080c578063a3cc8b9c1461089a578063a6f9dae1146108bd578063a9059cbb146108f6578063b517557114610950578063bef97c8714610987578063c19d93fb146109b4578063cb13cddb146109eb578063d1e2eb5e14610a38578063d73dd62314610a61578063dd62ed3e14610abb578063ec8ac4d814610b27578063ecb70fb714610b69578063f7d9078e14610b96578063fe389e0914610be7575b61020233610bfc565b50005b341561021057600080fd5b610218610e05565b604051808215151515815260200191505060405180910390f35b341561023d57600080fd5b610245610e18565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028557808201518184015260208101905061026a565b50505050905090810190601f1680156102b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102cb57600080fd5b610300600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610e51565b604051808215151515815260200191505060405180910390f35b341561032557600080fd5b61032d610f43565b6040518082815260200191505060405180910390f35b341561034e57600080fd5b610356610f49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103a357600080fd5b6103ab610f6f565b604051808215151515815260200191505060405180910390f35b34156103d057600080fd5b610424600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f82565b604051808215151515815260200191505060405180910390f35b341561044957600080fd5b61045161135c565b6040518082815260200191505060405180910390f35b341561047257600080fd5b61047a611362565b6040518082815260200191505060405180910390f35b341561049b57600080fd5b6104a3611368565b6040518082815260200191505060405180910390f35b34156104c457600080fd5b6104cc611379565b604051808260ff1660ff16815260200191505060405180910390f35b34156104f357600080fd5b6104fb61137e565b6040518082815260200191505060405180910390f35b341561051c57600080fd5b610548600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611384565b005b341561055557600080fd5b61055d6114f8565b6040518082815260200191505060405180910390f35b341561057e57600080fd5b6105866114fe565b005b341561059357600080fd5b61059b611706565b6040518082815260200191505060405180910390f35b34156105bc57600080fd5b6105e8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061170c565b6040518082815260200191505060405180910390f35b341561060957600080fd5b610611611755565b005b341561061e57600080fd5b610626611876565b6040518082815260200191505060405180910390f35b341561064757600080fd5b61064f61187c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561069c57600080fd5b6106d1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118a2565b604051808215151515815260200191505060405180910390f35b34156106f657600080fd5b610722600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b33565b6040518082815260200191505060405180910390f35b341561074357600080fd5b61074b611b7c565b6040518082815260200191505060405180910390f35b341561076c57600080fd5b610774611b82565b6040518082815260200191505060405180910390f35b341561079557600080fd5b61079d611b88565b604051808215151515815260200191505060405180910390f35b34156107c257600080fd5b6107ca611b9b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561081757600080fd5b61081f611bc1565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085f578082015181840152602081019050610844565b50505050905090810190601f16801561088c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108a557600080fd5b6108bb6004808035906020019091905050611bfa565b005b34156108c857600080fd5b6108f4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611cfb565b005b341561090157600080fd5b610936600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611eab565b604051808215151515815260200191505060405180910390f35b341561095b57600080fd5b610985600480803515159060200190919080359060200190919080359060200190919050506120ea565b005b341561099257600080fd5b61099a61221d565b604051808215151515815260200191505060405180910390f35b34156109bf57600080fd5b6109c7612230565b604051808260018111156109d757fe5b60ff16815260200191505060405180910390f35b34156109f657600080fd5b610a22600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612243565b6040518082815260200191505060405180910390f35b3415610a4357600080fd5b610a4b61225b565b6040518082815260200191505060405180910390f35b3415610a6c57600080fd5b610aa1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612261565b604051808215151515815260200191505060405180910390f35b3415610ac657600080fd5b610b11600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061245d565b6040518082815260200191505060405180910390f35b610b53600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bfc565b6040518082815260200191505060405180910390f35b3415610b7457600080fd5b610b7c6124e4565b604051808215151515815260200191505060405180910390f35b3415610ba157600080fd5b610bcd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506124f0565b604051808215151515815260200191505060405180910390f35b3415610bf257600080fd5b610bfa61271d565b005b6000806000806001811115610c0d57fe5b601060019054906101000a900460ff166001811115610c2857fe5b141515610c3457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610c7057600080fd5b600a60009054906101000a900460ff1615610ca1576008544210158015610c98575060095442105b1515610ca057fe5b5b349150610cad8261280c565b9050610cc482600c5461293d90919063ffffffff16565b600c81905550610cd4848261295b565b508373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8383604051808381526020018281526020019250505060405180910390a26000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610d9057610d89600160145461293d90919063ffffffff16565b6014819055505b610d9984612b03565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515610dfb57600080fd5b8092505050919050565b601060009054906101000a900460ff1681565b6040805190810160405280600b81526020017f4d4346697420546f6b656e00000000000000000000000000000000000000000081525081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610fbf57600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561100d57600080fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561109857600080fd5b600360009054906101000a900460ff1615156110b357600080fd5b61110582600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bcf90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061119a82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061126c82600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bcf90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600d5481565b600b5481565b601260ff16600a0a633b9aca000281565b601281565b60095481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061142d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561143857600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60405160405180910390a350565b600c5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115a75750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156115b257600080fd5b600060018111156115bf57fe5b601060019054906101000a900460ff1660018111156115da57fe5b1415156115e657600080fd5b600a60009054906101000a900460ff161561160f576116036124e4565b151561160e57600080fd5b5b6001601060016101000a81548160ff0219169083600181111561162e57fe5b02179055506000600360006101000a81548160ff021916908315150217905550611656612be8565b507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a161168b611755565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050151561170457600080fd5b565b600f5481565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117fe5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561180957600080fd5b600e60009054906101000a900460ff1615151561182557600080fd5b61182d612d08565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a16001600e60006101000a81548160ff021916908315150217905550565b60135481565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156119b3576000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a47565b6119c68382612bcf90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60125481565b60085481565b600e60009054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f4d4346000000000000000000000000000000000000000000000000000000000081525081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611ca35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611cae57600080fd5b60006001811115611cbb57fe5b601060019054906101000a900460ff166001811115611cd657fe5b141515611ce257600080fd5b600081111515611cf157600080fd5b80600b8190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611da45750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611daf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611deb57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611ee857600080fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611f3657600080fd5b600360009054906101000a900460ff161515611f5157600080fd5b611fa382600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bcf90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061203882600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806121935750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561219e57600080fd5b600060018111156121ab57fe5b601060019054906101000a900460ff1660018111156121c657fe5b1415156121d257600080fd5b4282101515156121e157600080fd5b8181101515156121f057600080fd5b82600a60006101000a81548160ff0219169083151502179055508160088190555080600981905550505050565b600360009054906101000a900460ff1681565b601060019054906101000a900460ff1681565b60116020528060005260406000206000915090505481565b60145481565b60006122f282600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006009544211905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061259b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156125a657600080fd5b60009050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156125e657600080fd5b61263a601254600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126d1601354600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806127c65750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156127d157600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6000806000809150429050600854811015151561282857600080fd5b601554600f5410801561283c575060095481105b15612878576706f05b59d3b2000084101561285657600080fd5b61286e608c600b540285612d0a90919063ffffffff16565b9150819250612936565b601654600f5410801561288c575060095481105b156128c8576706f05b59d3b200008410156128a657600080fd5b6128be6078600b540285612d0a90919063ffffffff16565b9150819250612936565b601754600f541080156128dc575060095481105b15612918576706f05b59d3b200008410156128f657600080fd5b61290e606e600b540285612d0a90919063ffffffff16565b9150819250612936565b6129306064600b540285612d0a90919063ffffffff16565b91508192505b5050919050565b600080828401905083811015151561295157fe5b8091505092915050565b6000601060009054906101000a900460ff1615151561297957600080fd5b601060009054906101000a900460ff1615151561299557600080fd5b6129aa82600f5461293d90919063ffffffff16565b600f81905550612a0282600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006001811115612b1057fe5b601060019054906101000a900460ff166001811115612b2b57fe5b141515612b3757600080fd5b612b8934601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461293d90919063ffffffff16565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000828211151515612bdd57fe5b818303905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612c935750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612c9e57600080fd5b601060009054906101000a900460ff16151515612cba57600080fd5b6001601060006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b565b60008082840290506000841480612d2b5750828482811515612d2857fe5b04145b1515612d3357fe5b80915050929150505600a165627a7a72305820672142c597ae4f0bb2254cc88d464cffee57a0bdda2039a09353c82bd083d3f80029

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

000000000000000000000000000000000000000000000000000000005a613500000000000000000000000000000000000000000000000000000000005a97427f00000000000000000000000000000000000000000000000000000000000004b0000000000000000000000000f4b99e8d0841df74a694f591293331c32e530d9b

-----Decoded View---------------
Arg [0] : _startTime (uint256): 1516320000
Arg [1] : _endTime (uint256): 1519862399
Arg [2] : _rate (uint256): 1200
Arg [3] : _wallet (address): 0xF4B99E8d0841DF74A694F591293331C32E530D9B

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a613500
Arg [1] : 000000000000000000000000000000000000000000000000000000005a97427f
Arg [2] : 00000000000000000000000000000000000000000000000000000000000004b0
Arg [3] : 000000000000000000000000f4b99e8d0841df74a694f591293331c32e530d9b


Swarm Source

bzzr://672142c597ae4f0bb2254cc88d464cffee57a0bdda2039a09353c82bd083d3f8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.