ETH Price: $2,453.72 (+2.20%)

Token

Rewards Cash (RWRD)
 

Overview

Max Total Supply

69,535,654.1936000000015 RWRD

Holders

720

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,700 RWRD

Value
$0.00
0x3Bf6e8E9759FE42F1f1a43A2d30FAd255deC01fe
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:
RewardsToken

Compiler Version
v0.5.4+commit.9549d8ff

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-06-28
*/

pragma solidity 0.5.4;

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

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

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    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) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

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

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (_a == 0) {
      return 0;
    }

    uint256 c = _a * _b;
    require(c / _a == _b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b > 0); // Solidity only automatically asserts 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 Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b <= _a);
    uint256 c = _a - _b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
    uint256 c = _a + _b;
    require(c >= _a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

/**
 * @title Contract for Rewards Token
 * Copyright 2018, Rewards Blockchain Systems (Rewards.com)
 */

contract RewardsToken is Ownable {
    using SafeMath for uint;

    string public constant symbol = 'RWRD';
    string public constant name = 'Rewards Cash';
    uint8 public constant decimals = 18;

    uint256 public constant hardCap = 5 * (10 ** (18 + 8)); //500MM tokens. Max amount of tokens which can be minte10
    uint256 public totalSupply;

    bool public mintingFinished = false;
    bool public frozen = true;

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

    event NewToken(address indexed _token);
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
    event Burned(address indexed _burner, uint _burnedAmount);
    event Revoke(address indexed _from, uint256 _value);
    event MintFinished();
    event MintStarted();
    event Freeze();
    event Unfreeze();

    modifier canMint() {
        require(!mintingFinished, "Minting was already finished");
        _;
    }

    modifier canTransfer() {
        require(msg.sender == owner || !frozen, "Tokens could not be transferred");
        _;
    }

    constructor () public {
        emit NewToken(address(this));
    }

    /**
     * @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) public onlyOwner canMint returns (bool) {
        require(_to != address(0), "Address should not be zero");
        require(totalSupply.add(_amount) <= hardCap);

        totalSupply = totalSupply.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        emit Transfer(address(0), _to, _amount);
        return true;
    }

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

    /**
     * @dev Function to start minging new tokens.
     * @return True if the operation was successful
     */
    function startMinting() public onlyOwner returns (bool) {
        require(mintingFinished);
        mintingFinished = false;
        emit MintStarted();
        return true;
    }

    /**
    * @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 canTransfer returns (bool) {
        require(_to != address(0), "Address should not be zero");
        require(_value <= balances[msg.sender], "Insufficient balance");

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

    /**
     * @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 canTransfer returns (bool) {
        require(_to != address(0), "Address should not be zero");
        require(_value <= balances[_from], "Insufficient Balance");
        require(_value <= allowed[_from][msg.sender], "Insufficient Allowance");

        balances[_from] = balances[_from] - _value;
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender] - _value;
        emit 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;
        emit 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 view 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);
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    /**
     * @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)
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     */
    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);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        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 view returns (uint256 balance) {
        return balances[_owner];
    }

    /** 
     * @dev Burn tokens from an address
     * @param _burnAmount The amount of tokens to burn
     */
    function burn(uint _burnAmount) public {
        require(_burnAmount <= balances[msg.sender]);

        balances[msg.sender] = balances[msg.sender].sub(_burnAmount);
        totalSupply = totalSupply.sub(_burnAmount);
        emit Burned(msg.sender, _burnAmount);
    }

    /**
     * @dev Revokes minted tokens
     * @param _from The address whose tokens are revoked
     * @param _value The amount of token to revoke
     */
    function revoke(address _from, uint256 _value) public onlyOwner returns (bool) {
        require(_value <= balances[_from]);
        // 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

        balances[_from] = balances[_from].sub(_value);
        totalSupply = totalSupply.sub(_value);

        emit Revoke(_from, _value);
        emit Transfer(_from, address(0), _value);
        return true;
    }

    /**
     * @dev Freeze tokens
     */
    function freeze() public onlyOwner {
        require(!frozen);
        frozen = true;
        emit Freeze();
    }

    /**
     * @dev Unfreeze tokens 
     */
    function unfreeze() public onlyOwner {
        require(frozen);
        frozen = false;
        emit Unfreeze();
    }
}

/**
 * @title Contract that will hold vested tokens;
 * @notice Tokens for vested contributors will be hold in this contract and token holders
 * will claim their tokens according to their own vesting timelines.
 * Copyright 2018, Rewards Blockchain Systems (Rewards.com)
 */
contract VestingVault is Ownable {
    using SafeMath for uint256;

    struct Grant {
        uint value;
        uint vestingStart;
        uint vestingCliff;
        uint vestingDuration;
        uint[] scheduleTimes;
        uint[] scheduleValues;
        uint level;              // 1: frequency, 2: schedules
        uint transferred;
    }

    RewardsToken public token;

    mapping(address => Grant) public grants;

    uint public totalVestedTokens;
    // array of vested users addresses
    address[] public vestedAddresses;
    bool public locked;

    event NewGrant (address _to, uint _amount, uint _start, uint _duration, uint _cliff, uint[] _scheduleTimes,
                    uint[] _scheduleAmounts, uint _level);
    event NewRelease(address _holder, uint _amount);
    event WithdrawAll(uint _amount);
    event BurnTokens(uint _amount);
    event LockedVault();

    modifier isOpen() {
        require(locked == false, "Vault is already locked");
        _;
    }

    constructor (RewardsToken _token) public {
        require(address(_token) != address(0), "Token address should not be zero");

        token = _token;
        locked = false;
    }

    /**
     * @return address[] that represents vested addresses;
     */
    function returnVestedAddresses() public view returns (address[] memory) {
        return vestedAddresses;
    }

    /**
     * @return grant that represents vested info for specific user;
     */
    function returnGrantInfo(address _user)
    public view returns (uint, uint, uint, uint, uint[] memory, uint[] memory, uint, uint) {
        require(_user != address(0), "Address should not be zero");
        Grant storage grant = grants[_user];

        return (grant.value, grant.vestingStart, grant.vestingCliff, grant.vestingDuration, grant.scheduleTimes,
        grant.scheduleValues, grant.level, grant.transferred);
    }

    /**
     * @dev Add vested contributor information
     * @param _to Withdraw address that tokens will be sent
     * @param _value Amount to hold during vesting period
     * @param _start Unix epoch time that vesting starts from
     * @param _duration Seconds amount of vesting duration
     * @param _cliff Seconds amount of vesting cliffHi
     * @param _scheduleTimes Array of Unix epoch times for vesting schedules
     * @param _scheduleValues Array of Amount for vesting schedules
     * @param _level Indicator that will represent types of vesting
     * @return Int value that represents granted token amount
     */
    function grant(
        address _to, uint _value, uint _start, uint _duration, uint _cliff, uint[] memory _scheduleTimes,
        uint[] memory _scheduleValues, uint _level) public onlyOwner isOpen returns (uint256) {
        require(_to != address(0), "Address should not be zero");
        require(_level == 1 || _level == 2, "Invalid vesting level");
        // make sure a single address can be granted tokens only once.
        require(grants[_to].value == 0, "Already added to vesting vault");

        if (_level == 2) {
            require(_scheduleTimes.length == _scheduleValues.length, "Schedule Times and Values should be matched");
            _value = 0;
            for (uint i = 0; i < _scheduleTimes.length; i++) {
                require(_scheduleTimes[i] > 0, "Seconds Amount of ScheduleTime should be greater than zero");
                require(_scheduleValues[i] > 0, "Amount of ScheduleValue should be greater than zero");
                if (i > 0) {
                    require(_scheduleTimes[i] > _scheduleTimes[i - 1], "ScheduleTimes should be sorted by ASC");
                }
                _value = _value.add(_scheduleValues[i]);
            }
        }

        require(_value > 0, "Vested amount should be greater than zero");

        grants[_to] = Grant({
            value : _value,
            vestingStart : _start,
            vestingDuration : _duration,
            vestingCliff : _cliff,
            scheduleTimes : _scheduleTimes,
            scheduleValues : _scheduleValues,
            level : _level,
            transferred : 0
            });

        vestedAddresses.push(_to);
        totalVestedTokens = totalVestedTokens.add(_value);

        emit NewGrant(_to, _value, _start, _duration, _cliff, _scheduleTimes, _scheduleValues, _level);
        return _value;
    }

    /**
     * @dev Get token amount for a token holder available to transfer at specific time
     * @param _holder Address that represents holder's withdraw address
     * @param _time Unix epoch time at the moment
     * @return Int value that represents token amount that is available to release at the moment
     */
    function transferableTokens(address _holder, uint256 _time) public view returns (uint256) {
        Grant storage grantInfo = grants[_holder];

        if (grantInfo.value == 0) {
            return 0;
        }
        return calculateTransferableTokens(grantInfo, _time);
    }

    /**
     * @dev Internal function to calculate available amount at specific time
     * @param _grant Grant that represents holder's vesting info
     * @param _time Unix epoch time at the moment
     * @return Int value that represents available vested token amount
     */
    function calculateTransferableTokens(Grant memory _grant, uint256 _time) private pure returns (uint256) {
        uint totalVestedAmount = _grant.value;
        uint totalAvailableVestedAmount = 0;

        if (_grant.level == 1) {
            if (_time < _grant.vestingCliff.add(_grant.vestingStart)) {
                return 0;
            } else if (_time >= _grant.vestingStart.add(_grant.vestingDuration)) {
                return _grant.value;
            } else {
                totalAvailableVestedAmount =
                totalVestedAmount.mul(_time.sub(_grant.vestingStart)).div(_grant.vestingDuration);
            }
        } else {
            if (_time < _grant.scheduleTimes[0]) {
                return 0;
            } else if (_time >= _grant.scheduleTimes[_grant.scheduleTimes.length - 1]) {
                return _grant.value;
            } else {
                for (uint i = 0; i < _grant.scheduleTimes.length; i++) {
                    if (_grant.scheduleTimes[i] <= _time) {
                        totalAvailableVestedAmount = totalAvailableVestedAmount.add(_grant.scheduleValues[i]);
                    } else {
                        break;
                    }
                }
            }
        }

        return totalAvailableVestedAmount;
    }

    /**
     * @dev Claim vested token
     * @notice this will be eligible after vesting start + cliff or schedule times
     */
    function claim() public {
        address beneficiary = msg.sender;
        Grant storage grantInfo = grants[beneficiary];
        require(grantInfo.value > 0, "Grant does not exist");

        uint256 vested = calculateTransferableTokens(grantInfo, now);
        require(vested > 0, "There is no vested tokens");

        uint256 transferable = vested.sub(grantInfo.transferred);
        require(transferable > 0, "There is no remaining balance for this address");
        require(token.balanceOf(address(this)) >= transferable, "Contract Balance is insufficient");

        grantInfo.transferred = grantInfo.transferred.add(transferable);
        totalVestedTokens = totalVestedTokens.sub(transferable);

        token.transfer(beneficiary, transferable);
        emit NewRelease(beneficiary, transferable);
    }
    
    /**
     * @dev Function to revoke tokens from an address
     */
    function revokeTokens(address _from, uint _amount) public onlyOwner {
        // finally transfer all remaining tokens to owner
        Grant storage grantInfo = grants[_from];
        require(grantInfo.value > 0, "Grant does not exist");

        uint256 revocable = grantInfo.value.sub(grantInfo.transferred);
        require(revocable > 0, "There is no remaining balance for this address");
        require(revocable >= _amount, "Revocable balance is insufficient");
        require(token.balanceOf(address(this)) >= _amount, "Contract Balance is insufficient");

        grantInfo.value = grantInfo.value.sub(_amount);
        totalVestedTokens = totalVestedTokens.sub(_amount);

        token.burn(_amount);
        emit BurnTokens(_amount);
    }

    /**
     * @dev Function to burn remaining tokens
     */
    function burnRemainingTokens() public onlyOwner {
        // finally burn all remaining tokens to owner
        uint amount = token.balanceOf(address(this));

        token.burn(amount);
        emit BurnTokens(amount);
    }

    /**
     * @dev Function to withdraw remaining tokens;
     */
    function withdraw() public onlyOwner {
        // finally withdraw all remaining tokens to owner
        uint amount = token.balanceOf(address(this));
        token.transfer(owner, amount);

        emit WithdrawAll(amount);
    }

    /**
     * @dev Function to lock vault not to be able to alloc more
     */
    function lockVault() public onlyOwner {
        // finally lock vault
        require(!locked);
        locked = true;
        emit LockedVault();
    }
}

/**
 * @title Contract for distribution of tokens
 * Copyright 2018, Rewards Blockchain Systems (Rewards.com)
 */
contract RewardsTokenDistribution is Ownable {
    using SafeMath for uint256;

    RewardsToken public token;
    VestingVault public vestingVault;

    bool public finished;

    event TokenMinted(address indexed _to, uint _value, string _id);
    event RevokeTokens(address indexed _from, uint _value);
    event MintingFinished();
   
    modifier isAllowed() {
        require(finished == false, "Minting was already finished");
        _;
    }

    /**
     * @dev Constructor
     * @param _token Contract address of RewardsToken
     * @param _vestingVault Contract address of VestingVault
     */
    constructor (
        RewardsToken _token,
        VestingVault _vestingVault
    ) public {
        require(address(_token) != address(0), "Address should not be zero");
        require(address(_vestingVault) != address(0), "Address should not be zero");

        token = _token;
        vestingVault = _vestingVault;
        finished = false;
    }

    /**
     * @dev Function to allocate tokens for normal contributor
     * @param _to Address of a contributor
     * @param _value Value that represents tokens amount allocated for a contributor
     */
    function allocNormalUser(address _to, uint _value) public onlyOwner isAllowed {
        token.mint(_to, _value);
        emit TokenMinted(_to, _value, "Allocated Tokens To User");
    }

    /**
     * @dev Function to allocate tokens for vested contributor
     * @param _to Withdraw address that tokens will be sent
     * @param _value Amount to hold during vesting period
     * @param _start Unix epoch time that vesting starts from
     * @param _duration Seconds amount of vesting duration
     * @param _cliff Seconds amount of vesting cliff
     * @param _scheduleTimes Array of Unix epoch times for vesting schedules
     * @param _scheduleValues Array of Amount for vesting schedules
     * @param _level Indicator that will represent types of vesting
     */
    function allocVestedUser(
        address _to, uint _value, uint _start, uint _duration, uint _cliff, uint[] memory _scheduleTimes,
        uint[] memory _scheduleValues, uint _level) public onlyOwner isAllowed {
        _value = vestingVault.grant(_to, _value, _start, _duration, _cliff, _scheduleTimes, _scheduleValues, _level);
        token.mint(address(vestingVault), _value);
        emit TokenMinted(_to, _value, "Allocated Vested Tokens To User");
    }

    /**
     * @dev Function to allocate tokens for normal contributors
     * @param _holders Address of a contributor
     * @param _amounts Value that represents tokens amount allocated for a contributor
     */
    function allocNormalUsers(address[] memory _holders, uint[] memory _amounts) public onlyOwner isAllowed {
        require(_holders.length > 0, "Empty holder addresses");
        require(_holders.length == _amounts.length, "Invalid arguments");
        for (uint i = 0; i < _holders.length; i++) {
            token.mint(_holders[i], _amounts[i]);
            emit TokenMinted(_holders[i], _amounts[i], "Allocated Tokens To Users");
        }
    }
    
    /**
     * @dev Function to revoke tokens from an address
     */
    function revokeTokensFromVestedUser(address _from, uint _amount) public onlyOwner {
        vestingVault.revokeTokens(_from, _amount);
        emit RevokeTokens(_from, _amount);
    }

    /**
     * @dev Function to get back Ownership of RewardToken Contract after minting finished
     */
    function transferBackTokenOwnership() public onlyOwner {
        token.transferOwnership(owner);
    }

    /**
     * @dev Function to get back Ownership of VestingVault Contract after minting finished
     */
    function transferBackVestingVaultOwnership() public onlyOwner {
        vestingVault.transferOwnership(owner);
    }

    /**
     * @dev Function to finish token distribution
     */
    function finalize() public onlyOwner {
        token.finishMinting();
        finished = true;
        emit MintingFinished();
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"frozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"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":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":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_burnAmount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[],"name":"unfreeze","outputs":[],"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":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"startMinting","outputs":[{"name":"","type":"bool"}],"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":"_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":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"revoke","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"}],"name":"NewToken","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_burner","type":"address"},{"indexed":false,"name":"_burnedAmount","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[],"name":"MintStarted","type":"event"},{"anonymous":false,"inputs":[],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526002805461ffff191661010017905534801561001f57600080fd5b5060008054600160a060020a0319163317815560405130917f0f53e2a811b6fd2d6cd965fd6c27b44fb924ca39f7a7f321115705c22366d62391a2611149806100696000396000f3fe608060405234801561001057600080fd5b506004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900480636a28f000116100e0578063a9059cbb11610099578063a9059cbb14610393578063d73dd623146103bf578063dd62ed3e146103eb578063eac449d914610419578063f2fde38b14610445578063fb86a4041461046b5761016a565b80636a28f0001461032957806370a08231146103315780637d64bcb4146103575780638da5cb5b1461035f57806395d89b41146103835780639a65ea261461038b5761016a565b806323b872dd1161013257806323b872dd14610256578063313ce5671461028c57806340c10f19146102aa57806342966c68146102d657806362a5af3b146102f557806366188463146102fd5761016a565b8063054f7d9c1461016f57806305d2035b1461018b57806306fdde0314610193578063095ea7b31461021057806318160ddd1461023c575b600080fd5b610177610473565b604080519115158252519081900360200190f35b610177610481565b61019b61048a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d55781810151838201526020016101bd565b50505050905090810190601f1680156102025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101776004803603604081101561022657600080fd5b50600160a060020a0381351690602001356104c1565b610244610527565b60408051918252519081900360200190f35b6101776004803603606081101561026c57600080fd5b50600160a060020a0381358116916020810135909116906040013561052d565b610294610791565b6040805160ff9092168252519081900360200190f35b610177600480360360408110156102c057600080fd5b50600160a060020a038135169060200135610796565b6102f3600480360360208110156102ec57600080fd5b503561091f565b005b6102f36109ba565b6101776004803603604081101561031357600080fd5b50600160a060020a038135169060200135610a20565b6102f3610b10565b6102446004803603602081101561034757600080fd5b5035600160a060020a0316610b73565b610177610b8e565b610367610bf2565b60408051600160a060020a039092168252519081900360200190f35b61019b610c01565b610177610c38565b610177600480360360408110156103a957600080fd5b50600160a060020a038135169060200135610c9a565b610177600480360360408110156103d557600080fd5b50600160a060020a038135169060200135610e5b565b6102446004803603604081101561040157600080fd5b50600160a060020a0381358116916020013516610ef4565b6101776004803603604081101561042f57600080fd5b50600160a060020a038135169060200135610f1f565b6102f36004803603602081101561045b57600080fd5b5035600160a060020a031661102b565b6102446110bf565b600254610100900460ff1681565b60025460ff1681565b60408051808201909152600c81527f5265776172647320436173680000000000000000000000000000000000000000602082015281565b336000818152600460209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015481565b60008054600160a060020a031633148061054f5750600254610100900460ff16155b15156105a5576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e7320636f756c64206e6f74206265207472616e7366657272656400604482015290519081900360640190fd5b600160a060020a0383161515610605576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b600160a060020a038416600090815260036020526040902054821115610675576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742042616c616e6365000000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526004602090815260408083203384529091529020548211156106f0576040805160e560020a62461bcd02815260206004820152601660248201527f496e73756666696369656e7420416c6c6f77616e636500000000000000000000604482015290519081900360640190fd5b600160a060020a038085166000908152600360205260408082208054869003905591851681522054610728908363ffffffff6110cf16565b600160a060020a03848116600081815260036020908152604080832095909555928816808252600484528482203383528452908490208054879003905583518681529351919390926000805160206110fe83398151915292918290030190a35060019392505050565b601281565b60008054600160a060020a031633146107ae57600080fd5b60025460ff1615610809576040805160e560020a62461bcd02815260206004820152601c60248201527f4d696e74696e672077617320616c72656164792066696e697368656400000000604482015290519081900360640190fd5b600160a060020a0383161515610869576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b6001546b019d971e4fe8401e740000009061088a908463ffffffff6110cf16565b111561089557600080fd5b6001546108a8908363ffffffff6110cf16565b600155600160a060020a0383166000908152600360205260409020546108d4908363ffffffff6110cf16565b600160a060020a03841660008181526003602090815260408083209490945583518681529351929391926000805160206110fe8339815191529281900390910190a350600192915050565b3360009081526003602052604090205481111561093b57600080fd5b3360009081526003602052604090205461095b908263ffffffff6110e816565b3360009081526003602052604090205560015461097e908263ffffffff6110e816565b60015560408051828152905133917f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df7919081900360200190a250565b600054600160a060020a031633146109d157600080fd5b600254610100900460ff16156109e657600080fd5b6002805461ff0019166101001790556040517f615acbaede366d76a8b8cb2a9ada6a71495f0786513d71aa97aaf0c3910b78de90600090a1565b336000908152600460209081526040808320600160a060020a038616845290915281205480831115610a7557336000908152600460209081526040808320600160a060020a0388168452909152812055610aaa565b610a85818463ffffffff6110e816565b336000908152600460209081526040808320600160a060020a03891684529091529020555b336000818152600460209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600054600160a060020a03163314610b2757600080fd5b600254610100900460ff161515610b3d57600080fd5b6002805461ff00191690556040517f2f05ba71d0df11bf5fa562a6569d70c4f80da84284badbe015ce1456063d0ded90600090a1565b600160a060020a031660009081526003602052604090205490565b60008054600160a060020a03163314610ba657600080fd5b60025460ff1615610bb657600080fd5b6002805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600054600160a060020a031681565b60408051808201909152600481527f5257524400000000000000000000000000000000000000000000000000000000602082015281565b60008054600160a060020a03163314610c5057600080fd5b60025460ff161515610c6157600080fd5b6002805460ff191690556040517f452a344f03203071e1daf66e007976c85cb2380deabf1c91f3c4fb1fca41204990600090a150600190565b60008054600160a060020a0316331480610cbc5750600254610100900460ff16155b1515610d12576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e7320636f756c64206e6f74206265207472616e7366657272656400604482015290519081900360640190fd5b600160a060020a0383161515610d72576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b33600090815260036020526040902054821115610dd9576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b3360009081526003602052604080822080548590039055600160a060020a0385168252902054610e0f908363ffffffff6110cf16565b600160a060020a0384166000818152600360209081526040918290209390935580518581529051919233926000805160206110fe8339815191529281900390910190a350600192915050565b336000908152600460209081526040808320600160a060020a0386168452909152812054610e8f908363ffffffff6110cf16565b336000818152600460209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b60008054600160a060020a03163314610f3757600080fd5b600160a060020a038316600090815260036020526040902054821115610f5c57600080fd5b600160a060020a038316600090815260036020526040902054610f85908363ffffffff6110e816565b600160a060020a038416600090815260036020526040902055600154610fb1908363ffffffff6110e816565b600155604080518381529051600160a060020a038516917fec9ab91322523c899ede7830ec9bfc992b5981cdcc27b91162fb23de5791117b919081900360200190a2604080518381529051600091600160a060020a038616916000805160206110fe8339815191529181900360200190a350600192915050565b600054600160a060020a0316331461104257600080fd5b600160a060020a038116151561105757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6b019d971e4fe8401e7400000081565b6000828201838110156110e157600080fd5b9392505050565b6000828211156110f757600080fd5b5090039056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058207c29754f565560b9c68a0b6d119f6a28aee7abb0dd9a340e697911355e778d7e0029

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900480636a28f000116100e0578063a9059cbb11610099578063a9059cbb14610393578063d73dd623146103bf578063dd62ed3e146103eb578063eac449d914610419578063f2fde38b14610445578063fb86a4041461046b5761016a565b80636a28f0001461032957806370a08231146103315780637d64bcb4146103575780638da5cb5b1461035f57806395d89b41146103835780639a65ea261461038b5761016a565b806323b872dd1161013257806323b872dd14610256578063313ce5671461028c57806340c10f19146102aa57806342966c68146102d657806362a5af3b146102f557806366188463146102fd5761016a565b8063054f7d9c1461016f57806305d2035b1461018b57806306fdde0314610193578063095ea7b31461021057806318160ddd1461023c575b600080fd5b610177610473565b604080519115158252519081900360200190f35b610177610481565b61019b61048a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d55781810151838201526020016101bd565b50505050905090810190601f1680156102025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101776004803603604081101561022657600080fd5b50600160a060020a0381351690602001356104c1565b610244610527565b60408051918252519081900360200190f35b6101776004803603606081101561026c57600080fd5b50600160a060020a0381358116916020810135909116906040013561052d565b610294610791565b6040805160ff9092168252519081900360200190f35b610177600480360360408110156102c057600080fd5b50600160a060020a038135169060200135610796565b6102f3600480360360208110156102ec57600080fd5b503561091f565b005b6102f36109ba565b6101776004803603604081101561031357600080fd5b50600160a060020a038135169060200135610a20565b6102f3610b10565b6102446004803603602081101561034757600080fd5b5035600160a060020a0316610b73565b610177610b8e565b610367610bf2565b60408051600160a060020a039092168252519081900360200190f35b61019b610c01565b610177610c38565b610177600480360360408110156103a957600080fd5b50600160a060020a038135169060200135610c9a565b610177600480360360408110156103d557600080fd5b50600160a060020a038135169060200135610e5b565b6102446004803603604081101561040157600080fd5b50600160a060020a0381358116916020013516610ef4565b6101776004803603604081101561042f57600080fd5b50600160a060020a038135169060200135610f1f565b6102f36004803603602081101561045b57600080fd5b5035600160a060020a031661102b565b6102446110bf565b600254610100900460ff1681565b60025460ff1681565b60408051808201909152600c81527f5265776172647320436173680000000000000000000000000000000000000000602082015281565b336000818152600460209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015481565b60008054600160a060020a031633148061054f5750600254610100900460ff16155b15156105a5576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e7320636f756c64206e6f74206265207472616e7366657272656400604482015290519081900360640190fd5b600160a060020a0383161515610605576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b600160a060020a038416600090815260036020526040902054821115610675576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742042616c616e6365000000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526004602090815260408083203384529091529020548211156106f0576040805160e560020a62461bcd02815260206004820152601660248201527f496e73756666696369656e7420416c6c6f77616e636500000000000000000000604482015290519081900360640190fd5b600160a060020a038085166000908152600360205260408082208054869003905591851681522054610728908363ffffffff6110cf16565b600160a060020a03848116600081815260036020908152604080832095909555928816808252600484528482203383528452908490208054879003905583518681529351919390926000805160206110fe83398151915292918290030190a35060019392505050565b601281565b60008054600160a060020a031633146107ae57600080fd5b60025460ff1615610809576040805160e560020a62461bcd02815260206004820152601c60248201527f4d696e74696e672077617320616c72656164792066696e697368656400000000604482015290519081900360640190fd5b600160a060020a0383161515610869576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b6001546b019d971e4fe8401e740000009061088a908463ffffffff6110cf16565b111561089557600080fd5b6001546108a8908363ffffffff6110cf16565b600155600160a060020a0383166000908152600360205260409020546108d4908363ffffffff6110cf16565b600160a060020a03841660008181526003602090815260408083209490945583518681529351929391926000805160206110fe8339815191529281900390910190a350600192915050565b3360009081526003602052604090205481111561093b57600080fd5b3360009081526003602052604090205461095b908263ffffffff6110e816565b3360009081526003602052604090205560015461097e908263ffffffff6110e816565b60015560408051828152905133917f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df7919081900360200190a250565b600054600160a060020a031633146109d157600080fd5b600254610100900460ff16156109e657600080fd5b6002805461ff0019166101001790556040517f615acbaede366d76a8b8cb2a9ada6a71495f0786513d71aa97aaf0c3910b78de90600090a1565b336000908152600460209081526040808320600160a060020a038616845290915281205480831115610a7557336000908152600460209081526040808320600160a060020a0388168452909152812055610aaa565b610a85818463ffffffff6110e816565b336000908152600460209081526040808320600160a060020a03891684529091529020555b336000818152600460209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600054600160a060020a03163314610b2757600080fd5b600254610100900460ff161515610b3d57600080fd5b6002805461ff00191690556040517f2f05ba71d0df11bf5fa562a6569d70c4f80da84284badbe015ce1456063d0ded90600090a1565b600160a060020a031660009081526003602052604090205490565b60008054600160a060020a03163314610ba657600080fd5b60025460ff1615610bb657600080fd5b6002805460ff191660011790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600054600160a060020a031681565b60408051808201909152600481527f5257524400000000000000000000000000000000000000000000000000000000602082015281565b60008054600160a060020a03163314610c5057600080fd5b60025460ff161515610c6157600080fd5b6002805460ff191690556040517f452a344f03203071e1daf66e007976c85cb2380deabf1c91f3c4fb1fca41204990600090a150600190565b60008054600160a060020a0316331480610cbc5750600254610100900460ff16155b1515610d12576040805160e560020a62461bcd02815260206004820152601f60248201527f546f6b656e7320636f756c64206e6f74206265207472616e7366657272656400604482015290519081900360640190fd5b600160a060020a0383161515610d72576040805160e560020a62461bcd02815260206004820152601a60248201527f416464726573732073686f756c64206e6f74206265207a65726f000000000000604482015290519081900360640190fd5b33600090815260036020526040902054821115610dd9576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b3360009081526003602052604080822080548590039055600160a060020a0385168252902054610e0f908363ffffffff6110cf16565b600160a060020a0384166000818152600360209081526040918290209390935580518581529051919233926000805160206110fe8339815191529281900390910190a350600192915050565b336000908152600460209081526040808320600160a060020a0386168452909152812054610e8f908363ffffffff6110cf16565b336000818152600460209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b60008054600160a060020a03163314610f3757600080fd5b600160a060020a038316600090815260036020526040902054821115610f5c57600080fd5b600160a060020a038316600090815260036020526040902054610f85908363ffffffff6110e816565b600160a060020a038416600090815260036020526040902055600154610fb1908363ffffffff6110e816565b600155604080518381529051600160a060020a038516917fec9ab91322523c899ede7830ec9bfc992b5981cdcc27b91162fb23de5791117b919081900360200190a2604080518381529051600091600160a060020a038616916000805160206110fe8339815191529181900360200190a350600192915050565b600054600160a060020a0316331461104257600080fd5b600160a060020a038116151561105757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6b019d971e4fe8401e7400000081565b6000828201838110156110e157600080fd5b9392505050565b6000828211156110f757600080fd5b5090039056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058207c29754f565560b9c68a0b6d119f6a28aee7abb0dd9a340e697911355e778d7e0029

Deployed Bytecode Sourcemap

2930:8722:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2930:8722:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;3296:35;;;:::i;3047:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3047:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7707:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7707:206:0;;;;;;;;:::i;3261:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;6476:574;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6476:574:0;;;;;;;;;;;;;;;;;:::i;3098:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4500:390;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4500:390:0;;;;;;;;:::i;10323:275::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10323:275:0;;:::i;:::-;;11353:118;;;:::i;9401:458::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9401:458:0;;;;;;;;:::i;11527:122::-;;;:::i;10084:115::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10084:115:0;-1:-1:-1;;;;;10084:115:0;;:::i;5020:186::-;;;:::i;245:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;245:20:0;;;;;;;;;;;;;;3002:38;;;:::i;5336:184::-;;;:::i;5693:486::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5693:486:0;;;;;;;;:::i;8660:288::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8660:288:0;;;;;;;;:::i;8254:144::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8254:144:0;;;;;;;;;;:::i;10769:531::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10769:531:0;;;;;;;;:::i;903:192::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;903:192:0;-1:-1:-1;;;;;903:192:0;;:::i;3142:54::-;;;:::i;3338:25::-;;;;;;;;;:::o;3296:35::-;;;;;;:::o;3047:44::-;;;;;;;;;;;;;;;;;;;:::o;7707:206::-;7799:10;7774:4;7791:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;7791:29:0;;;;;;;;;;;:38;;;7845;;;;;;;7774:4;;7791:29;;7799:10;;7845:38;;;;;;;;-1:-1:-1;7901:4:0;7707:206;;;;:::o;3261:26::-;;;;:::o;6476:574::-;6570:4;4093:5;;-1:-1:-1;;;;;4093:5:0;4079:10;:19;;:30;;-1:-1:-1;4103:6:0;;;;;;;4102:7;4079:30;4071:74;;;;;;;-1:-1:-1;;;;;4071:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6595:17:0;;;;6587:56;;;;;-1:-1:-1;;;;;6587:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6672:15:0;;;;;;:8;:15;;;;;;6662:25;;;6654:58;;;;;-1:-1:-1;;;;;6654:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6741:14:0;;;;;;:7;:14;;;;;;;;6756:10;6741:26;;;;;;;;6731:36;;;6723:71;;;;;-1:-1:-1;;;;;6723:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6825:15:0;;;;;;;:8;:15;;;;;;;;:24;;;6807:42;;6876:13;;;;;;;:25;;6843:6;6876:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;6860:13:0;;;;;;;:8;:13;;;;;;;;:41;;;;6941:14;;;;;;:7;:14;;;;;6956:10;6941:26;;;;;;;;;;:35;;;6912:64;;6992:28;;;;;;;6860:13;;6941:14;;-1:-1:-1;;;;;;;;;;;6992:28:0;;;;;;;;-1:-1:-1;7038:4:0;6476:574;;;;;:::o;3098:35::-;3131:2;3098:35;:::o;4500:390::-;4578:4;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;3961:15;;;;3960:16;3952:57;;;;;-1:-1:-1;;;;;3952:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4603:17:0;;;;4595:56;;;;;-1:-1:-1;;;;;4595:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4670:11;;3176:20;;4670:24;;4686:7;4670:24;:15;:24;:::i;:::-;:35;;4662:44;;;;;;4733:11;;:24;;4749:7;4733:24;:15;:24;:::i;:::-;4719:11;:38;-1:-1:-1;;;;;4784:13:0;;;;;;:8;:13;;;;;;:26;;4802:7;4784:26;:17;:26;:::i;:::-;-1:-1:-1;;;;;4768:13:0;;;;;;:8;:13;;;;;;;;:42;;;;4826:34;;;;;;;4768:13;;;;-1:-1:-1;;;;;;;;;;;4826:34:0;;;;;;;;;-1:-1:-1;4878:4:0;4500:390;;;;:::o;10323:275::-;10405:10;10396:20;;;;:8;:20;;;;;;10381:35;;;10373:44;;;;;;10462:10;10453:20;;;;:8;:20;;;;;;:37;;10478:11;10453:37;:24;:37;:::i;:::-;10439:10;10430:20;;;;:8;:20;;;;;:60;10515:11;;:28;;10531:11;10515:28;:15;:28;:::i;:::-;10501:11;:42;10559:31;;;;;;;;10566:10;;10559:31;;;;;;;;;;10323:275;:::o;11353:118::-;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;11408:6;;;;;;;11407:7;11399:16;;;;;;11426:6;:13;;-1:-1:-1;;11426:13:0;;;;;11455:8;;;;11426:13;;11455:8;11353:118::o;9401:458::-;9533:10;9484:12;9525:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9525:29:0;;;;;;;;;;9569:27;;;9565:188;;;9621:10;9645:1;9613:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9613:29:0;;;;;;;;;:33;9565:188;;;9711:30;:8;9724:16;9711:30;:12;:30;:::i;:::-;9687:10;9679:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9679:29:0;;;;;;;;;:62;9565:188;9777:10;9799:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9768:61:0;;9799:29;;;;;;;;;;;9768:61;;;;;;;;;9777:10;9768:61;;;;;;;;;;;-1:-1:-1;9847:4:0;;9401:458;-1:-1:-1;;;9401:458:0:o;11527:122::-;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;11583:6;;;;;;;11575:15;;;;;;;;11601:6;:14;;-1:-1:-1;;11601:14:0;;;11631:10;;;;11610:5;;11631:10;11527:122::o;10084:115::-;-1:-1:-1;;;;;10175:16:0;10140:15;10175:16;;;:8;:16;;;;;;;10084:115::o;5020:186::-;5071:4;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;5097:15;;;;5096:16;5088:25;;;;;;5124:15;:22;;-1:-1:-1;;5124:22:0;5142:4;5124:22;;;5162:14;;;;5124:15;;5162:14;-1:-1:-1;5194:4:0;5020:186;:::o;245:20::-;;;-1:-1:-1;;;;;245:20:0;;:::o;3002:38::-;;;;;;;;;;;;;;;;;;;:::o;5336:184::-;5386:4;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;5411:15;;;;5403:24;;;;;;;;5438:15;:23;;-1:-1:-1;;5438:23:0;;;5477:13;;;;5456:5;;5477:13;-1:-1:-1;5508:4:0;5336:184;:::o;5693:486::-;5768:4;4093:5;;-1:-1:-1;;;;;4093:5:0;4079:10;:19;;:30;;-1:-1:-1;4103:6:0;;;;;;;4102:7;4079:30;4071:74;;;;;;;-1:-1:-1;;;;;4071:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5793:17:0;;;;5785:56;;;;;-1:-1:-1;;;;;5785:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5879:10;5870:20;;;;:8;:20;;;;;;5860:30;;;5852:63;;;;;-1:-1:-1;;;;;5852:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6028:10;6019:20;;;;:8;:20;;;;;;;;:29;;;5996:52;;-1:-1:-1;;;;;6075:13:0;;;;;;;:25;;6042:6;6075:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;6059:13:0;;;;;;:8;:13;;;;;;;;;:41;;;;6116:33;;;;;;;6059:13;;6125:10;;-1:-1:-1;;;;;;;;;;;6116:33:0;;;;;;;;;-1:-1:-1;6167:4:0;5693:486;;;;:::o;8660:288::-;8803:10;8738:12;8795:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;8795:29:0;;;;;;;;;;:46;;8829:11;8795:46;:33;:46;:::i;:::-;8771:10;8763:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;8763:29:0;;;;;;;;;;;;:78;;;8857:61;;;;;;8763:29;;8857:61;;;;;;;;;;;-1:-1:-1;8936:4:0;8660:288;;;;:::o;8254:144::-;-1:-1:-1;;;;;8365:15:0;;;8328:17;8365:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;8254:144::o;10769:531::-;10842:4;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;-1:-1:-1;;;;;10877:15:0;;;;;;:8;:15;;;;;;10867:25;;;10859:34;;;;;;-1:-1:-1;;;;;11105:15:0;;;;;;:8;:15;;;;;;:27;;11125:6;11105:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;11087:15:0;;;;;;:8;:15;;;;;:45;11157:11;;:23;;11173:6;11157:23;:15;:23;:::i;:::-;11143:11;:37;11198:21;;;;;;;;-1:-1:-1;;;;;11198:21:0;;;;;;;;;;;;;11235:35;;;;;;;;11259:1;;-1:-1:-1;;;;;11235:35:0;;;-1:-1:-1;;;;;;;;;;;11235:35:0;;;;;;;;-1:-1:-1;11288:4:0;10769:531;;;;:::o;903:192::-;700:5;;-1:-1:-1;;;;;700:5:0;686:10;:19;678:28;;;;;;-1:-1:-1;;;;;984:22:0;;;;976:31;;;;;;1044:5;;;1023:37;;-1:-1:-1;;;;;1023:37:0;;;;1044:5;;;1023:37;;;1071:5;:16;;-1:-1:-1;;1071:16:0;-1:-1:-1;;;;;1071:16:0;;;;;;;;;;903:192::o;3142:54::-;3176:20;3142:54;:::o;2419:141::-;2479:7;2507;;;2529;;;;2521:16;;;;;;2553:1;2419:141;-1:-1:-1;;;2419:141:0:o;2209:142::-;2269:7;2293:8;;;;2285:17;;;;;;-1:-1:-1;2321:7:0;;;2209:142::o

Swarm Source

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