ETH Price: $2,705.70 (+2.61%)

Token

IGFToken (IGF)
 

Overview

Max Total Supply

1,169,012.39176377 IGF

Holders

121

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
19,007.74 IGF

Value
$0.00
0x3b53b88d1ae7e35eb14b0dca1cdd249504628da5
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:
IgfContract

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-10-01
*/

pragma solidity 0.4.23;

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

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

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

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

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


contract 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.
     */
    constructor() 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) external onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}


contract IgfContract is Ownable
{

using SafeMath for uint256;
    //INVESTOR REPOSITORY
    mapping(address => uint256) internal balances;

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

    mapping (address => uint256) internal totalAllowed;

    /**
    * @dev total number of tokens in existence
    */
    uint256 internal totSupply;

    //COMMON
    function totalSupply() view public returns(uint256)
    {
        return totSupply;
    }
    
    function getTotalAllowed(address _owner) view public returns(uint256)
    {
        return totalAllowed[_owner];
    }

    function setTotalAllowed(address _owner, uint256 _newValue) internal
    {
        totalAllowed[_owner]=_newValue;
    }


    function setTotalSupply(uint256 _newValue) internal
    {
        totSupply=_newValue;
    }


    /**
    * @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) view public returns(uint256)
    {
        return balances[_owner];
    }

    function setBalanceOf(address _investor, uint256 _newValue) internal
    {
        require(_investor!=0x0000000000000000000000000000000000000000);
        balances[_investor]=_newValue;
    }


    /**
     * @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) view public returns(uint256)
    {
        require(msg.sender==_owner || msg.sender == _spender || msg.sender==getOwner());
        return allowed[_owner][_spender];
    }

    function setAllowance(address _owner, address _spender, uint256 _newValue) internal
    {
        require(_spender!=0x0000000000000000000000000000000000000000);
        uint256 newTotal = getTotalAllowed(_owner).sub(allowance(_owner, _spender)).add(_newValue);
        require(newTotal <= balanceOf(_owner));
        allowed[_owner][_spender]=_newValue;
        setTotalAllowed(_owner,newTotal);
    }



// TOKEN 
   constructor(uint256 _rate, uint256 _minPurchase,uint256 _cap) public
    {
        require(_minPurchase>0);
        require(_rate > 0);
        require(_cap > 0);
        rate=_rate;
        minPurchase=_minPurchase;
        cap = _cap;
    }

    bytes32 public constant name = "IGFToken";

    bytes3 public constant symbol = "IGF";

    uint8 public constant decimals = 8;

    uint256 public cap;

    bool internal mintingFinished;

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

    event Approval(address indexed owner, address indexed spender, uint256 value);

    event Mint(address indexed to, uint256 amount);

    event MintFinished();
    
    event Burn(address indexed _owner, uint256 _value);

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

    function getName() view public returns(bytes32)
    {
        return name;
    }

    function getSymbol() view public returns(bytes3)
    {
        return symbol;
    }

    function getTokenDecimals() view public returns(uint256)
    {
        return decimals;
    }
    
    function getMintingFinished() view public returns(bool)
    {
        return mintingFinished;
    }

    function getTokenCap() view public returns(uint256)
    {
        return cap;
    }

    function setTokenCap(uint256 _newCap) external onlyOwner
    {
        cap=_newCap;
    }


    /**
    * @dev Burns the tokens of the specified address.
    * @param _owner The holder of tokens.
    * @param _value The amount of tokens burned
    */

  function burn(address _owner,uint256 _value) external  {
    require(_value <= balanceOf(_owner));
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure

    setBalanceOf(_owner, balanceOf(_owner).sub(_value));
    setTotalSupply(totalSupply().sub(_value));
    emit Burn(_owner, _value);
  }

    

    function updateTokenInvestorBalance(address _investor, uint256 _newValue) onlyOwner external
    {
        addTokens(_investor,_newValue);
    }

    /**
     * @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) external{
        require(msg.sender!=_to);
        require(_value <= balanceOf(msg.sender));

        // SafeMath.sub will throw if there is not enough balance.
        setBalanceOf(msg.sender, balanceOf(msg.sender).sub(_value));
        setBalanceOf(_to, balanceOf(_to).add(_value));

        emit Transfer(msg.sender, _to, _value);
    }

    /**
     * @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) external {
        require(_value <= balanceOf(_from));
        require(_value <= allowance(_from,_to));
        setBalanceOf(_from, balanceOf(_from).sub(_value));
        setBalanceOf(_to, balanceOf(_to).add(_value));
        setAllowance(_from,_to,allowance(_from,_to).sub(_value));
        emit Transfer(_from, _to, _value);
    }

    /**
 * @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 _owner The address of the owner which allows tokens to a spender
 * @param _spender The address which will spend the funds.
 * @param _value The amount of tokens to be spent.
 */
    function approve(address _owner,address _spender, uint256 _value) external {
        require(msg.sender ==_owner);
        setAllowance(msg.sender,_spender, _value);
        emit Approval(msg.sender, _spender, _value);
    }


    /**
     * @dev Increase the amount of tokens that an owner allowed to a 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
     * @param _owner The address of the owner which allows tokens to a spender
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the allowance by.
     */
    function increaseApproval(address _owner, address _spender, uint _addedValue) external{
        require(msg.sender==_owner);
        setAllowance(_owner,_spender,allowance(_owner,_spender).add(_addedValue));
        emit Approval(_owner, _spender, allowance(_owner,_spender));
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     *
     * approve should be called when allowed[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _owner The address of the owner which allows tokens to a spender
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseApproval(address _owner,address _spender, uint _subtractedValue) external{
        require(msg.sender==_owner);

        uint oldValue = allowance(_owner,_spender);
        if (_subtractedValue > oldValue) {
            setAllowance(_owner,_spender, 0);
        } else {
            setAllowance(_owner,_spender, oldValue.sub(_subtractedValue));
        }
        emit Approval(_owner, _spender, allowance(_owner,_spender));
    }

    /**
     * @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{
        require(totalSupply().add(_amount) <= getTokenCap());
        setTotalSupply(totalSupply().add(_amount));
        setBalanceOf(_to, balanceOf(_to).add(_amount));
        emit Mint(_to, _amount);
        emit Transfer(address(0), _to, _amount);
    }
    
    function addTokens(address _to, uint256 _amount) canMint internal{
        require( totalSupply().add(_amount) <= getTokenCap());
        setTotalSupply(totalSupply().add(_amount));
        setBalanceOf(_to, balanceOf(_to).add(_amount));
        emit Transfer(address(0), _to, _amount);
    }    

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

    //Crowdsale
    
        // what is minimal purchase of tokens
    uint256 internal minPurchase;

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

    // amount of raised money in wei
    uint256 internal weiRaised;
    
    /**
     * event for token purchase logging
     * @param beneficiary who got the tokens
     * @param value weis paid for purchase
     * @param amount amount of tokens purchased
     */
    event TokenPurchase(address indexed beneficiary, uint256 value, uint256 amount);

    event InvestmentsWithdrawn(uint indexed amount, uint indexed timestamp);

    function () external payable {
    }

    function getTokenRate() view public returns(uint256)
    {
        return rate;
    }

    function getMinimumPurchase() view public returns(uint256)
    {
        return minPurchase;
    }

    function setTokenRate(uint256 _newRate) external onlyOwner
    {
        rate = _newRate;
    }
    
    function setMinPurchase(uint256 _newMin) external onlyOwner
    {
        minPurchase = _newMin;
    }

    function getWeiRaised() view external returns(uint256)
    {
        return weiRaised;
    }

    // low level token purchase function
    function buyTokens() external payable{
        require(msg.value > 0);
        uint256 weiAmount = msg.value;

        // calculate token amount to be created
        uint256 tokens = getTokenAmount(weiAmount);
        require(validPurchase(tokens));

        // update state
        weiRaised = weiRaised.add(weiAmount);
        mint(msg.sender, tokens);
        emit TokenPurchase(msg.sender, weiAmount, tokens);
    }

    // Override this method to have a way to add business logic to your crowdsale when buying
    function getTokenAmount(uint256 weiAmount) internal view returns(uint256) {
        return weiAmount.div(getTokenRate());
    }

    // get all rised wei
    function withdrawInvestments() external onlyOwner{
        uint  amount = address(this).balance;
        getOwner().transfer(amount * 1 wei);
        emit InvestmentsWithdrawn(amount, block.timestamp);
    }
    
    function getCurrentInvestments() view external onlyOwner returns(uint256)
    {
        return address(this).balance;
    }

    function getOwner() view internal returns(address)
    {
        return owner;
    }

    // @return true if the transaction can buy tokens
    function validPurchase(uint256 tokensAmount) internal view returns (bool) {
        bool nonZeroPurchase = tokensAmount != 0;
        bool acceptableAmount = tokensAmount >= getMinimumPurchase();
        return nonZeroPurchase && acceptableAmount;
    }
    
    // CASHIER
    uint256 internal dividendsPaid;

    event DividendsPayment(uint256 amount, address beneficiary);

    function getTotalDividendsPaid() view external onlyOwner returns (uint256)
    {
        return dividendsPaid;
    }

    function getBalance() view public onlyOwner returns (uint256)
    {
        return address(this).balance;
    }

    function payDividends(address beneficiary,uint256 amount) external onlyOwner returns(bool)
    {
        require(amount > 0);
        validBeneficiary(beneficiary);
        beneficiary.transfer(amount);
        dividendsPaid.add(amount);
        emit DividendsPayment(amount, beneficiary);
        return true;
    }

    function depositDividends() payable external onlyOwner
    {
       address(this).transfer(msg.value);
    }
    
    function validBeneficiary(address beneficiary) view internal
    {
        require(balanceOf(beneficiary)>0);
    }
    
    
    //duplicates
    
    function getInvestorBalance(address _address) view external returns(uint256)
    {
        return balanceOf(_address);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentInvestments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSymbol","outputs":[{"name":"","type":"bytes3"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getName","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTokenDecimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCap","type":"uint256"}],"name":"setTokenCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTokenCap","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":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokenRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWeiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getInvestorBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRate","type":"uint256"}],"name":"setTokenRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_investor","type":"address"},{"name":"_newValue","type":"uint256"}],"name":"updateTokenInvestorBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTotalDividendsPaid","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":"symbol","outputs":[{"name":"","type":"bytes3"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getTotalAllowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawInvestments","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinimumPurchase","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"amount","type":"uint256"}],"name":"payDividends","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"depositDividends","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newMin","type":"uint256"}],"name":"setMinPurchase","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_rate","type":"uint256"},{"name":"_minPurchase","type":"uint256"},{"name":"_cap","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"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"},{"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":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Burn","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":"amount","type":"uint256"},{"indexed":true,"name":"timestamp","type":"uint256"}],"name":"InvestmentsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"beneficiary","type":"address"}],"name":"DividendsPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405234801561001057600080fd5b506040516060806121d9833981018060405281019080805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008211151561009657600080fd5b6000831115156100a557600080fd5b6000811115156100b457600080fd5b8260088190555081600781905550806005819055505050506120fe806100db6000396000f3006080604052600436106101cd576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101cf57806309442d661461020257806312065fe01461022d578063150704011461025857806317d7de7c146102c357806318160ddd146102f657806323b872dd1461032157806324f65ee71461038e5780632854bc7e146103b95780632f087a28146103e6578063313ce56714610411578063355274ea146104425780633e2d70041461046d57806340582f13146104985780635ea63913146104c357806361241c281461051a578063676cb63d1461054757806370a082311461057657806379fdf548146105cd5780637d64bcb41461061a5780638d2a0910146106315780638da5cb5b1461065c57806395d89b41146106b3578063965232c01461071e5780639dc29fac14610775578063a3916164146107c2578063a9059cbb146107d9578063af5b065a14610826578063bcdd612114610851578063d0febe4c146108be578063d9afa38b146108c8578063dd62ed3e1461092d578063defa92ee146109a4578063e1f21c67146109ae578063e8307d0014610a1b578063f019c26714610a48578063f2fde38b14610ab5575b005b3480156101db57600080fd5b506101e4610af8565b60405180826000191660001916815260200191505060405180910390f35b34801561020e57600080fd5b50610217610b1c565b6040518082815260200191505060405180910390f35b34801561023957600080fd5b50610242610b96565b6040518082815260200191505060405180910390f35b34801561026457600080fd5b5061026d610c10565b60405180827cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156102cf57600080fd5b506102d8610c38565b60405180826000191660001916815260200191505060405180910390f35b34801561030257600080fd5b5061030b610c60565b6040518082815260200191505060405180910390f35b34801561032d57600080fd5b5061038c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c6a565b005b34801561039a57600080fd5b506103a3610d71565b6040518082815260200191505060405180910390f35b3480156103c557600080fd5b506103e460048036038101908080359060200190929190505050610d7d565b005b3480156103f257600080fd5b506103fb610de2565b6040518082815260200191505060405180910390f35b34801561041d57600080fd5b50610426610dec565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044e57600080fd5b50610457610df1565b6040518082815260200191505060405180910390f35b34801561047957600080fd5b50610482610df7565b6040518082815260200191505060405180910390f35b3480156104a457600080fd5b506104ad610e01565b6040518082815260200191505060405180910390f35b3480156104cf57600080fd5b50610504600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0b565b6040518082815260200191505060405180910390f35b34801561052657600080fd5b5061054560048036038101908080359060200190929190505050610e1d565b005b34801561055357600080fd5b5061055c610e82565b604051808215151515815260200191505060405180910390f35b34801561058257600080fd5b506105b7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e99565b6040518082815260200191505060405180910390f35b3480156105d957600080fd5b50610618600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee2565b005b34801561062657600080fd5b5061062f610f4b565b005b34801561063d57600080fd5b5061064661100b565b6040518082815260200191505060405180910390f35b34801561066857600080fd5b50610671611070565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106bf57600080fd5b506106c8611095565b60405180827cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561072a57600080fd5b5061075f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b9565b6040518082815260200191505060405180910390f35b34801561078157600080fd5b506107c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611102565b005b3480156107ce57600080fd5b506107d76111b1565b005b3480156107e557600080fd5b50610824600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112aa565b005b34801561083257600080fd5b5061083b6113ad565b6040518082815260200191505060405180910390f35b34801561085d57600080fd5b506108bc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113b7565b005b6108c661148a565b005b3480156108d457600080fd5b50610913600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061153d565b604051808215151515815260200191505060405180910390f35b34801561093957600080fd5b5061098e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611684565b6040518082815260200191505060405180910390f35b6109ac6117b8565b005b3480156109ba57600080fd5b50610a19600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061185c565b005b348015610a2757600080fd5b50610a466004803603810190808035906020019092919050505061190b565b005b348015610a5457600080fd5b50610ab3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611970565b005b348015610ac157600080fd5b50610af6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a63565b005b7f494746546f6b656e00000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bf357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631905090565b60007f4947460000000000000000000000000000000000000000000000000000000000905090565b60007f494746546f6b656e000000000000000000000000000000000000000000000000905090565b6000600454905090565b610c7383610e99565b8111151515610c8157600080fd5b610c8b8383611684565b8111151515610c9957600080fd5b610cbd83610cb883610caa87610e99565b611bb890919063ffffffff16565b611bd1565b610ce182610cdc83610cce86610e99565b611c5590919063ffffffff16565b611bd1565b610d078383610d0284610cf48888611684565b611bb890919063ffffffff16565b611c73565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600860ff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dd857600080fd5b8060058190555050565b6000600554905090565b600881565b60055481565b6000600854905090565b6000600954905090565b6000610e1682610e99565b9050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e7857600080fd5b8060088190555050565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f3d57600080fd5b610f478282611d90565b5050565b600660009054906101000a900460ff16151515610f6757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fc257600080fd5b6001600660006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561106857600080fd5b600a54905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f494746000000000000000000000000000000000000000000000000000000000081565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61110b82610e99565b811115151561111957600080fd5b61113d826111388361112a86610e99565b611bb890919063ffffffff16565b611bd1565b61115f61115a8261114c610c60565b611bb890919063ffffffff16565b611e8b565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561120e57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16319050611230611e95565b73ffffffffffffffffffffffffffffffffffffffff166108fc600183029081150290604051600060405180830381858888f19350505050158015611278573d6000803e3d6000fd5b5042817fca2a1b3271e5bb96e9186f6b34be112d3b0c42755fd5b8f537fc2429a40e34ac60405160405180910390a350565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156112e557600080fd5b6112ee33610e99565b81111515156112fc57600080fd5b6113203361131b8361130d33610e99565b611bb890919063ffffffff16565b611bd1565b6113448261133f8361133186610e99565b611c5590919063ffffffff16565b611bd1565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600754905090565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f157600080fd5b6114178383611412846114048888611684565b611c5590919063ffffffff16565b611c73565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256114708686611684565b6040518082815260200191505060405180910390a3505050565b60008060003411151561149c57600080fd5b3491506114a882611ebe565b90506114b381611ee1565b15156114be57600080fd5b6114d382600954611c5590919063ffffffff16565b6009819055506114e33382611f0c565b3373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8383604051808381526020018281526020019250505060405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561159a57600080fd5b6000821115156115a957600080fd5b6115b283612055565b8273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156115f8573d6000803e3d6000fd5b5061160e82600a54611c5590919063ffffffff16565b507f5448634990dfe807815d13fa2804f44cebc413d2582cb7cf30a7f140dd4264968284604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16001905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116eb57508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061172857506116f9611e95565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561173357600080fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611859573d6000803e3d6000fd5b50565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189657600080fd5b6118a1338383611c73565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196657600080fd5b8060078190555050565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119ac57600080fd5b6119b68484611684565b9050808211156119d1576119cc84846000611c73565b6119ef565b6119ee84846119e98585611bb890919063ffffffff16565b611c73565b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925611a488787611684565b6040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abe57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611afa57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000828211151515611bc657fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611c0d57600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000808284019050838110151515611c6957fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611cb057600080fd5b611ce682611cd8611cc18787611684565b611cca886110b9565b611bb890919063ffffffff16565b611c5590919063ffffffff16565b9050611cf184610e99565b8111151515611cff57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d8a848261206f565b50505050565b600660009054906101000a900460ff16151515611dac57600080fd5b611db4610de2565b611dce82611dc0610c60565b611c5590919063ffffffff16565b11151515611ddb57600080fd5b611dfd611df882611dea610c60565b611c5590919063ffffffff16565b611e8b565b611e2182611e1c83611e0e86610e99565b611c5590919063ffffffff16565b611bd1565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b8060048190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611eda611ecb610df7565b836120b790919063ffffffff16565b9050919050565b6000806000808414159150611ef46113ad565b8410159050818015611f035750805b92505050919050565b600660009054906101000a900460ff16151515611f2857600080fd5b611f30610de2565b611f4a82611f3c610c60565b611c5590919063ffffffff16565b11151515611f5757600080fd5b611f79611f7482611f66610c60565b611c5590919063ffffffff16565b611e8b565b611f9d82611f9883611f8a86610e99565b611c5590919063ffffffff16565b611bd1565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061206082610e99565b11151561206c57600080fd5b50565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008082848115156120c557fe5b04905080915050929150505600a165627a7a7230582051e82de679057e45df1443bbcd3e72d78060aa984f03e6edf2fa85cd74403bb60029000000000000000000000000000000000000000000000000000000000144ca1800000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000038d7ea4c68000

Deployed Bytecode

0x6080604052600436106101cd576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101cf57806309442d661461020257806312065fe01461022d578063150704011461025857806317d7de7c146102c357806318160ddd146102f657806323b872dd1461032157806324f65ee71461038e5780632854bc7e146103b95780632f087a28146103e6578063313ce56714610411578063355274ea146104425780633e2d70041461046d57806340582f13146104985780635ea63913146104c357806361241c281461051a578063676cb63d1461054757806370a082311461057657806379fdf548146105cd5780637d64bcb41461061a5780638d2a0910146106315780638da5cb5b1461065c57806395d89b41146106b3578063965232c01461071e5780639dc29fac14610775578063a3916164146107c2578063a9059cbb146107d9578063af5b065a14610826578063bcdd612114610851578063d0febe4c146108be578063d9afa38b146108c8578063dd62ed3e1461092d578063defa92ee146109a4578063e1f21c67146109ae578063e8307d0014610a1b578063f019c26714610a48578063f2fde38b14610ab5575b005b3480156101db57600080fd5b506101e4610af8565b60405180826000191660001916815260200191505060405180910390f35b34801561020e57600080fd5b50610217610b1c565b6040518082815260200191505060405180910390f35b34801561023957600080fd5b50610242610b96565b6040518082815260200191505060405180910390f35b34801561026457600080fd5b5061026d610c10565b60405180827cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156102cf57600080fd5b506102d8610c38565b60405180826000191660001916815260200191505060405180910390f35b34801561030257600080fd5b5061030b610c60565b6040518082815260200191505060405180910390f35b34801561032d57600080fd5b5061038c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c6a565b005b34801561039a57600080fd5b506103a3610d71565b6040518082815260200191505060405180910390f35b3480156103c557600080fd5b506103e460048036038101908080359060200190929190505050610d7d565b005b3480156103f257600080fd5b506103fb610de2565b6040518082815260200191505060405180910390f35b34801561041d57600080fd5b50610426610dec565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044e57600080fd5b50610457610df1565b6040518082815260200191505060405180910390f35b34801561047957600080fd5b50610482610df7565b6040518082815260200191505060405180910390f35b3480156104a457600080fd5b506104ad610e01565b6040518082815260200191505060405180910390f35b3480156104cf57600080fd5b50610504600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0b565b6040518082815260200191505060405180910390f35b34801561052657600080fd5b5061054560048036038101908080359060200190929190505050610e1d565b005b34801561055357600080fd5b5061055c610e82565b604051808215151515815260200191505060405180910390f35b34801561058257600080fd5b506105b7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e99565b6040518082815260200191505060405180910390f35b3480156105d957600080fd5b50610618600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee2565b005b34801561062657600080fd5b5061062f610f4b565b005b34801561063d57600080fd5b5061064661100b565b6040518082815260200191505060405180910390f35b34801561066857600080fd5b50610671611070565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106bf57600080fd5b506106c8611095565b60405180827cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561072a57600080fd5b5061075f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b9565b6040518082815260200191505060405180910390f35b34801561078157600080fd5b506107c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611102565b005b3480156107ce57600080fd5b506107d76111b1565b005b3480156107e557600080fd5b50610824600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112aa565b005b34801561083257600080fd5b5061083b6113ad565b6040518082815260200191505060405180910390f35b34801561085d57600080fd5b506108bc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113b7565b005b6108c661148a565b005b3480156108d457600080fd5b50610913600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061153d565b604051808215151515815260200191505060405180910390f35b34801561093957600080fd5b5061098e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611684565b6040518082815260200191505060405180910390f35b6109ac6117b8565b005b3480156109ba57600080fd5b50610a19600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061185c565b005b348015610a2757600080fd5b50610a466004803603810190808035906020019092919050505061190b565b005b348015610a5457600080fd5b50610ab3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611970565b005b348015610ac157600080fd5b50610af6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a63565b005b7f494746546f6b656e00000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bf357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631905090565b60007f4947460000000000000000000000000000000000000000000000000000000000905090565b60007f494746546f6b656e000000000000000000000000000000000000000000000000905090565b6000600454905090565b610c7383610e99565b8111151515610c8157600080fd5b610c8b8383611684565b8111151515610c9957600080fd5b610cbd83610cb883610caa87610e99565b611bb890919063ffffffff16565b611bd1565b610ce182610cdc83610cce86610e99565b611c5590919063ffffffff16565b611bd1565b610d078383610d0284610cf48888611684565b611bb890919063ffffffff16565b611c73565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600860ff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dd857600080fd5b8060058190555050565b6000600554905090565b600881565b60055481565b6000600854905090565b6000600954905090565b6000610e1682610e99565b9050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e7857600080fd5b8060088190555050565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f3d57600080fd5b610f478282611d90565b5050565b600660009054906101000a900460ff16151515610f6757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fc257600080fd5b6001600660006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561106857600080fd5b600a54905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f494746000000000000000000000000000000000000000000000000000000000081565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61110b82610e99565b811115151561111957600080fd5b61113d826111388361112a86610e99565b611bb890919063ffffffff16565b611bd1565b61115f61115a8261114c610c60565b611bb890919063ffffffff16565b611e8b565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561120e57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16319050611230611e95565b73ffffffffffffffffffffffffffffffffffffffff166108fc600183029081150290604051600060405180830381858888f19350505050158015611278573d6000803e3d6000fd5b5042817fca2a1b3271e5bb96e9186f6b34be112d3b0c42755fd5b8f537fc2429a40e34ac60405160405180910390a350565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515156112e557600080fd5b6112ee33610e99565b81111515156112fc57600080fd5b6113203361131b8361130d33610e99565b611bb890919063ffffffff16565b611bd1565b6113448261133f8361133186610e99565b611c5590919063ffffffff16565b611bd1565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600754905090565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f157600080fd5b6114178383611412846114048888611684565b611c5590919063ffffffff16565b611c73565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256114708686611684565b6040518082815260200191505060405180910390a3505050565b60008060003411151561149c57600080fd5b3491506114a882611ebe565b90506114b381611ee1565b15156114be57600080fd5b6114d382600954611c5590919063ffffffff16565b6009819055506114e33382611f0c565b3373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8383604051808381526020018281526020019250505060405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561159a57600080fd5b6000821115156115a957600080fd5b6115b283612055565b8273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156115f8573d6000803e3d6000fd5b5061160e82600a54611c5590919063ffffffff16565b507f5448634990dfe807815d13fa2804f44cebc413d2582cb7cf30a7f140dd4264968284604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16001905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116eb57508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061172857506116f9611e95565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561173357600080fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611859573d6000803e3d6000fd5b50565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561189657600080fd5b6118a1338383611c73565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196657600080fd5b8060078190555050565b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119ac57600080fd5b6119b68484611684565b9050808211156119d1576119cc84846000611c73565b6119ef565b6119ee84846119e98585611bb890919063ffffffff16565b611c73565b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925611a488787611684565b6040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abe57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611afa57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000828211151515611bc657fe5b818303905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611c0d57600080fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000808284019050838110151515611c6957fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611cb057600080fd5b611ce682611cd8611cc18787611684565b611cca886110b9565b611bb890919063ffffffff16565b611c5590919063ffffffff16565b9050611cf184610e99565b8111151515611cff57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d8a848261206f565b50505050565b600660009054906101000a900460ff16151515611dac57600080fd5b611db4610de2565b611dce82611dc0610c60565b611c5590919063ffffffff16565b11151515611ddb57600080fd5b611dfd611df882611dea610c60565b611c5590919063ffffffff16565b611e8b565b611e2182611e1c83611e0e86610e99565b611c5590919063ffffffff16565b611bd1565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b8060048190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000611eda611ecb610df7565b836120b790919063ffffffff16565b9050919050565b6000806000808414159150611ef46113ad565b8410159050818015611f035750805b92505050919050565b600660009054906101000a900460ff16151515611f2857600080fd5b611f30610de2565b611f4a82611f3c610c60565b611c5590919063ffffffff16565b11151515611f5757600080fd5b611f79611f7482611f66610c60565b611c5590919063ffffffff16565b611e8b565b611f9d82611f9883611f8a86610e99565b611c5590919063ffffffff16565b611bd1565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040518082815260200191505060405180910390a28173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061206082610e99565b11151561206c57600080fd5b50565b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008082848115156120c557fe5b04905080915050929150505600a165627a7a7230582051e82de679057e45df1443bbcd3e72d78060aa984f03e6edf2fa85cd74403bb60029

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

000000000000000000000000000000000000000000000000000000000144ca1800000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000038d7ea4c68000

-----Decoded View---------------
Arg [0] : _rate (uint256): 21285400
Arg [1] : _minPurchase (uint256): 1000
Arg [2] : _cap (uint256): 1000000000000000

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000144ca18
Arg [1] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [2] : 00000000000000000000000000000000000000000000000000038d7ea4c68000


Swarm Source

bzzr://51e82de679057e45df1443bbcd3e72d78060aa984f03e6edf2fa85cd74403bb6
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.