ETH Price: $2,735.54 (+2.49%)

Token

Remechain Presale Token (iRMC)
 

Overview

Max Total Supply

6,350,000 iRMC

Holders

0

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
PreIco

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.18;

contract AbstractToken {
    // This is not an abstract function, because solc won't recognize generated getter functions for public variables as functions
    function totalSupply() public constant returns (uint256) {}
    function balanceOf(address owner) public constant returns (uint256 balance);
    function transfer(address to, uint256 value) public returns (bool success);
    function transferFrom(address from, address to, uint256 value) public returns (bool success);
    function approve(address spender, uint256 value) public returns (bool success);
    function allowance(address owner, address spender) public constant returns (uint256 remaining);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Issuance(address indexed to, uint256 value);
}
/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
contract SafeMath {
  function mul(uint256 a, uint256 b) constant internal returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) constant internal returns (uint256) {
    assert(b != 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

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

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

  function mulByFraction(uint256 number, uint256 numerator, uint256 denominator) internal returns (uint256) {
      return div(mul(number, numerator), denominator);
  }
}

contract PreIco is SafeMath {
    /*
     * PreIco meta data
     */
    string public constant name = "Remechain Presale Token";
    string public constant symbol = "iRMC";
    uint public constant decimals = 18;

    // addresses of managers
    address public manager;
    address public reserveManager;
    // addresses of escrows
    address public escrow;
    address public reserveEscrow;

    // BASE = 10^18
    uint constant BASE = 1000000000000000000;

    // amount of supplied tokens
    uint public tokensSupplied = 0;
    // amount of supplied bounty reward
    uint public bountySupplied = 0;
    // Soft capacity = 6250 ETH
    uint public constant SOFT_CAPACITY = 2000000 * BASE;
    // Hard capacity = 18750 ETH
    uint public constant TOKENS_SUPPLY = 6000000 * BASE;
    // Amount of bounty reward
    uint public constant BOUNTY_SUPPLY = 350000 * BASE;
    // Total supply
    uint public constant totalSupply = TOKENS_SUPPLY + BOUNTY_SUPPLY;

    // 1 RMC = 0.003125 ETH for  600 000 000 RMC

    uint public constant TOKEN_PRICE = 3125000000000000;
    uint tokenAmount1 = 6000000 * BASE;

    uint tokenPriceMultiply1 = 1;
    uint tokenPriceDivide1 = 1;

    uint[] public tokenPriceMultiplies;
    uint[] public tokenPriceDivides;
    uint[] public tokenAmounts;

    // ETH balances of accounts
    mapping(address => uint) public ethBalances;
    uint[] public prices;
    uint[] public amounts;

    mapping(address => uint) private balances;

    // 2018.02.25 17:00 MSK
    uint public constant defaultDeadline = 1519567200;
    uint public deadline = defaultDeadline;

    // Is ICO frozen
    bool public isIcoStopped = false;

    // Addresses of allowed tokens for buying
    address[] public allowedTokens;
    // Amount of token
    mapping(address => uint) public tokenAmount;
    // Price of current token amount
    mapping(address => uint) public tokenPrice;

    // Full users list
    address[] public usersList;
    mapping(address => bool) isUserInList;
    // Number of users that have returned their money
    uint numberOfUsersReturned = 0;

    // user => token[]
    mapping(address => address[]) public userTokens;
    //  user => token => amount
    mapping(address => mapping(address => uint)) public userTokensValues;

    /*
     * Events
     */

    event BuyTokens(address indexed _user, uint _ethValue, uint _boughtTokens);
    event BuyTokensWithTokens(address indexed _user, address indexed _token, uint _tokenValue, uint _boughtTokens);
    event GiveReward(address indexed _to, uint _value);

    event IcoStoppedManually();
    event IcoRunnedManually();

    event WithdrawEther(address indexed _escrow, uint _ethValue);
    event WithdrawToken(address indexed _escrow, address indexed _token, uint _value);
    event ReturnEthersFor(address indexed _user, uint _value);
    event ReturnTokensFor(address indexed _user, address indexed _token, uint _value);

    event AddToken(address indexed _token, uint _amount, uint _price);
    event RemoveToken(address indexed _token);

    event MoveTokens(address indexed _from, address indexed _to, uint _value);

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

    /*
     * Modifiers
     */

    modifier onlyManager {
        assert(msg.sender == manager || msg.sender == reserveManager);
        _;
    }
    modifier onlyManagerOrContract {
        assert(msg.sender == manager || msg.sender == reserveManager || msg.sender == address(this));
        _;
    }
    modifier IcoIsActive {
        assert(isIcoActive());
        _;
    }


    /// @dev Constructor of PreIco.
    /// @param _manager Address of manager
    /// @param _reserveManager Address of reserve manager
    /// @param _escrow Address of escrow
    /// @param _reserveEscrow Address of reserve escrow
    /// @param _deadline ICO deadline timestamp. If is 0, sets 1515679200
    function PreIco(address _manager, address _reserveManager, address _escrow, address _reserveEscrow, uint _deadline) public {
        assert(_manager != 0x0);
        assert(_reserveManager != 0x0);
        assert(_escrow != 0x0);
        assert(_reserveEscrow != 0x0);

        manager = _manager;
        reserveManager = _reserveManager;
        escrow = _escrow;
        reserveEscrow = _reserveEscrow;

        if (_deadline != 0) {
            deadline = _deadline;
        }
        tokenPriceMultiplies.push(tokenPriceMultiply1);
        tokenPriceDivides.push(tokenPriceDivide1);
        tokenAmounts.push(tokenAmount1);
    }

    /// @dev Returns token balance of user. 1 token = 1/10^18 RMC
    /// @param _user Address of user
    function balanceOf(address _user) public returns(uint balance) {
        return balances[_user];
    }

    /// @dev Returns, is ICO enabled
    function isIcoActive() public returns(bool isActive) {
        return !isIcoStopped && now < deadline;
    }

    /// @dev Returns, is SoftCap reached
    function isIcoSuccessful() public returns(bool isSuccessful) {
        return tokensSupplied >= SOFT_CAPACITY;
    }

    /// @dev Calculates number of tokens RMC for buying with custom price of token
    /// @param _amountOfToken Amount of RMC token
    /// @param _priceAmountOfToken Price of amount of RMC
    /// @param _value Amount of custom token
    function getTokensAmount(uint _amountOfToken, uint _priceAmountOfToken,  uint _value) private returns(uint tokensToBuy) {
        uint currentStep;
        uint tokensRemoved = tokensSupplied;
        for (currentStep = 0; currentStep < tokenAmounts.length; currentStep++) {
            if (tokensRemoved >= tokenAmounts[currentStep]) {
                tokensRemoved -= tokenAmounts[currentStep];
            } else {
                break;
            }
        }
        assert(currentStep < tokenAmounts.length);

        uint result = 0;

        for (; currentStep <= tokenAmounts.length; currentStep++) {
            assert(currentStep < tokenAmounts.length);

            uint tokenOnStepLeft = tokenAmounts[currentStep] - tokensRemoved;
            tokensRemoved = 0;
            uint howManyTokensCanBuy = _value
                    * _amountOfToken / _priceAmountOfToken
                    * tokenPriceDivides[currentStep] / tokenPriceMultiplies[currentStep];

            if (howManyTokensCanBuy > tokenOnStepLeft) {
                result = add(result, tokenOnStepLeft);
                uint spent = tokenOnStepLeft
                    * _priceAmountOfToken / _amountOfToken
                    * tokenPriceMultiplies[currentStep] / tokenPriceDivides[currentStep];
                if (_value <= spent) {
                    break;
                }
                _value -= spent;
                tokensRemoved = 0;
            } else {
                result = add(result, howManyTokensCanBuy);
                break;
            }
        }

        return result;
    }

    /// @dev Calculates number of tokens RMC for buying with ETH
    /// @param _value Amount of ETH token
    function getTokensAmountWithEth(uint _value) private returns(uint tokensToBuy) {
        return getTokensAmount(BASE, TOKEN_PRICE, _value);
    }

    /// @dev Calculates number of tokens RMC for buying with ERC-20 token
    /// @param _token Address of ERC-20 token
    /// @param _tokenValue Amount of ETH token
    function getTokensAmountByTokens(address _token, uint _tokenValue) private returns(uint tokensToBuy) {
        assert(tokenPrice[_token] > 0);
        return getTokensAmount(tokenPrice[_token], tokenAmount[_token], _tokenValue);
    }

    /// @dev Solds tokens for user by ETH
    /// @param _user Address of user which buys token
    /// @param _value Amount of ETH. 1 _value = 1/10^18 ETH
    function buyTokens(address _user, uint _value) private IcoIsActive {
        uint boughtTokens = getTokensAmountWithEth(_value);
        burnTokens(boughtTokens);

        balances[_user] = add(balances[_user], boughtTokens);
        addUserToList(_user);
        BuyTokens(_user, _value, boughtTokens);
    }

    /// @dev Makes ERC-20 token sellable
    /// @param _token Address of ERC-20 token
    /// @param _amount Amount of current token
    /// @param _price Price of _amount of token
    function addToken(address _token, uint _amount, uint _price) onlyManager public {
        assert(_token != 0x0);
        assert(_amount > 0);
        assert(_price > 0);

        bool isNewToken = true;
        for (uint i = 0; i < allowedTokens.length; i++) {
            if (allowedTokens[i] == _token) {
                isNewToken = false;
                break;
            }
        }
        if (isNewToken) {
            allowedTokens.push(_token);
        }

        tokenPrice[_token] = _price;
        tokenAmount[_token] = _amount;
    }

    /// @dev Makes ERC-20 token not sellable
    /// @param _token Address of ERC-20 token
    function removeToken(address _token) onlyManager public {
        for (uint i = 0; i < allowedTokens.length; i++) {
            if (_token == allowedTokens[i]) {
                if (i < allowedTokens.length - 1) {
                    allowedTokens[i] = allowedTokens[allowedTokens.length - 1];
                }
                allowedTokens[allowedTokens.length - 1] = 0x0;
                allowedTokens.length--;
                break;
            }
        }

        tokenPrice[_token] = 0;
        tokenAmount[_token] = 0;
    }

    /// @dev add user to usersList
    /// @param _user Address of user
    function addUserToList(address _user) private {
        if (!isUserInList[_user]) {
            isUserInList[_user] = true;
            usersList.push(_user);
        }
    }

    /// @dev Makes amount of tokens not purchasable
    /// @param _amount Amount of RMC tokens
    function burnTokens(uint _amount) private {
        assert(add(tokensSupplied, _amount) <= TOKENS_SUPPLY);
        tokensSupplied = add(tokensSupplied, _amount);
    }

    /// @dev Takes ERC-20 tokens approved by user for using and gives him RMC tokens
    /// @param _token Address of ERC-20 token
    function buyWithTokens(address _token) public {
        buyWithTokensBy(msg.sender, _token);
    }

    /// @dev Takes ERC-20 tokens approved by user for using and gives him RMC tokens. Can be called by anyone
    /// @param _user Address of user
    /// @param _token Address of ERC-20 token
    function buyWithTokensBy(address _user, address _token) public IcoIsActive {
        // Checks whether the token is allowed
        assert(tokenPrice[_token] > 0);

        AbstractToken token = AbstractToken(_token);
        uint tokensToSend = token.allowance(_user, address(this));
        assert(tokensToSend > 0);

        uint boughtTokens = getTokensAmountByTokens(_token, tokensToSend);
        burnTokens(boughtTokens);
        balances[_user] = add(balances[_user], boughtTokens);

        uint prevBalance = token.balanceOf(address(this));
        assert(token.transferFrom(_user, address(this), tokensToSend));
        assert(token.balanceOf(address(this)) - prevBalance == tokensToSend);

        userTokensValues[_user][_token] = add(userTokensValues[_user][_token], tokensToSend);

        addTokenToUser(_user, _token);
        addUserToList(_user);
        BuyTokensWithTokens(_user, _token, tokensToSend, boughtTokens);
    }

    /// @dev Makes amount of tokens returnable for user. If _buyTokens equals true, buy tokens
    /// @param _user Address of user
    /// @param _token Address of ERC-20 token
    /// @param _tokenValue Amount of ERC-20 token
    /// @param _buyTokens If true, buys tokens for this sum
    function addTokensToReturn(address _user, address _token, uint _tokenValue, bool _buyTokens) public onlyManager {
        // Checks whether the token is allowed
        assert(tokenPrice[_token] > 0);

        if (_buyTokens) {
            uint boughtTokens = getTokensAmountByTokens(_token, _tokenValue);
            burnTokens(boughtTokens);
            balances[_user] = add(balances[_user], boughtTokens);
            BuyTokensWithTokens(_user, _token, _tokenValue, boughtTokens);
        }

        userTokensValues[_user][_token] = add(userTokensValues[_user][_token], _tokenValue);
        addTokenToUser(_user, _token);
        addUserToList(_user);
    }


    /// @dev Adds ERC-20 tokens to user's token list
    /// @param _user Address of user
    /// @param _token Address of ERC-20 token
    function addTokenToUser(address _user, address _token) private {
        for (uint i = 0; i < userTokens[_user].length; i++) {
            if (userTokens[_user][i] == _token) {
                return;
            }
        }
        userTokens[_user].push(_token);
    }

    /// @dev Returns ether and tokens to user. Can be called only if ICO is ended and SoftCap is not reached
    function returnFunds() public {
        assert(!isIcoSuccessful() && !isIcoActive());

        returnFundsFor(msg.sender);
    }

    /// @dev Moves tokens from one user to another. Can be called only by manager. This function added for users that send ether by stock exchanges
    function moveIcoTokens(address _from, address _to, uint _value) public onlyManager {
        balances[_from] = sub(balances[_from], _value);
        balances[_to] = add(balances[_to], _value);

        MoveTokens(_from, _to, _value);
    }

    /// @dev Returns ether and tokens to user. Can be called only by manager or contract
    /// @param _user Address of user
    function returnFundsFor(address _user) public onlyManagerOrContract returns(bool) {
        if (ethBalances[_user] > 0) {
            if (_user.send(ethBalances[_user])) {
                ReturnEthersFor(_user, ethBalances[_user]);
                ethBalances[_user] = 0;
            }
        }

        for (uint i = 0; i < userTokens[_user].length; i++) {
            address tokenAddress = userTokens[_user][i];
            uint userTokenValue = userTokensValues[_user][tokenAddress];
            if (userTokenValue > 0) {
                AbstractToken token = AbstractToken(tokenAddress);
                if (token.transfer(_user, userTokenValue)) {
                    ReturnTokensFor(_user, tokenAddress, userTokenValue);
                    userTokensValues[_user][tokenAddress] = 0;
                }
            }
        }

        balances[_user] = 0;
    }

    /// @dev Returns ether and tokens to list of users. Can be called only by manager
    /// @param _users Array of addresses of users
    function returnFundsForMultiple(address[] _users) public onlyManager {
        for (uint i = 0; i < _users.length; i++) {
            returnFundsFor(_users[i]);
        }
    }

    /// @dev Returns ether and tokens to 50 users. Can be called only by manager
    function returnFundsForAll() public onlyManager {
        assert(!isIcoActive() && !isIcoSuccessful());

        uint first = numberOfUsersReturned;
        uint last  = (first + 50 < usersList.length) ? first + 50 : usersList.length;

        for (uint i = first; i < last; i++) {
            returnFundsFor(usersList[i]);
        }

        numberOfUsersReturned = last;
    }

    /// @dev Withdraws ether and tokens to _escrow if SoftCap is reached
    /// @param _escrow Address of escrow
    function withdrawEtherTo(address _escrow) private {
        assert(isIcoSuccessful());

        if (this.balance > 0) {
            if (_escrow.send(this.balance)) {
                WithdrawEther(_escrow, this.balance);
            }
        }

        for (uint i = 0; i < allowedTokens.length; i++) {
            AbstractToken token = AbstractToken(allowedTokens[i]);
            uint tokenBalance = token.balanceOf(address(this));
            if (tokenBalance > 0) {
                if (token.transfer(_escrow, tokenBalance)) {
                    WithdrawToken(_escrow, address(token), tokenBalance);
                }
            }
        }
    }

    /// @dev Withdraw ether and tokens to escrow. Can be called only by manager
    function withdrawEther() public onlyManager {
        withdrawEtherTo(escrow);
    }

    /// @dev Withdraw ether and tokens to reserve escrow. Can be called only by manager
    function withdrawEtherToReserveEscrow() public onlyManager {
        withdrawEtherTo(reserveEscrow);
    }

    /// @dev Enables disabled ICO. Can be called only by manager
    function runIco() public onlyManager {
        assert(isIcoStopped);
        isIcoStopped = false;
        IcoRunnedManually();
    }

    /// @dev Disables ICO. Can be called only by manager
    function stopIco() public onlyManager {
        isIcoStopped = true;
        IcoStoppedManually();
    }

    /// @dev Fallback function. Buy RMC tokens on sending ether
    function () public payable {
        buyTokens(msg.sender, msg.value);
    }

    /// @dev Gives bounty reward to user. Can be called only by manager
    /// @param _to Address of user
    /// @param _amount Amount of bounty
    function giveReward(address _to, uint _amount) public onlyManager {
        assert(_to != 0x0);
        assert(_amount > 0);
        assert(add(bountySupplied, _amount) <= BOUNTY_SUPPLY);

        bountySupplied = add(bountySupplied, _amount);
        balances[_to] = add(balances[_to], _amount);

        GiveReward(_to, _amount);
    }

    /// Adds other ERC-20 functions
    function transfer(address _to, uint _value) public returns (bool success) {
        return false;
    }

    function transferFrom(address _from, address _to, uint _value) public returns (bool success) {
        return false;
    }

    function approve(address _spender, uint _value) public returns (bool success) {
        return false;
    }

    function allowance(address _owner, address _spender) public constant returns (uint remaining) {
        return 0;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"bountySupplied","outputs":[{"name":"","type":"uint256"}],"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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isIcoStopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"moveIcoTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenPriceDivides","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"userTokensValues","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"returnFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"isIcoActive","outputs":[{"name":"isActive","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"deadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_token","type":"address"},{"name":"_tokenValue","type":"uint256"},{"name":"_buyTokens","type":"bool"}],"name":"addTokensToReturn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SOFT_CAPACITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ethBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"amounts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"usersList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSupplied","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BOUNTY_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"runIco","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allowedTokens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"removeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopIco","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"defaultDeadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"returnFundsFor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"isIcoSuccessful","outputs":[{"name":"isSuccessful","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenPriceMultiplies","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenAmounts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveEscrow","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reserveManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"prices","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_users","type":"address[]"}],"name":"returnFundsForMultiple","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"returnFundsForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"giveReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"_token","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"addToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"buyWithTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"escrow","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKENS_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_token","type":"address"}],"name":"buyWithTokensBy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"userTokens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEtherToReserveEscrow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_manager","type":"address"},{"name":"_reserveManager","type":"address"},{"name":"_escrow","type":"address"},{"name":"_reserveEscrow","type":"address"},{"name":"_deadline","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"},{"indexed":false,"name":"_ethValue","type":"uint256"},{"indexed":false,"name":"_boughtTokens","type":"uint256"}],"name":"BuyTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"},{"indexed":true,"name":"_token","type":"address"},{"indexed":false,"name":"_tokenValue","type":"uint256"},{"indexed":false,"name":"_boughtTokens","type":"uint256"}],"name":"BuyTokensWithTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"GiveReward","type":"event"},{"anonymous":false,"inputs":[],"name":"IcoStoppedManually","type":"event"},{"anonymous":false,"inputs":[],"name":"IcoRunnedManually","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_escrow","type":"address"},{"indexed":false,"name":"_ethValue","type":"uint256"}],"name":"WithdrawEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_escrow","type":"address"},{"indexed":true,"name":"_token","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"WithdrawToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"ReturnEthersFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"},{"indexed":true,"name":"_token","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"ReturnTokensFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"AddToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"}],"name":"RemoveToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"MoveTokens","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"}]

60606040526000600481905560058190556a04f68ca6d8cd91c600000060065560016007819055600855635a92c1606010556011805460ff1916905560175534156200004a57600080fd5b60405160a080620022978339810160405280805191906020018051919060200180519190602001805191906020018051915050600160a060020a03851615156200009057fe5b600160a060020a0384161515620000a357fe5b600160a060020a0383161515620000b657fe5b600160a060020a0382161515620000c957fe5b60008054600160a060020a03808816600160a060020a031992831617909255600180548784169083161790556002805486841690831617905560038054928516929091169190911790558015620001205760108190555b60098054600181016200013483826200019b565b5060009182526020909120600754910155600a8054600181016200015983826200019b565b5060009182526020909120600854910155600b8054600181016200017e83826200019b565b506000918252602090912060065491015550620001eb9350505050565b815481835581811511620001c257600083815260209020620001c2918101908301620001c7565b505050565b620001e891905b80821115620001e45760008155600101620001ce565b5090565b90565b61209c80620001fb6000396000f30060606040526004361061024d5763ffffffff60e060020a60003504166306096931811461025957806306fdde031461027e578063095ea7b3146103085780631039cf3c1461033e57806311916ce714610351578063119cb2ff1461037957806318160ddd1461038f57806318d43f0d146103a25780631eb5ea2e146103c75780631fc27ef2146103da57806323b872dd146103ed57806329dcb0cf14610415578063313ce5671461042857806334b122cb1461043b57806337b475d4146104685780633cfba0e31461047b57806345f0a44f1461049a578063481c6a75146104b0578063502aa3b5146104df57806355c8c6fd146104f55780635d771933146105085780635daab2361461051b5780635e5f2e261461052e5780635fa7b5841461054457806370a08231146105635780637362377b146105825780637b274afc146105955780637b73c2ef146105a85780637dfbdf6d146105bb5780637f28c44f146105da57806384ba3f69146105ed57806395d89b411461060c57806397883d1f1461061f5780639ad280c014610635578063a9059cbb14610308578063a96b7f051461064b578063b12e14491461066a578063bb004abc1461067d578063bc31c1c114610690578063c474e70a146106a6578063ccdfcfa4146106f5578063ce8ae9f314610708578063d2d8cb671461072a578063dd62ed3e1461073d578063dee1f2af14610762578063e050491014610787578063e2fdcc17146107a6578063ec0a0b50146107b9578063edb1072e146107cc578063f9f411d8146107f1578063fcc648f614610813575b6102573334610826565b005b341561026457600080fd5b61026c6108da565b60405190815260200160405180910390f35b341561028957600080fd5b6102916108e0565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102cd5780820151838201526020016102b5565b50505050905090810190601f1680156102fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031357600080fd5b61032a600160a060020a0360043516602435610917565b604051901515815260200160405180910390f35b341561034957600080fd5b61032a61091f565b341561035c57600080fd5b610257600160a060020a0360043581169060243516604435610928565b341561038457600080fd5b61026c600435610a09565b341561039a57600080fd5b61026c610a28565b34156103ad57600080fd5b61026c600160a060020a0360043581169060243516610a37565b34156103d257600080fd5b610257610a54565b34156103e557600080fd5b61032a610a82565b34156103f857600080fd5b61032a600160a060020a0360043581169060243516604435610a9f565b341561042057600080fd5b61026c610aa8565b341561043357600080fd5b61026c610aae565b341561044657600080fd5b610257600160a060020a03600435811690602435166044356064351515610ab3565b341561047357600080fd5b61026c610c14565b341561048657600080fd5b61026c600160a060020a0360043516610c23565b34156104a557600080fd5b61026c600435610c35565b34156104bb57600080fd5b6104c3610c43565b604051600160a060020a03909116815260200160405180910390f35b34156104ea57600080fd5b6104c3600435610c52565b341561050057600080fd5b61026c610c7a565b341561051357600080fd5b61026c610c80565b341561052657600080fd5b610257610c8e565b341561053957600080fd5b6104c3600435610d07565b341561054f57600080fd5b610257600160a060020a0360043516610d15565b341561056e57600080fd5b61026c600160a060020a0360043516610e96565b341561058d57600080fd5b610257610eb1565b34156105a057600080fd5b610257610efb565b34156105b357600080fd5b61026c610f69565b34156105c657600080fd5b61032a600160a060020a0360043516610f71565b34156105e557600080fd5b61032a611229565b34156105f857600080fd5b61026c600160a060020a036004351661123e565b341561061757600080fd5b610291611250565b341561062a57600080fd5b61026c600435611287565b341561064057600080fd5b61026c600435611295565b341561065657600080fd5b61026c600160a060020a03600435166112a3565b341561067557600080fd5b6104c36112b5565b341561068857600080fd5b6104c36112c4565b341561069b57600080fd5b61026c6004356112d3565b34156106b157600080fd5b61025760046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506112e195505050505050565b341561070057600080fd5b61025761134d565b341561071357600080fd5b610257600160a060020a0360043516602435611410565b341561073557600080fd5b61026c611509565b341561074857600080fd5b61026c600160a060020a0360043581169060243516610917565b341561076d57600080fd5b610257600160a060020a0360043516602435604435611514565b341561079257600080fd5b610257600160a060020a036004351661163f565b34156107b157600080fd5b6104c3611649565b34156107c457600080fd5b61026c611658565b34156107d757600080fd5b610257600160a060020a0360043581169060243516611667565b34156107fc57600080fd5b6104c3600160a060020a03600435166024356119b0565b341561081e57600080fd5b6102576119e7565b6000610830610a82565b151561083857fe5b61084182611a2f565b905061084c81611a51565b600160a060020a0383166000908152600f602052604090205461086f9082611a85565b600160a060020a0384166000908152600f602052604090205561089183611a9b565b82600160a060020a03167f0a37b72bb67eee30e09084cf386f8a17817c57f620c3ab95fb25d6a20356ec77838360405191825260208201526040908101905180910390a2505050565b60055481565b60408051908101604052601781527f52656d65636861696e2050726573616c6520546f6b656e000000000000000000602082015281565b600092915050565b60115460ff1681565b60005433600160a060020a0390811691161480610953575060015433600160a060020a039081169116145b151561095b57fe5b600160a060020a0383166000908152600f602052604090205461097e9082611b2c565b600160a060020a038085166000908152600f602052604080822093909355908416815220546109ad9082611a85565b600160a060020a038084166000818152600f6020526040908190209390935591908516907fdc6ea828c5ab3d3595c27f8b64500252aa852dfa7fe1c7fb54e5a33c6f25cc2f9084905190815260200160405180910390a3505050565b600a805482908110610a1757fe5b600091825260209091200154905081565b6a0540aa3094621824c0000081565b601960209081526000928352604080842090915290825290205481565b610a5c611229565b158015610a6e5750610a6c610a82565b155b1515610a7657fe5b610a7f33610f71565b50565b60115460009060ff16158015610a99575060105442105b90505b90565b60009392505050565b60105481565b601281565b6000805433600160a060020a0390811691161480610adf575060015433600160a060020a039081169116145b1515610ae757fe5b600160a060020a03841660009081526014602052604081205411610b0757fe5b8115610ba457610b178484611b3e565b9050610b2281611a51565b600160a060020a0385166000908152600f6020526040902054610b459082611a85565b600160a060020a038087166000818152600f60205260409081902093909355908616917ffb402c262bfdc97ddc8d67e8e67070dfc65db4eab9b4e8e4159acc90c3e855d090869085905191825260208201526040908101905180910390a35b600160a060020a03808616600090815260196020908152604080832093881683529290522054610bd49084611a85565b600160a060020a03808716600090815260196020908152604080832093891683529290522055610c048585611b90565b610c0d85611a9b565b5050505050565b6a01a784379d99db4200000081565b600c6020526000908152604090205481565b600e805482908110610a1757fe5b600054600160a060020a031681565b6015805482908110610c6057fe5b600091825260209091200154600160a060020a0316905081565b60045481565b694a1d89bb94865ec0000081565b60005433600160a060020a0390811691161480610cb9575060015433600160a060020a039081169116145b1515610cc157fe5b60115460ff161515610ccf57fe5b6011805460ff191690557facf197b1f433a63ad09367de8cfc4c90aa5d0da8d52bff441d92ddbaa8ced9d260405160405180910390a1565b6012805482908110610c6057fe5b6000805433600160a060020a0390811691161480610d41575060015433600160a060020a039081169116145b1515610d4957fe5b5060005b601254811015610e6e576012805482908110610d6557fe5b600091825260209091200154600160a060020a0383811691161415610e665760125460001901811015610e0157601280546000198101908110610da457fe5b60009182526020909120015460128054600160a060020a039092169183908110610dca57fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555b60128054600091906000198101908110610e1757fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556012805490610e60906000198301612033565b50610e6e565b600101610d4d565b50600160a060020a031660009081526014602090815260408083208390556013909152812055565b600160a060020a03166000908152600f602052604090205490565b60005433600160a060020a0390811691161480610edc575060015433600160a060020a039081169116145b1515610ee457fe5b600254610ef990600160a060020a0316611c64565b565b60005433600160a060020a0390811691161480610f26575060015433600160a060020a039081169116145b1515610f2e57fe5b6011805460ff191660011790557f18cf59b69a9d6ca96b0ea0b1167071e28fadaa7be75bbfb07122ef2cf807843960405160405180910390a1565b635a92c16081565b60008054819081908190819033600160a060020a0390811691161480610fa5575060015433600160a060020a039081169116145b80610fc1575030600160a060020a031633600160a060020a0316145b1515610fc957fe5b600160a060020a0386166000908152600c6020526040812054111561108857600160a060020a0386166000818152600c6020526040908190205480156108fc029151600060405180830381858888f193505050501561108857600160a060020a0386166000818152600c602052604090819020547f3369c3b6197aae922e83958b09039af5c9e91863a682f4beb947a02b15725844915190815260200160405180910390a2600160a060020a0386166000908152600c60205260408120555b600093505b600160a060020a03861660009081526018602052604090205484101561120757600160a060020a03861660009081526018602052604090208054859081106110d157fe5b6000918252602080832090910154600160a060020a03898116845260198352604080852091909216808552925282205490945092508211156111fc575081600160a060020a03811663a9059cbb878460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561116c57600080fd5b6102c65a03f1151561117d57600080fd5b50505060405180519050156111fc5782600160a060020a031686600160a060020a03167f8e0ea5cfe772598ab9aeab546b2ed6ffcd34b678950c9b3b9b3a4c14a386de828460405190815260200160405180910390a3600160a060020a0380871660009081526019602090815260408083209387168352929052908120555b60019093019261108d565b505050600160a060020a039092166000908152600f6020526040812055919050565b6004546a01a784379d99db4200000090101590565b60146020526000908152604090205481565b60408051908101604052600481527f69524d4300000000000000000000000000000000000000000000000000000000602082015281565b6009805482908110610a1757fe5b600b805482908110610a1757fe5b60136020526000908152604090205481565b600354600160a060020a031681565b600154600160a060020a031681565b600d805482908110610a1757fe5b6000805433600160a060020a039081169116148061130d575060015433600160a060020a039081169116145b151561131557fe5b5060005b81518110156113495761134082828151811061133157fe5b90602001906020020151610f71565b50600101611319565b5050565b600080548190819033600160a060020a039081169116148061137d575060015433600160a060020a039081169116145b151561138557fe5b61138d610a82565b15801561139f575061139d611229565b155b15156113a757fe5b60175460155490935060328401106113c1576015546113c6565b826032015b91508290505b81811015611409576114006015828154811015156113e657fe5b600091825260209091200154600160a060020a0316610f71565b506001016113cc565b5060175550565b60005433600160a060020a039081169116148061143b575060015433600160a060020a039081169116145b151561144357fe5b600160a060020a038216151561145557fe5b6000811161145f57fe5b670de0b6b3a7640000620557300261147960055483611a85565b111561148157fe5b61148d60055482611a85565b600555600160a060020a0382166000908152600f60205260409020546114b39082611a85565b600160a060020a0383166000818152600f60205260409081902092909255907f6f9fd2fc20df30e1950019add5758763bf62ef22f93153f40e7d35521d165e629083905190815260200160405180910390a25050565b660b1a2bc2ec500081565b60008054819033600160a060020a0390811691161480611542575060015433600160a060020a039081169116145b151561154a57fe5b600160a060020a038516151561155c57fe5b6000841161156657fe5b6000831161157057fe5b506001905060005b6012548110156115c75784600160a060020a031660128281548110151561159b57fe5b600091825260209091200154600160a060020a031614156115bf57600091506115c7565b600101611578565b81156116125760128054600181016115df8382612033565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387161790555b5050600160a060020a03909216600090815260146020908152604080832094909455601390529190912055565b610a7f3382611667565b600254600160a060020a031681565b6a04f68ca6d8cd91c600000081565b600080600080611675610a82565b151561167d57fe5b600160a060020a0385166000908152601460205260408120541161169d57fe5b84935083600160a060020a031663dd62ed3e873060006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156116ff57600080fd5b6102c65a03f1151561171057600080fd5b50505060405180519350506000831161172557fe5b61172f8584611b3e565b915061173a82611a51565b600160a060020a0386166000908152600f602052604090205461175d9083611a85565b600160a060020a038088166000908152600f602052604080822093909355908616916370a08231913091516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156117ca57600080fd5b6102c65a03f115156117db57600080fd5b5050506040518051915050600160a060020a0384166323b872dd87308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561185057600080fd5b6102c65a03f1151561186157600080fd5b50505060405180519050151561187357fe5b828185600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156118cc57600080fd5b6102c65a03f115156118dd57600080fd5b50505060405180519050031415156118f157fe5b600160a060020a038087166000908152601960209081526040808320938916835292905220546119219084611a85565b600160a060020a038088166000908152601960209081526040808320938a16835292905220556119518686611b90565b61195a86611a9b565b84600160a060020a031686600160a060020a03167ffb402c262bfdc97ddc8d67e8e67070dfc65db4eab9b4e8e4159acc90c3e855d0858560405191825260208201526040908101905180910390a3505050505050565b6018602052816000526040600020818154811015156119cb57fe5b600091825260209091200154600160a060020a03169150829050565b60005433600160a060020a0390811691161480611a12575060015433600160a060020a039081169116145b1515611a1a57fe5b600354610ef990600160a060020a0316611c64565b6000611a4b670de0b6b3a7640000660b1a2bc2ec500084611e88565b92915050565b670de0b6b3a7640000625b8d8002611a6b60045483611a85565b1115611a7357fe5b611a7f60045482611a85565b60045550565b600082820183811015611a9457fe5b9392505050565b600160a060020a03811660009081526016602052604090205460ff161515610a7f57600160a060020a0381166000908152601660205260409020805460ff191660019081179091556015805490918101611af58382612033565b5060009182526020909120018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600082821115611b3857fe5b50900390565b600160a060020a038216600090815260146020526040812054819011611b6057fe5b600160a060020a038316600090815260146020908152604080832054601390925290912054611a94919084611e88565b60005b600160a060020a038316600090815260186020526040902054811015611c0457600160a060020a03838116600090815260186020526040902080549184169183908110611bdc57fe5b600091825260209091200154600160a060020a03161415611bfc57611c5f565b600101611b93565b600160a060020a0383166000908152601860205260409020805460018101611c2c8382612033565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790555b505050565b6000806000611c71611229565b1515611c7957fe5b600030600160a060020a0316311115611d0b5783600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f1935050505015611d0b5783600160a060020a03167fdb35132c111efe920cede025e819975671cfd1b8fcc1174762c8670c4e94c21130600160a060020a03163160405190815260200160405180910390a25b600092505b601254831015611e82576012805484908110611d2857fe5b6000918252602082200154600160a060020a0316925082906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611d8d57600080fd5b6102c65a03f11515611d9e57600080fd5b50505060405180519150506000811115611e775781600160a060020a031663a9059cbb858360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611e0f57600080fd5b6102c65a03f11515611e2057600080fd5b5050506040518051905015611e775781600160a060020a031684600160a060020a03167f037238854fe57fbf51f09946f854fc3916fe83938d6521f09bd05463839f13048360405190815260200160405180910390a35b600190920191611d10565b50505050565b6004546000908190818080805b600b54861015611ef257600b805487908110611ead57fe5b6000918252602090912001548510611ee257600b805487908110611ecd57fe5b90600052602060002090015485039450611ee7565b611ef2565b600190950194611e95565b600b548610611efd57fe5b600093505b600b54861161202557600b548610611f1657fe5b84600b87815481101515611f2657fe5b90600052602060002090015403925060009450600986815481101515611f4857fe5b906000526020600020900154600a87815481101515611f6357fe5b9060005260206000209001548a8c8b02811515611f7c57fe5b0402811515611f8757fe5b0491508282111561200957611f9c8484611a85565b9350600a86815481101515611fad57fe5b906000526020600020900154600987815481101515611fc857fe5b9060005260206000209001548b8b8602811515611fe157fe5b0402811515611fec57fe5b049050808811611ffb57612025565b80880397506000945061201a565b6120138483611a85565b9350612025565b600190950194611f02565b509198975050505050505050565b815481835581811511611c5f57600083815260209020611c5f918101908301610a9c91905b8082111561206c5760008155600101612058565b50905600a165627a7a72305820f200c370a0bf880859958183f2133c430649954f5fba2e00773dce2ba6e1b4cb002900000000000000000000000057b22f88eb4aec3ce8d120ca642d5e4f97bb5daf0000000000000000000000005b1d7488cfcb03007f99519ee4118f0196c0162c0000000000000000000000000db878904a0a6960c8d7701455d3bc2b81b5d6d5000000000000000000000000bfa78362f3936927c1fc3dd555b358d8626e88530000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60606040526004361061024d5763ffffffff60e060020a60003504166306096931811461025957806306fdde031461027e578063095ea7b3146103085780631039cf3c1461033e57806311916ce714610351578063119cb2ff1461037957806318160ddd1461038f57806318d43f0d146103a25780631eb5ea2e146103c75780631fc27ef2146103da57806323b872dd146103ed57806329dcb0cf14610415578063313ce5671461042857806334b122cb1461043b57806337b475d4146104685780633cfba0e31461047b57806345f0a44f1461049a578063481c6a75146104b0578063502aa3b5146104df57806355c8c6fd146104f55780635d771933146105085780635daab2361461051b5780635e5f2e261461052e5780635fa7b5841461054457806370a08231146105635780637362377b146105825780637b274afc146105955780637b73c2ef146105a85780637dfbdf6d146105bb5780637f28c44f146105da57806384ba3f69146105ed57806395d89b411461060c57806397883d1f1461061f5780639ad280c014610635578063a9059cbb14610308578063a96b7f051461064b578063b12e14491461066a578063bb004abc1461067d578063bc31c1c114610690578063c474e70a146106a6578063ccdfcfa4146106f5578063ce8ae9f314610708578063d2d8cb671461072a578063dd62ed3e1461073d578063dee1f2af14610762578063e050491014610787578063e2fdcc17146107a6578063ec0a0b50146107b9578063edb1072e146107cc578063f9f411d8146107f1578063fcc648f614610813575b6102573334610826565b005b341561026457600080fd5b61026c6108da565b60405190815260200160405180910390f35b341561028957600080fd5b6102916108e0565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102cd5780820151838201526020016102b5565b50505050905090810190601f1680156102fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031357600080fd5b61032a600160a060020a0360043516602435610917565b604051901515815260200160405180910390f35b341561034957600080fd5b61032a61091f565b341561035c57600080fd5b610257600160a060020a0360043581169060243516604435610928565b341561038457600080fd5b61026c600435610a09565b341561039a57600080fd5b61026c610a28565b34156103ad57600080fd5b61026c600160a060020a0360043581169060243516610a37565b34156103d257600080fd5b610257610a54565b34156103e557600080fd5b61032a610a82565b34156103f857600080fd5b61032a600160a060020a0360043581169060243516604435610a9f565b341561042057600080fd5b61026c610aa8565b341561043357600080fd5b61026c610aae565b341561044657600080fd5b610257600160a060020a03600435811690602435166044356064351515610ab3565b341561047357600080fd5b61026c610c14565b341561048657600080fd5b61026c600160a060020a0360043516610c23565b34156104a557600080fd5b61026c600435610c35565b34156104bb57600080fd5b6104c3610c43565b604051600160a060020a03909116815260200160405180910390f35b34156104ea57600080fd5b6104c3600435610c52565b341561050057600080fd5b61026c610c7a565b341561051357600080fd5b61026c610c80565b341561052657600080fd5b610257610c8e565b341561053957600080fd5b6104c3600435610d07565b341561054f57600080fd5b610257600160a060020a0360043516610d15565b341561056e57600080fd5b61026c600160a060020a0360043516610e96565b341561058d57600080fd5b610257610eb1565b34156105a057600080fd5b610257610efb565b34156105b357600080fd5b61026c610f69565b34156105c657600080fd5b61032a600160a060020a0360043516610f71565b34156105e557600080fd5b61032a611229565b34156105f857600080fd5b61026c600160a060020a036004351661123e565b341561061757600080fd5b610291611250565b341561062a57600080fd5b61026c600435611287565b341561064057600080fd5b61026c600435611295565b341561065657600080fd5b61026c600160a060020a03600435166112a3565b341561067557600080fd5b6104c36112b5565b341561068857600080fd5b6104c36112c4565b341561069b57600080fd5b61026c6004356112d3565b34156106b157600080fd5b61025760046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506112e195505050505050565b341561070057600080fd5b61025761134d565b341561071357600080fd5b610257600160a060020a0360043516602435611410565b341561073557600080fd5b61026c611509565b341561074857600080fd5b61026c600160a060020a0360043581169060243516610917565b341561076d57600080fd5b610257600160a060020a0360043516602435604435611514565b341561079257600080fd5b610257600160a060020a036004351661163f565b34156107b157600080fd5b6104c3611649565b34156107c457600080fd5b61026c611658565b34156107d757600080fd5b610257600160a060020a0360043581169060243516611667565b34156107fc57600080fd5b6104c3600160a060020a03600435166024356119b0565b341561081e57600080fd5b6102576119e7565b6000610830610a82565b151561083857fe5b61084182611a2f565b905061084c81611a51565b600160a060020a0383166000908152600f602052604090205461086f9082611a85565b600160a060020a0384166000908152600f602052604090205561089183611a9b565b82600160a060020a03167f0a37b72bb67eee30e09084cf386f8a17817c57f620c3ab95fb25d6a20356ec77838360405191825260208201526040908101905180910390a2505050565b60055481565b60408051908101604052601781527f52656d65636861696e2050726573616c6520546f6b656e000000000000000000602082015281565b600092915050565b60115460ff1681565b60005433600160a060020a0390811691161480610953575060015433600160a060020a039081169116145b151561095b57fe5b600160a060020a0383166000908152600f602052604090205461097e9082611b2c565b600160a060020a038085166000908152600f602052604080822093909355908416815220546109ad9082611a85565b600160a060020a038084166000818152600f6020526040908190209390935591908516907fdc6ea828c5ab3d3595c27f8b64500252aa852dfa7fe1c7fb54e5a33c6f25cc2f9084905190815260200160405180910390a3505050565b600a805482908110610a1757fe5b600091825260209091200154905081565b6a0540aa3094621824c0000081565b601960209081526000928352604080842090915290825290205481565b610a5c611229565b158015610a6e5750610a6c610a82565b155b1515610a7657fe5b610a7f33610f71565b50565b60115460009060ff16158015610a99575060105442105b90505b90565b60009392505050565b60105481565b601281565b6000805433600160a060020a0390811691161480610adf575060015433600160a060020a039081169116145b1515610ae757fe5b600160a060020a03841660009081526014602052604081205411610b0757fe5b8115610ba457610b178484611b3e565b9050610b2281611a51565b600160a060020a0385166000908152600f6020526040902054610b459082611a85565b600160a060020a038087166000818152600f60205260409081902093909355908616917ffb402c262bfdc97ddc8d67e8e67070dfc65db4eab9b4e8e4159acc90c3e855d090869085905191825260208201526040908101905180910390a35b600160a060020a03808616600090815260196020908152604080832093881683529290522054610bd49084611a85565b600160a060020a03808716600090815260196020908152604080832093891683529290522055610c048585611b90565b610c0d85611a9b565b5050505050565b6a01a784379d99db4200000081565b600c6020526000908152604090205481565b600e805482908110610a1757fe5b600054600160a060020a031681565b6015805482908110610c6057fe5b600091825260209091200154600160a060020a0316905081565b60045481565b694a1d89bb94865ec0000081565b60005433600160a060020a0390811691161480610cb9575060015433600160a060020a039081169116145b1515610cc157fe5b60115460ff161515610ccf57fe5b6011805460ff191690557facf197b1f433a63ad09367de8cfc4c90aa5d0da8d52bff441d92ddbaa8ced9d260405160405180910390a1565b6012805482908110610c6057fe5b6000805433600160a060020a0390811691161480610d41575060015433600160a060020a039081169116145b1515610d4957fe5b5060005b601254811015610e6e576012805482908110610d6557fe5b600091825260209091200154600160a060020a0383811691161415610e665760125460001901811015610e0157601280546000198101908110610da457fe5b60009182526020909120015460128054600160a060020a039092169183908110610dca57fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555b60128054600091906000198101908110610e1757fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556012805490610e60906000198301612033565b50610e6e565b600101610d4d565b50600160a060020a031660009081526014602090815260408083208390556013909152812055565b600160a060020a03166000908152600f602052604090205490565b60005433600160a060020a0390811691161480610edc575060015433600160a060020a039081169116145b1515610ee457fe5b600254610ef990600160a060020a0316611c64565b565b60005433600160a060020a0390811691161480610f26575060015433600160a060020a039081169116145b1515610f2e57fe5b6011805460ff191660011790557f18cf59b69a9d6ca96b0ea0b1167071e28fadaa7be75bbfb07122ef2cf807843960405160405180910390a1565b635a92c16081565b60008054819081908190819033600160a060020a0390811691161480610fa5575060015433600160a060020a039081169116145b80610fc1575030600160a060020a031633600160a060020a0316145b1515610fc957fe5b600160a060020a0386166000908152600c6020526040812054111561108857600160a060020a0386166000818152600c6020526040908190205480156108fc029151600060405180830381858888f193505050501561108857600160a060020a0386166000818152600c602052604090819020547f3369c3b6197aae922e83958b09039af5c9e91863a682f4beb947a02b15725844915190815260200160405180910390a2600160a060020a0386166000908152600c60205260408120555b600093505b600160a060020a03861660009081526018602052604090205484101561120757600160a060020a03861660009081526018602052604090208054859081106110d157fe5b6000918252602080832090910154600160a060020a03898116845260198352604080852091909216808552925282205490945092508211156111fc575081600160a060020a03811663a9059cbb878460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561116c57600080fd5b6102c65a03f1151561117d57600080fd5b50505060405180519050156111fc5782600160a060020a031686600160a060020a03167f8e0ea5cfe772598ab9aeab546b2ed6ffcd34b678950c9b3b9b3a4c14a386de828460405190815260200160405180910390a3600160a060020a0380871660009081526019602090815260408083209387168352929052908120555b60019093019261108d565b505050600160a060020a039092166000908152600f6020526040812055919050565b6004546a01a784379d99db4200000090101590565b60146020526000908152604090205481565b60408051908101604052600481527f69524d4300000000000000000000000000000000000000000000000000000000602082015281565b6009805482908110610a1757fe5b600b805482908110610a1757fe5b60136020526000908152604090205481565b600354600160a060020a031681565b600154600160a060020a031681565b600d805482908110610a1757fe5b6000805433600160a060020a039081169116148061130d575060015433600160a060020a039081169116145b151561131557fe5b5060005b81518110156113495761134082828151811061133157fe5b90602001906020020151610f71565b50600101611319565b5050565b600080548190819033600160a060020a039081169116148061137d575060015433600160a060020a039081169116145b151561138557fe5b61138d610a82565b15801561139f575061139d611229565b155b15156113a757fe5b60175460155490935060328401106113c1576015546113c6565b826032015b91508290505b81811015611409576114006015828154811015156113e657fe5b600091825260209091200154600160a060020a0316610f71565b506001016113cc565b5060175550565b60005433600160a060020a039081169116148061143b575060015433600160a060020a039081169116145b151561144357fe5b600160a060020a038216151561145557fe5b6000811161145f57fe5b670de0b6b3a7640000620557300261147960055483611a85565b111561148157fe5b61148d60055482611a85565b600555600160a060020a0382166000908152600f60205260409020546114b39082611a85565b600160a060020a0383166000818152600f60205260409081902092909255907f6f9fd2fc20df30e1950019add5758763bf62ef22f93153f40e7d35521d165e629083905190815260200160405180910390a25050565b660b1a2bc2ec500081565b60008054819033600160a060020a0390811691161480611542575060015433600160a060020a039081169116145b151561154a57fe5b600160a060020a038516151561155c57fe5b6000841161156657fe5b6000831161157057fe5b506001905060005b6012548110156115c75784600160a060020a031660128281548110151561159b57fe5b600091825260209091200154600160a060020a031614156115bf57600091506115c7565b600101611578565b81156116125760128054600181016115df8382612033565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387161790555b5050600160a060020a03909216600090815260146020908152604080832094909455601390529190912055565b610a7f3382611667565b600254600160a060020a031681565b6a04f68ca6d8cd91c600000081565b600080600080611675610a82565b151561167d57fe5b600160a060020a0385166000908152601460205260408120541161169d57fe5b84935083600160a060020a031663dd62ed3e873060006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156116ff57600080fd5b6102c65a03f1151561171057600080fd5b50505060405180519350506000831161172557fe5b61172f8584611b3e565b915061173a82611a51565b600160a060020a0386166000908152600f602052604090205461175d9083611a85565b600160a060020a038088166000908152600f602052604080822093909355908616916370a08231913091516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156117ca57600080fd5b6102c65a03f115156117db57600080fd5b5050506040518051915050600160a060020a0384166323b872dd87308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561185057600080fd5b6102c65a03f1151561186157600080fd5b50505060405180519050151561187357fe5b828185600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156118cc57600080fd5b6102c65a03f115156118dd57600080fd5b50505060405180519050031415156118f157fe5b600160a060020a038087166000908152601960209081526040808320938916835292905220546119219084611a85565b600160a060020a038088166000908152601960209081526040808320938a16835292905220556119518686611b90565b61195a86611a9b565b84600160a060020a031686600160a060020a03167ffb402c262bfdc97ddc8d67e8e67070dfc65db4eab9b4e8e4159acc90c3e855d0858560405191825260208201526040908101905180910390a3505050505050565b6018602052816000526040600020818154811015156119cb57fe5b600091825260209091200154600160a060020a03169150829050565b60005433600160a060020a0390811691161480611a12575060015433600160a060020a039081169116145b1515611a1a57fe5b600354610ef990600160a060020a0316611c64565b6000611a4b670de0b6b3a7640000660b1a2bc2ec500084611e88565b92915050565b670de0b6b3a7640000625b8d8002611a6b60045483611a85565b1115611a7357fe5b611a7f60045482611a85565b60045550565b600082820183811015611a9457fe5b9392505050565b600160a060020a03811660009081526016602052604090205460ff161515610a7f57600160a060020a0381166000908152601660205260409020805460ff191660019081179091556015805490918101611af58382612033565b5060009182526020909120018054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b600082821115611b3857fe5b50900390565b600160a060020a038216600090815260146020526040812054819011611b6057fe5b600160a060020a038316600090815260146020908152604080832054601390925290912054611a94919084611e88565b60005b600160a060020a038316600090815260186020526040902054811015611c0457600160a060020a03838116600090815260186020526040902080549184169183908110611bdc57fe5b600091825260209091200154600160a060020a03161415611bfc57611c5f565b600101611b93565b600160a060020a0383166000908152601860205260409020805460018101611c2c8382612033565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790555b505050565b6000806000611c71611229565b1515611c7957fe5b600030600160a060020a0316311115611d0b5783600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f1935050505015611d0b5783600160a060020a03167fdb35132c111efe920cede025e819975671cfd1b8fcc1174762c8670c4e94c21130600160a060020a03163160405190815260200160405180910390a25b600092505b601254831015611e82576012805484908110611d2857fe5b6000918252602082200154600160a060020a0316925082906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611d8d57600080fd5b6102c65a03f11515611d9e57600080fd5b50505060405180519150506000811115611e775781600160a060020a031663a9059cbb858360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611e0f57600080fd5b6102c65a03f11515611e2057600080fd5b5050506040518051905015611e775781600160a060020a031684600160a060020a03167f037238854fe57fbf51f09946f854fc3916fe83938d6521f09bd05463839f13048360405190815260200160405180910390a35b600190920191611d10565b50505050565b6004546000908190818080805b600b54861015611ef257600b805487908110611ead57fe5b6000918252602090912001548510611ee257600b805487908110611ecd57fe5b90600052602060002090015485039450611ee7565b611ef2565b600190950194611e95565b600b548610611efd57fe5b600093505b600b54861161202557600b548610611f1657fe5b84600b87815481101515611f2657fe5b90600052602060002090015403925060009450600986815481101515611f4857fe5b906000526020600020900154600a87815481101515611f6357fe5b9060005260206000209001548a8c8b02811515611f7c57fe5b0402811515611f8757fe5b0491508282111561200957611f9c8484611a85565b9350600a86815481101515611fad57fe5b906000526020600020900154600987815481101515611fc857fe5b9060005260206000209001548b8b8602811515611fe157fe5b0402811515611fec57fe5b049050808811611ffb57612025565b80880397506000945061201a565b6120138483611a85565b9350612025565b600190950194611f02565b509198975050505050505050565b815481835581811511611c5f57600083815260209020611c5f918101908301610a9c91905b8082111561206c5760008155600101612058565b50905600a165627a7a72305820f200c370a0bf880859958183f2133c430649954f5fba2e00773dce2ba6e1b4cb0029

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

00000000000000000000000057b22f88eb4aec3ce8d120ca642d5e4f97bb5daf0000000000000000000000005b1d7488cfcb03007f99519ee4118f0196c0162c0000000000000000000000000db878904a0a6960c8d7701455d3bc2b81b5d6d5000000000000000000000000bfa78362f3936927c1fc3dd555b358d8626e88530000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _manager (address): 0x57B22f88Eb4aeC3Ce8D120CA642D5e4F97bb5dAf
Arg [1] : _reserveManager (address): 0x5b1d7488cfcB03007F99519Ee4118f0196c0162c
Arg [2] : _escrow (address): 0x0Db878904a0A6960C8d7701455D3bc2B81B5D6D5
Arg [3] : _reserveEscrow (address): 0xBfa78362F3936927C1FC3DD555b358D8626e8853
Arg [4] : _deadline (uint256): 0

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000057b22f88eb4aec3ce8d120ca642d5e4f97bb5daf
Arg [1] : 0000000000000000000000005b1d7488cfcb03007f99519ee4118f0196c0162c
Arg [2] : 0000000000000000000000000db878904a0a6960c8d7701455d3bc2b81b5d6d5
Arg [3] : 000000000000000000000000bfa78362f3936927c1fc3dd555b358d8626e8853
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000


Swarm Source

bzzr://f200c370a0bf880859958183f2133c430649954f5fba2e00773dce2ba6e1b4cb
Loading...
Loading
Loading...
Loading
[ 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.