ETH Price: $3,360.94 (+3.00%)
 

Overview

ETH Balance

0.304659298310127366 ETH

Eth Value

$1,023.94 (@ $3,360.94/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Token90358072019-12-02 3:05:531887 days ago1575255953IN
0xEc3D7968...5e6d38B21
0 ETH0.00052911
Withdraw Token90358032019-12-02 3:05:101887 days ago1575255910IN
0xEc3D7968...5e6d38B21
0 ETH0.000729716
Withdraw Token90357972019-12-02 3:03:361887 days ago1575255816IN
0xEc3D7968...5e6d38B21
0 ETH0.000486654
Withdraw Token90357252019-12-02 2:43:541887 days ago1575254634IN
0xEc3D7968...5e6d38B21
0 ETH0.000180343.75
Withdraw Token90357222019-12-02 2:43:351887 days ago1575254615IN
0xEc3D7968...5e6d38B21
0 ETH0.000283893.75
Withdraw Token90357182019-12-02 2:42:501887 days ago1575254570IN
0xEc3D7968...5e6d38B21
0 ETH0.00034033.75
Withdraw88519282019-11-01 9:39:541918 days ago1572601194IN
0xEc3D7968...5e6d38B21
0 ETH0.000067683
Withdraw Token88518752019-11-01 9:25:421918 days ago1572600342IN
0xEc3D7968...5e6d38B21
0 ETH0.000066182
Trade85593192019-09-16 8:00:351964 days ago1568620835IN
0xEc3D7968...5e6d38B21
0 ETH0.0025752721
Deposit Token85592962019-09-16 7:55:131964 days ago1568620513IN
0xEc3D7968...5e6d38B21
0 ETH0.0011284921
Withdraw84828552019-09-04 9:28:431976 days ago1567589323IN
0xEc3D7968...5e6d38B21
0 ETH0.000249611
Withdraw84828502019-09-04 9:27:401976 days ago1567589260IN
0xEc3D7968...5e6d38B21
0 ETH0.000249611
Trade84267142019-08-26 15:40:321984 days ago1566834032IN
0xEc3D7968...5e6d38B21
0 ETH0.000860999.25
Trade84267072019-08-26 15:37:591984 days ago1566833879IN
0xEc3D7968...5e6d38B21
0 ETH0.000744648
Trade84267002019-08-26 15:35:181984 days ago1566833718IN
0xEc3D7968...5e6d38B21
0 ETH0.000744128
Trade84262372019-08-26 13:54:491984 days ago1566827689IN
0xEc3D7968...5e6d38B21
0 ETH0.0010217611
Trade84262342019-08-26 13:53:311984 days ago1566827611IN
0xEc3D7968...5e6d38B21
0 ETH0.0010217611
Trade84262302019-08-26 13:52:391984 days ago1566827559IN
0xEc3D7968...5e6d38B21
0 ETH0.0010231711
Trade84139192019-08-24 15:56:471986 days ago1566662207IN
0xEc3D7968...5e6d38B21
0 ETH0.000186032
Trade84139112019-08-24 15:55:121986 days ago1566662112IN
0xEc3D7968...5e6d38B21
0 ETH0.000232542.5
Trade84139082019-08-24 15:54:211986 days ago1566662061IN
0xEc3D7968...5e6d38B21
0 ETH0.000232382.5
Trade84138912019-08-24 15:51:041986 days ago1566661864IN
0xEc3D7968...5e6d38B21
0 ETH0.000371554
Trade84138892019-08-24 15:50:511986 days ago1566661851IN
0xEc3D7968...5e6d38B21
0 ETH0.000304113.26953125
Trade84138822019-08-24 15:47:391986 days ago1566661659IN
0xEc3D7968...5e6d38B21
0 ETH0.0002422.6
Trade84138782019-08-24 15:46:001986 days ago1566661560IN
0xEc3D7968...5e6d38B21
0 ETH0.000277893
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
88519282019-11-01 9:39:541918 days ago1572601194
0xEc3D7968...5e6d38B21
0.01786823 ETH
84828552019-09-04 9:28:431976 days ago1567589323
0xEc3D7968...5e6d38B21
0.41876991 ETH
84828502019-09-04 9:27:401976 days ago1567589260
0xEc3D7968...5e6d38B21
0.79823851 ETH
83610332019-08-16 10:46:591995 days ago1565952419
0xEc3D7968...5e6d38B21
0.03 ETH
81748562019-07-18 13:01:332024 days ago1563454893
0xEc3D7968...5e6d38B21
0.03 ETH
81748562019-07-18 13:01:332024 days ago1563454893
0xEc3D7968...5e6d38B21
0.03 ETH
81369972019-07-12 15:11:232029 days ago1562944283
0xEc3D7968...5e6d38B21
0.47373845 ETH
81235642019-07-10 12:44:172032 days ago1562762657
0xEc3D7968...5e6d38B21
0.03 ETH
80975422019-07-06 11:52:592036 days ago1562413979
0xEc3D7968...5e6d38B21
0.03 ETH
80350262019-06-26 17:47:502045 days ago1561571270
0xEc3D7968...5e6d38B21
0.03 ETH
80284952019-06-25 17:29:182046 days ago1561483758
0xEc3D7968...5e6d38B21
0.03 ETH
79817232019-06-18 10:18:182054 days ago1560853098
0xEc3D7968...5e6d38B21
0.03 ETH
79817212019-06-18 10:17:382054 days ago1560853058
0xEc3D7968...5e6d38B21
0.03 ETH
79502852019-06-13 12:12:002059 days ago1560427920
0xEc3D7968...5e6d38B21
0.02 ETH
79300232019-06-10 8:07:272062 days ago1560154047
0xEc3D7968...5e6d38B21
0.02 ETH
78432862019-05-27 18:31:392075 days ago1558981899
0xEc3D7968...5e6d38B21
0.03 ETH
78160962019-05-23 12:52:542080 days ago1558615974
0xEc3D7968...5e6d38B21
0.02 ETH
78025102019-05-21 9:42:552082 days ago1558431775
0xEc3D7968...5e6d38B21
0.01313455 ETH
77796522019-05-17 19:43:322085 days ago1558122212
0xEc3D7968...5e6d38B21
0.02 ETH
77796402019-05-17 19:41:102085 days ago1558122070
0xEc3D7968...5e6d38B21
0.02 ETH
76894042019-05-03 17:40:302099 days ago1556905230
0xEc3D7968...5e6d38B21
0.02 ETH
76378422019-04-25 17:11:052107 days ago1556212265
0xEc3D7968...5e6d38B21
0.03 ETH
75419582019-04-10 18:29:422122 days ago1554920982
0xEc3D7968...5e6d38B21
0.02 ETH
75319172019-04-09 4:56:582124 days ago1554785818
0xEc3D7968...5e6d38B21
0.24065888 ETH
75025622019-04-04 15:43:402128 days ago1554392620
0xEc3D7968...5e6d38B21
0.02 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DAppDEX

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-02-21
*/

pragma solidity ^0.4.25;

/**
 * @title Ownable contract - base contract with an owner
 */
contract Ownable {
  
  address public owner;
  address public newOwner;

  event OwnershipTransferred(address indexed _from, address indexed _to);
  
  /**
   * @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() {
    assert(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 {
    assert(_newOwner != address(0));      
    newOwner = _newOwner;
  }

  /**
   * @dev Accept transferOwnership.
   */
  function acceptOwnership() public {
    if (msg.sender == newOwner) {
      emit OwnershipTransferred(owner, newOwner);
      owner = newOwner;
    }
  }
}


/**
 * @title SDADI - Interface
 */
interface SDADI  {	
  function AddToken(address token) external;
  function DelToken(address token) external;
}


/**
 * @title DAppDEXI - Interface 
 */
interface DAppDEXI {

    function updateAgent(address _agent, bool _status) external;

    function setAccountType(address user_, uint256 type_) external;
    function getAccountType(address user_) external view returns(uint256);
    function setFeeType(uint256 type_ , uint256 feeMake_, uint256 feeTake_) external;
    function getFeeMake(uint256 type_ ) external view returns(uint256);
    function getFeeTake(uint256 type_ ) external view returns(uint256);
    function changeFeeAccount(address feeAccount_) external;
    
    function setWhitelistTokens(address token) external;
    function setWhitelistTokens(address token, bool active, uint256 timestamp, bytes32 typeERC) external;
    function depositToken(address token, uint amount) external;
    function tokenFallback(address owner, uint256 amount, bytes data) external returns (bool success);

    function withdraw(uint amount) external;
    function withdrawToken(address token, uint amount) external;

    function balanceOf(address token, address user) external view returns (uint);

    function order(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce) external;
    function trade(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s, uint amount) external;    
    function cancelOrder(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, uint8 v, bytes32 r, bytes32 s) external;
    function testTrade(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s, uint amount, address sender) external view returns(bool);
    function availableVolume(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s) external view returns(uint);
    function amountFilled(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user) external view returns(uint);
}


/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
interface ERC20I {

  function balanceOf(address _owner) external view returns (uint256);

  function totalSupply() external view returns (uint256);
  function transfer(address _to, uint256 _value) external returns (bool success);
  
  function allowance(address _owner, address _spender) external view returns (uint256);
  function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);
  function approve(address _spender, uint256 _value) external returns (bool success);
  
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    /**
    * @dev Subtracts two numbers, reverts on overflow.
    */
    function safeSub(uint256 x, uint256 y) internal pure returns (uint256) {
        assert(y <= x);
        uint256 z = x - y;
        return z;
    }

    /**
    * @dev Adds two numbers, reverts on overflow.
    */
    function safeAdd(uint256 x, uint256 y) internal pure returns (uint256) {
        uint256 z = x + y;
        assert(z >= x);
        return z;
    }
	
	/**
    * @dev Integer division of two numbers, reverts on division by zero.
    */
    function safeDiv(uint256 x, uint256 y) internal pure returns (uint256) {
        uint256 z = x / y;
        return z;
    }
    
    /**
    * @dev Multiplies two numbers, reverts on overflow.
    */	
    function safeMul(uint256 x, uint256 y) internal pure returns (uint256) {    
        if (x == 0) {
            return 0;
        }
    
        uint256 z = x * y;
        assert(z / x == y);
        return z;
    }

    /**
    * @dev Returns the integer percentage of the number.
    */
    function safePerc(uint256 x, uint256 y) internal pure returns (uint256) {
        if (x == 0) {
            return 0;
        }
        
        uint256 z = x * y;
        assert(z / x == y);    
        z = z / 10000; // percent to hundredths
        return z;
    }

    /**
    * @dev Returns the minimum value of two numbers.
    */	
    function min(uint256 x, uint256 y) internal pure returns (uint256) {
        uint256 z = x <= y ? x : y;
        return z;
    }

    /**
    * @dev Returns the maximum value of two numbers.
    */
    function max(uint256 x, uint256 y) internal pure returns (uint256) {
        uint256 z = x >= y ? x : y;
        return z;
    }
}


/**
 * @title Agent contract - base contract with an agent
 */
contract Agent is Ownable {

  address public defAgent;

  mapping(address => bool) public Agents;
  
  constructor() public {    
    Agents[msg.sender] = true;
  }
  
  modifier onlyAgent() {
    assert(Agents[msg.sender]);
    _;
  }
  
  function updateAgent(address _agent, bool _status) public onlyOwner {
    assert(_agent != address(0));
    Agents[_agent] = _status;
  }  
}


/**
 * @title DAppsDEX - Decentralized exchange for DApps
 */
contract DAppDEX is DAppDEXI, SafeMath, Agent {
    
    address public feeAccount;
    mapping (address => mapping (address => uint)) public tokens;
    mapping (address => mapping (bytes32 => bool)) public orders;
    mapping (address => mapping (bytes32 => uint)) public orderFills;

    uint public feeListing = 100; // 1.00%

    struct whitelistToken {
        bool active;
        uint256 timestamp;
    }
    
    struct Fee {
        uint256 feeMake;
        uint256 feeTake;
    }
    
    mapping (address => whitelistToken) public whitelistTokens;
    mapping (address => uint256) public accountTypes;
    mapping (uint256 => Fee) public feeTypes;
  
    event Deposit(address token, address user, uint amount, uint balance);
    event PayFeeListing(address token, address user, uint amount, uint balance);
    event Withdraw(address token, address user, uint amount, uint balance);
    event Order(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user);
    event Cancel(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s, bytes32 hash);
    event Trade(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, address user, address recipient, bytes32 hash, uint256 timestamp);
    event WhitelistTokens(address token, bool active, uint256 timestamp, bytes32 typeERC);
  
    constructor (address feeAccount_) public {
        feeAccount = feeAccount_;
        feeTypes[0] = Fee(1000000000000000, 2000000000000000);
        whitelistTokens[0] = whitelistToken(true, 1);
        emit WhitelistTokens(0, true, 1, 0x0);
    }

    function setFeeListing(uint _feeListing) external onlyAgent {
        feeListing = _feeListing;
    }
    
    function setAccountType(address user_, uint256 type_) external onlyAgent {
        accountTypes[user_] = type_;
    }

    function getAccountType(address user_) external view returns(uint256) {
        return accountTypes[user_];
    }
  
    function setFeeType(uint256 type_ , uint256 feeMake_, uint256 feeTake_) external onlyAgent {
        feeTypes[type_] = Fee(feeMake_,feeTake_);
    }

    function getFeeMake(uint256 type_ ) external view returns(uint256) {
        return (feeTypes[type_].feeMake);
    }
    
    function getFeeTake(uint256 type_ ) external view returns(uint256) {
        return (feeTypes[type_].feeTake);
    }
    
    function changeFeeAccount(address feeAccount_) external onlyAgent {
        require(feeAccount_ != address(0));
        feeAccount = feeAccount_;
    }

    function setWhitelistTokens(address token) external onlyOwner {
        whitelistTokens[token].active = true;
        whitelistTokens[token].timestamp = now;
        SDADI(feeAccount).AddToken(token);
        emit WhitelistTokens(token, true, now, "ERC20");
    }    
    
    function setWhitelistTokens(address token, bool active, uint256 timestamp, bytes32 typeERC) external onlyAgent {
        if (active) {
            uint fee = safePerc(ERC20I(token).totalSupply(), feeListing);
            require(fee > 0);
            require(tokens[token][feeAccount] >= fee);
            SDADI(feeAccount).AddToken(token);
        } else {
            SDADI(feeAccount).DelToken(token);
        }
        whitelistTokens[token].active = active;
        whitelistTokens[token].timestamp = timestamp;
        emit WhitelistTokens(token, active, timestamp, typeERC);
    }
    
    /**
    * deposit ETH
    */
    function() public payable {
        require(msg.value > 0);
        deposit(msg.sender);
    }
  
    /**
    * Make deposit.
    *
    * @param receiver The Ethereum address who make deposit
    *
    */
    function deposit(address receiver) private {
        tokens[0][receiver] = safeAdd(tokens[0][receiver], msg.value);
        emit Deposit(0, receiver, msg.value, tokens[0][receiver]);
    }
  
    /**
    * Deposit token.
    *
    * @param token Token address
    * @param amount Deposit amount
    *
    */
    function depositToken(address token, uint amount) external {
        require(token != address(0));
        if (whitelistTokens[token].active) {
            require(whitelistTokens[token].timestamp <= now);
            require(ERC20I(token).transferFrom(msg.sender, this, amount));
            tokens[token][msg.sender] = safeAdd(tokens[token][msg.sender], amount);
            emit Deposit(token, msg.sender, amount, tokens[token][msg.sender]);
        } else {
            require(ERC20I(token).transferFrom(msg.sender, this, amount));
            tokens[token][feeAccount] = safeAdd(tokens[token][feeAccount], amount);
            emit PayFeeListing(token, msg.sender, amount, tokens[msg.sender][feeAccount]);
        }
        
    }

    /**
    * tokenFallback ERC223.
    *
    * @param owner owner token
    * @param amount Deposit amount
    * @param data payload  
    *
    */
    function tokenFallback(address owner, uint256 amount, bytes data) external returns (bool success) {      

        if (data.length == 0) {
            assert(whitelistTokens[msg.sender].active && whitelistTokens[msg.sender].timestamp <= now);            
            tokens[msg.sender][owner] = safeAdd(tokens[msg.sender][owner], amount);
            emit Deposit(msg.sender, owner, amount, tokens[msg.sender][owner]);
            return true;
        } else {
            tokens[msg.sender][feeAccount] = safeAdd(tokens[msg.sender][feeAccount], amount);
            emit PayFeeListing(msg.sender, owner, amount, tokens[msg.sender][feeAccount]);
            return true;
        }
    }

    /**
    * Withdraw deposit.
    *
    * @param amount Withdraw amount
    *
    */
    function withdraw(uint amount) external {
        require(tokens[0][msg.sender] >= amount);
        tokens[0][msg.sender] = safeSub(tokens[0][msg.sender], amount);
        msg.sender.transfer(amount);
        emit Withdraw(0, msg.sender, amount, tokens[0][msg.sender]);
    }  
    
    /**
    * Withdraw token.
    *
    * @param token Token address
    * @param amount Withdraw amount
    *
    */
    function withdrawToken(address token, uint amount) external {
        require(token != address(0));
        require(tokens[token][msg.sender] >= amount);
        tokens[token][msg.sender] = safeSub(tokens[token][msg.sender], amount);
        require(ERC20I(token).transfer(msg.sender, amount));
        emit Withdraw(token, msg.sender, amount, tokens[token][msg.sender]);
    }
  
    function balanceOf(address token, address user) external view returns (uint) {
        return tokens[token][user];
    }
  
    function order(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce) external {
        bytes32 hash = keccak256(abi.encodePacked(this, tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, msg.sender));
        orders[msg.sender][hash] = true;
        emit Order(tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, msg.sender);
    }
  
    function trade(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s, uint amount) external {
        bytes32 hash = keccak256(abi.encodePacked(this, tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, user));
        if (!(
            (orders[user][hash] || ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)),v,r,s) == user) &&
            block.timestamp <= expires &&
            safeAdd(orderFills[user][hash], amount) <= amountBuy
        )) revert();
        tradeBalances(tokenBuy, amountBuy, tokenSell, amountSell, user, amount);
        orderFills[user][hash] = safeAdd(orderFills[user][hash], amount);
        emit Trade(tokenBuy, amount, tokenSell, amountSell * amount / amountBuy, user, msg.sender, hash, block.timestamp);
    }

    function tradeBalances(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, address user, uint amount) private {
        uint feeMakeXfer = safeMul(amount, feeTypes[accountTypes[user]].feeMake) / (10**18);
        uint feeTakeXfer = safeMul(amount, feeTypes[accountTypes[msg.sender]].feeTake) / (10**18);
        tokens[tokenBuy][msg.sender] = safeSub(tokens[tokenBuy][msg.sender], safeAdd(amount, feeTakeXfer));
        tokens[tokenBuy][user] = safeAdd(tokens[tokenBuy][user], safeSub(amount, feeMakeXfer));
        tokens[tokenBuy][feeAccount] = safeAdd(tokens[tokenBuy][feeAccount], safeAdd(feeMakeXfer, feeTakeXfer));
        tokens[tokenSell][user] = safeSub(tokens[tokenSell][user], safeMul(amountSell, amount) / amountBuy);
        tokens[tokenSell][msg.sender] = safeAdd(tokens[tokenSell][msg.sender], safeMul(amountSell, amount) / amountBuy);
    }
  
    function cancelOrder(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, uint8 v, bytes32 r, bytes32 s) external {
        bytes32 hash = keccak256(abi.encodePacked(this, tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, msg.sender));
        if (!(orders[msg.sender][hash] || ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)),v,r,s) == msg.sender)) revert();
        orderFills[msg.sender][hash] = amountBuy;
        emit Cancel(tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, msg.sender, v, r, s, hash);
    }
  
    function testTrade(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s, uint amount, address sender) external view returns(bool) {
        if (!(
            tokens[tokenBuy][sender] >= amount &&
            availableVolume(tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, user, v, r, s) >= amount
        )) return false;
        return true;
    }

    function availableVolume(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s) public view returns(uint) {
        bytes32 hash = keccak256(abi.encodePacked(this, tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, user));
        if (!(
            (orders[user][hash] || ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)),v,r,s) == user) &&
            block.timestamp <= expires
        )) return 0;
        uint available1 = safeSub(amountBuy, orderFills[user][hash]);
        uint available2 = safeMul(tokens[tokenSell][user], amountBuy) / amountSell;
        if (available1<available2) return available1;
        return available2;
    }

    function amountFilled(address tokenBuy, uint amountBuy, address tokenSell, uint amountSell, uint expires, uint nonce, address user) external view returns(uint) {
        bytes32 hash = keccak256(abi.encodePacked(this, tokenBuy, amountBuy, tokenSell, amountSell, expires, nonce, user));
        return orderFills[user][hash];
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"feeListing","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenBuy","type":"address"},{"name":"amountBuy","type":"uint256"},{"name":"tokenSell","type":"address"},{"name":"amountSell","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"amount","type":"uint256"}],"name":"trade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenBuy","type":"address"},{"name":"amountBuy","type":"uint256"},{"name":"tokenSell","type":"address"},{"name":"amountSell","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"}],"name":"order","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orderFills","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenBuy","type":"address"},{"name":"amountBuy","type":"uint256"},{"name":"tokenSell","type":"address"},{"name":"amountSell","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"cancelOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenBuy","type":"address"},{"name":"amountBuy","type":"uint256"},{"name":"tokenSell","type":"address"},{"name":"amountSell","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"}],"name":"amountFilled","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"active","type":"bool"},{"name":"timestamp","type":"uint256"},{"name":"typeERC","type":"bytes32"}],"name":"setWhitelistTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistTokens","outputs":[{"name":"active","type":"bool"},{"name":"timestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenBuy","type":"address"},{"name":"amountBuy","type":"uint256"},{"name":"tokenSell","type":"address"},{"name":"amountSell","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"amount","type":"uint256"},{"name":"sender","type":"address"}],"name":"testTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"Agents","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"feeAccount_","type":"address"}],"name":"changeFeeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_feeListing","type":"uint256"}],"name":"setFeeListing","outputs":[],"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":"type_","type":"uint256"}],"name":"getFeeTake","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"defAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user_","type":"address"}],"name":"getAccountType","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user_","type":"address"},{"name":"type_","type":"uint256"}],"name":"setAccountType","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orders","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"tokenFallback","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"setWhitelistTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"accountTypes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"type_","type":"uint256"},{"name":"feeMake_","type":"uint256"},{"name":"feeTake_","type":"uint256"}],"name":"setFeeType","outputs":[],"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":"token","type":"address"},{"name":"user","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"feeTypes","outputs":[{"name":"feeMake","type":"uint256"},{"name":"feeTake","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"type_","type":"uint256"}],"name":"getFeeMake","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_agent","type":"address"},{"name":"_status","type":"bool"}],"name":"updateAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenBuy","type":"address"},{"name":"amountBuy","type":"uint256"},{"name":"tokenSell","type":"address"},{"name":"amountSell","type":"uint256"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"user","type":"address"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"availableVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"feeAccount_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"PayFeeListing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenBuy","type":"address"},{"indexed":false,"name":"amountBuy","type":"uint256"},{"indexed":false,"name":"tokenSell","type":"address"},{"indexed":false,"name":"amountSell","type":"uint256"},{"indexed":false,"name":"expires","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"},{"indexed":false,"name":"user","type":"address"}],"name":"Order","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenBuy","type":"address"},{"indexed":false,"name":"amountBuy","type":"uint256"},{"indexed":false,"name":"tokenSell","type":"address"},{"indexed":false,"name":"amountSell","type":"uint256"},{"indexed":false,"name":"expires","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"r","type":"bytes32"},{"indexed":false,"name":"s","type":"bytes32"},{"indexed":false,"name":"hash","type":"bytes32"}],"name":"Cancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenBuy","type":"address"},{"indexed":false,"name":"amountBuy","type":"uint256"},{"indexed":false,"name":"tokenSell","type":"address"},{"indexed":false,"name":"amountSell","type":"uint256"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"hash","type":"bytes32"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"active","type":"bool"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"typeERC","type":"bytes32"}],"name":"WhitelistTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6080604052606460085534801561001557600080fd5b5060405160208061275183398101604081815291516000805433600160a060020a031991821681178355825260036020908152858320805460ff19908116600190811790925560048054909416600160a060020a03871617909355868601875266038d7ea4c68000865266071afd498d0000828701908152848052600b835295517fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f765594517fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f7755855180870187528581528082018681528480526009835290517fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b80549094169015151790925590517fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6c55845182815290810184905280850193909352606083015291517fd84efa85ce21ebc48f44b73043ac7b09daa8c745f674422b78381404cb4ab426916080908290030190a1506125b78061019a6000396000f3006080604052600436106101b65763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663030111c881146101ce5780630a19b14a146101f55780630b9276661461024457806319774d4314610278578063278b8c0e1461029c5780632d804ca2146102dd5780632e1a7d4d1461031a578063338b5dea14610332578063508493bc146103565780635b470a251461037d5780635fb2386e146103a957806365e17c9d146103e55780636c86888b146104165780636e84f8701461048457806371ffcb16146104a557806379ba5097146104c6578063853d5465146104db5780638da5cb5b146104f35780638dbbbe10146105085780639e281a98146105205780639e5fd0bb14610544578063ae20314614610559578063b311db2f1461057a578063bb5f46291461059e578063c0ee0b8a146105c2578063c84668cb146105f3578063d4ee1d9014610614578063de32b68014610629578063e7fcde9b1461064a578063f2fde38b14610668578063f7888aec14610689578063f7ddab95146106b0578063fa58f510146106e1578063faad6eb5146106f9578063fb6e155f1461071f575b600034116101c357600080fd5b6101cc3361076a565b005b3480156101da57600080fd5b506101e361080c565b60408051918252519081900360200190f35b34801561020157600080fd5b506101cc600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e43516610104356101243561014435610812565b34801561025057600080fd5b506101cc600160a060020a03600435811690602435906044351660643560843560a435610bd1565b34801561028457600080fd5b506101e3600160a060020a0360043516602435610d2e565b3480156102a857600080fd5b506101cc600160a060020a03600435811690602435906044351660643560843560a43560ff60c4351660e43561010435610d4b565b3480156102e957600080fd5b506101e3600160a060020a0360043581169060243590604435811690606435906084359060a4359060c43516611003565b34801561032657600080fd5b506101cc600435611101565b34801561033e57600080fd5b506101cc600160a060020a0360043516602435611203565b34801561036257600080fd5b506101e3600160a060020a036004358116906024351661150e565b34801561038957600080fd5b506101cc600160a060020a0360043516602435151560443560643561152b565b3480156103b557600080fd5b506103ca600160a060020a03600435166117a5565b60408051921515835260208301919091528051918290030190f35b3480156103f157600080fd5b506103fa6117c4565b60408051600160a060020a039092168252519081900360200190f35b34801561042257600080fd5b50610470600160a060020a0360043581169060243590604435811690606435906084359060a4359060c43581169060ff60e435169061010435906101243590610144359061016435166117d3565b604080519115158252519081900360200190f35b34801561049057600080fd5b50610470600160a060020a036004351661183d565b3480156104b157600080fd5b506101cc600160a060020a0360043516611852565b3480156104d257600080fd5b506101cc6118b1565b3480156104e757600080fd5b506101cc600435611933565b3480156104ff57600080fd5b506103fa611953565b34801561051457600080fd5b506101e3600435611962565b34801561052c57600080fd5b506101cc600160a060020a0360043516602435611977565b34801561055057600080fd5b506103fa611b12565b34801561056557600080fd5b506101e3600160a060020a0360043516611b21565b34801561058657600080fd5b506101cc600160a060020a0360043516602435611b3c565b3480156105aa57600080fd5b50610470600160a060020a0360043516602435611b73565b3480156105ce57600080fd5b5061047060048035600160a060020a0316906024803591604435918201910135611b93565b3480156105ff57600080fd5b506101cc600160a060020a0360043516611d35565b34801561062057600080fd5b506103fa611e57565b34801561063557600080fd5b506101e3600160a060020a0360043516611e66565b34801561065657600080fd5b506101cc600435602435604435611e78565b34801561067457600080fd5b506101cc600160a060020a0360043516611ec1565b34801561069557600080fd5b506101e3600160a060020a0360043581169060243516611f16565b3480156106bc57600080fd5b506106c8600435611f41565b6040805192835260208301919091528051918290030190f35b3480156106ed57600080fd5b506101e3600435611f5a565b34801561070557600080fd5b506101cc600160a060020a03600435166024351515611f6c565b34801561072b57600080fd5b506101e3600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e435166101043561012435611fbd565b600160a060020a038116600090815260008051602061256c833981519152602052604090205461079a90346122b0565b600160a060020a038216600081815260008051602061256c8339815191526020908152604080832085905580519283529082019290925234818301526060810192909252517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a150565b60085481565b6000308c8c8c8c8c8c8c6040516020018089600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140188600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140187815260200186600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140185815260200184815260200183815260200182600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831061091f5780518252601f199092019160209182019101610900565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600160a060020a038c16600090815260068352848120828252909252929020549194505060ff169150819050610a94575085600160a060020a031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310610a035780518252601f1990920191602091820191016109e4565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060008084528383018087529190915260ff8e1683860152606083018d9052608083018c9052935160a08084019750919550601f1981019492819003909101925090865af1158015610a7f573d6000803e3d6000fd5b50505060206040510351600160a060020a0316145b8015610aa05750874211155b8015610ada5750600160a060020a03861660009081526007602090815260408083208484529091529020548b90610ad790846122b0565b11155b1515610ae557600080fd5b610af38c8c8c8c8a876122ca565b600160a060020a0386166000908152600760209081526040808320848452909152902054610b2190836122b0565b600160a060020a03871660009081526007602090815260408083208584529091529020557f9af54f3727fc9dd2ab4bb1beceebee0465565940fc9121ae2e87892df9b99f1a8c838c8e8d8302811515610b7657fe5b60408051600160a060020a03968716815260208101959095529285168484015204606083015291891660808201523360a082015260c081018490524260e08201529051908190036101000190a1505050505050505050505050565b604080516c01000000000000000000000000308102602080840191909152600160a060020a03808b1683026034850152604884018a9052881682026068840152607c8301879052609c830186905260bc8301859052339190910260dc830152825160d081840301815260f0909201928390528151600093918291908401908083835b60208310610c725780518252601f199092019160209182019101610c53565b51815160001960209485036101000a0190811690199190911617905260408051949092018490038420336000818152600684528481208382528452849020805460ff19166001179055600160a060020a038f811687529286018e9052918c1685840152606085018b9052608085018a905260a0850189905260c085019190915290519095507f3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e8594509182900360e001925050a150505050505050565b600760209081526000928352604080842090915290825290205481565b604080516c01000000000000000000000000308102602080840191909152600160a060020a03808e1683026034850152604884018d90528b1682026068840152607c83018a9052609c830189905260bc8301889052339190910260dc830152825160d081840301815260f0909201928390528151600093918291908401908083835b60208310610dec5780518252601f199092019160209182019101610dcd565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912033600090815260068352848120828252909252929020549194505060ff169150819050610f485750604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151339360019392909182918401908083835b60208310610eb75780518252601f199092019160209182019101610e98565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060008084528383018087529190915260ff8d1683860152606083018c9052608083018b9052935160a08084019750919550601f1981019492819003909101925090865af1158015610f33573d6000803e3d6000fd5b50505060206040510351600160a060020a0316145b1515610f5357600080fd5b3360008181526007602090815260408083208584528252918290208c90558151600160a060020a038e811682529181018d9052908b1681830152606081018a90526080810189905260a0810188905260c081019290925260ff861660e0830152610100820185905261012082018490526101408201839052517fc492b04027c671b0548e5bd4639174bf1d425fe5f94566809f148b0fc6cda204918190036101600190a150505050505050505050565b604080516c01000000000000000000000000308102602080840191909152600160a060020a03808c1683026034850152604884018b9052808a1683026068850152607c8401899052609c840188905260bc8401879052851690910260dc830152825160d081840301815260f0909201928390528151600093849392909182918401908083835b602083106110a85780518252601f199092019160209182019101611089565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600160a060020a039890981660009081526007825283812098815297905250909420549a9950505050505050505050565b33600090815260008051602061256c833981519152602052604090205481111561112a57600080fd5b33600090815260008051602061256c833981519152602052604090205461115190826124f5565b33600081815260008051602061256c8339815191526020526040808220939093559151909183156108fc02918491818181858888f1935050505015801561119c573d6000803e3d6000fd5b5033600081815260008051602061256c8339815191526020908152604080832054815193845291830193909352818301849052606082015290517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679181900360800190a150565b600160a060020a038216151561121857600080fd5b600160a060020a03821660009081526009602052604090205460ff16156113a857600160a060020a03821660009081526009602052604090206001015442101561126157600080fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b1580156112cf57600080fd5b505af11580156112e3573d6000803e3d6000fd5b505050506040513d60208110156112f957600080fd5b5051151561130657600080fd5b600160a060020a038216600090815260056020908152604080832033845290915290205461133490826122b0565b600160a060020a03831660008181526005602090815260408083203380855290835292819020859055805193845290830191909152818101849052606082019290925290517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a161150a565b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b15801561141657600080fd5b505af115801561142a573d6000803e3d6000fd5b505050506040513d602081101561144057600080fd5b5051151561144d57600080fd5b600160a060020a0380831660009081526005602090815260408083206004549094168352929052205461148090826122b0565b600160a060020a038084166000818152600560208181526040808420600480548816865290835281852097909755338085529282528084209654909516835294855290839020548351928352938201528082018490526060810192909252517f0d0d8b0237a7894a7c9fc3d0a983bd42663c792c277df1c6df07e3962e4c29a69181900360800190a15b5050565b600560209081526000928352604080842090915290825290205481565b3360009081526003602052604081205460ff16151561154657fe5b83156116a6576115da85600160a060020a03166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b505050506040513d60208110156115d057600080fd5b5051600854612509565b9050600081116115e957600080fd5b600160a060020a0380861660009081526005602090815260408083206004549094168352929052205481111561161e57600080fd5b60048054604080517fe473c74f000000000000000000000000000000000000000000000000000000008152600160a060020a03898116948201949094529051929091169163e473c74f9160248082019260009290919082900301818387803b15801561168957600080fd5b505af115801561169d573d6000803e3d6000fd5b5050505061172a565b60048054604080517f842a8bf6000000000000000000000000000000000000000000000000000000008152600160a060020a03898116948201949094529051929091169163842a8bf69160248082019260009290919082900301818387803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b505050505b600160a060020a038516600081815260096020908152604091829020805488151560ff1990911681178255600190910187905582519384529083015281810185905260608201849052517fd84efa85ce21ebc48f44b73043ac7b09daa8c745f674422b78381404cb4ab4269181900360800190a15050505050565b6009602052600090815260409020805460019091015460ff9091169082565b600454600160a060020a031681565b600160a060020a03808d166000908152600560209081526040808320938516835292905290812054831180159061181b5750826118188e8e8e8e8e8e8e8e8e8e611fbd565b10155b15156118295750600061182d565b5060015b9c9b505050505050505050505050565b60036020526000908152604090205460ff1681565b3360009081526003602052604090205460ff16151561186d57fe5b600160a060020a038116151561188257600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a03163314156119315760015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b3360009081526003602052604090205460ff16151561194e57fe5b600855565b600054600160a060020a031681565b6000908152600b602052604090206001015490565b600160a060020a038216151561198c57600080fd5b600160a060020a03821660009081526005602090815260408083203384529091529020548111156119bc57600080fd5b600160a060020a03821660009081526005602090815260408083203384529091529020546119ea90826124f5565b600160a060020a0383166000818152600560209081526040808320338085529083528184209590955580517fa9059cbb00000000000000000000000000000000000000000000000000000000815260048101959095526024850186905251929363a9059cbb9360448083019491928390030190829087803b158015611a6e57600080fd5b505af1158015611a82573d6000803e3d6000fd5b505050506040513d6020811015611a9857600080fd5b50511515611aa557600080fd5b600160a060020a03821660008181526005602090815260408083203380855290835292819020548151948552918401929092528282018490526060830152517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679181900360800190a15050565b600254600160a060020a031681565b600160a060020a03166000908152600a602052604090205490565b3360009081526003602052604090205460ff161515611b5757fe5b600160a060020a039091166000908152600a6020526040902055565b600660209081526000928352604080842090915290825290205460ff1681565b6000811515611c7a573360009081526009602052604090205460ff168015611bcd5750336000908152600960205260409020600101544210155b1515611bd557fe5b336000908152600560209081526040808320600160a060020a0389168452909152902054611c0390856122b0565b336000818152600560209081526040808320600160a060020a038b1680855290835292819020859055805193845290830191909152818101879052606082019290925290517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a1506001611d2d565b336000908152600560209081526040808320600454600160a060020a03168452909152902054611caa90856122b0565b33600081815260056020908152604080832060048054600160a060020a03908116865282855283862097909755548616845282529182902054825193845293891690830152818101879052606082019290925290517f0d0d8b0237a7894a7c9fc3d0a983bd42663c792c277df1c6df07e3962e4c29a69181900360800190a15060015b949350505050565b600054600160a060020a03163314611d4957fe5b600160a060020a03808216600081815260096020526040808220805460ff191660019081178255429101556004805482517fe473c74f000000000000000000000000000000000000000000000000000000008152918201949094529051929093169263e473c74f926024808301939282900301818387803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505060408051600160a060020a03851681526001602082015242818301527f4552433230000000000000000000000000000000000000000000000000000000606082015290517fd84efa85ce21ebc48f44b73043ac7b09daa8c745f674422b78381404cb4ab4269350908190036080019150a150565b600154600160a060020a031681565b600a6020526000908152604090205481565b3360009081526003602052604090205460ff161515611e9357fe5b60408051808201825292835260208084019283526000948552600b9052909220905181559051600190910155565b600054600160a060020a03163314611ed557fe5b600160a060020a0381161515611ee757fe5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b600b602052600090815260409020805460019091015482565b6000908152600b602052604090205490565b600054600160a060020a03163314611f8057fe5b600160a060020a0382161515611f9257fe5b600160a060020a03919091166000908152600360205260409020805460ff1916911515919091179055565b604080516c01000000000000000000000000308102602080840191909152600160a060020a03808f1683026034850152604884018e9052808d1683026068850152607c84018c9052609c84018b905260bc84018a9052881690910260dc830152825160d081840301815260f090920192839052815160009384938493849391929182918401908083835b602083106120665780518252601f199092019160209182019101612047565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600160a060020a038e16600090815260068352848120828252909252929020549196505060ff169150819050612200575087600160a060020a031660018460405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061214a5780518252601f19909201916020918201910161212b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020898989604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156121eb573d6000803e3d6000fd5b50505060206040510351600160a060020a0316145b801561220c5750894211155b151561221b576000935061229f565b600160a060020a038816600090815260076020908152604080832086845290915290205461224a908e906124f5565b600160a060020a03808e166000908152600560209081526040808320938d16835292905220549092508b9061227f908f612540565b81151561228857fe5b0490508082101561229b5781935061229f565b8093505b5050509a9950505050505050505050565b6000828201838110156122bf57fe5b8091505b5092915050565b600160a060020a0382166000908152600a60209081526040808320548352600b9091528120548190670de0b6b3a764000090612307908590612540565b81151561231057fe5b336000908152600a60209081526040808320548352600b9091529020600101549190049250670de0b6b3a76400009061234a908590612540565b81151561235357fe5b600160a060020a038a166000908152600560209081526040808320338452909152902054919004915061238f9061238a85846122b0565b6124f5565b600160a060020a03898116600090815260056020908152604080832033845290915280822093909355908616815220546123d2906123cd85856124f5565b6122b0565b600160a060020a03898116600090815260056020908152604080832089851684529091528082209390935560045490911681522054612415906123cd84846122b0565b600160a060020a03808a166000908152600560208181526040808420600454861685528252808420959095558a84168352908152838220928816825291909152205461247590886124668887612540565b81151561246f57fe5b046124f5565b600160a060020a0387811660009081526005602090815260408083209389168352929052818120929092553382529020546124c490886124b58887612540565b8115156124be57fe5b046122b0565b600160a060020a03909616600090815260056020908152604080832033845290915290209590955550505050505050565b6000808383111561250257fe5b5050900390565b60008083151561251c57600091506122c3565b5082820282848281151561252c57fe5b041461253457fe5b61271090049392505050565b60008083151561255357600091506122c3565b5082820282848281151561256357fe5b04146122bf57fe0005b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bca165627a7a72305820efaf60ea9c8555b4c762cec1559c9a4a3a01c65ae627891988f2826377242ab700290000000000000000000000009a156f934c3542ef6a4443ce9a91d2d768fc01c1

Deployed Bytecode

0x6080604052600436106101b65763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663030111c881146101ce5780630a19b14a146101f55780630b9276661461024457806319774d4314610278578063278b8c0e1461029c5780632d804ca2146102dd5780632e1a7d4d1461031a578063338b5dea14610332578063508493bc146103565780635b470a251461037d5780635fb2386e146103a957806365e17c9d146103e55780636c86888b146104165780636e84f8701461048457806371ffcb16146104a557806379ba5097146104c6578063853d5465146104db5780638da5cb5b146104f35780638dbbbe10146105085780639e281a98146105205780639e5fd0bb14610544578063ae20314614610559578063b311db2f1461057a578063bb5f46291461059e578063c0ee0b8a146105c2578063c84668cb146105f3578063d4ee1d9014610614578063de32b68014610629578063e7fcde9b1461064a578063f2fde38b14610668578063f7888aec14610689578063f7ddab95146106b0578063fa58f510146106e1578063faad6eb5146106f9578063fb6e155f1461071f575b600034116101c357600080fd5b6101cc3361076a565b005b3480156101da57600080fd5b506101e361080c565b60408051918252519081900360200190f35b34801561020157600080fd5b506101cc600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e43516610104356101243561014435610812565b34801561025057600080fd5b506101cc600160a060020a03600435811690602435906044351660643560843560a435610bd1565b34801561028457600080fd5b506101e3600160a060020a0360043516602435610d2e565b3480156102a857600080fd5b506101cc600160a060020a03600435811690602435906044351660643560843560a43560ff60c4351660e43561010435610d4b565b3480156102e957600080fd5b506101e3600160a060020a0360043581169060243590604435811690606435906084359060a4359060c43516611003565b34801561032657600080fd5b506101cc600435611101565b34801561033e57600080fd5b506101cc600160a060020a0360043516602435611203565b34801561036257600080fd5b506101e3600160a060020a036004358116906024351661150e565b34801561038957600080fd5b506101cc600160a060020a0360043516602435151560443560643561152b565b3480156103b557600080fd5b506103ca600160a060020a03600435166117a5565b60408051921515835260208301919091528051918290030190f35b3480156103f157600080fd5b506103fa6117c4565b60408051600160a060020a039092168252519081900360200190f35b34801561042257600080fd5b50610470600160a060020a0360043581169060243590604435811690606435906084359060a4359060c43581169060ff60e435169061010435906101243590610144359061016435166117d3565b604080519115158252519081900360200190f35b34801561049057600080fd5b50610470600160a060020a036004351661183d565b3480156104b157600080fd5b506101cc600160a060020a0360043516611852565b3480156104d257600080fd5b506101cc6118b1565b3480156104e757600080fd5b506101cc600435611933565b3480156104ff57600080fd5b506103fa611953565b34801561051457600080fd5b506101e3600435611962565b34801561052c57600080fd5b506101cc600160a060020a0360043516602435611977565b34801561055057600080fd5b506103fa611b12565b34801561056557600080fd5b506101e3600160a060020a0360043516611b21565b34801561058657600080fd5b506101cc600160a060020a0360043516602435611b3c565b3480156105aa57600080fd5b50610470600160a060020a0360043516602435611b73565b3480156105ce57600080fd5b5061047060048035600160a060020a0316906024803591604435918201910135611b93565b3480156105ff57600080fd5b506101cc600160a060020a0360043516611d35565b34801561062057600080fd5b506103fa611e57565b34801561063557600080fd5b506101e3600160a060020a0360043516611e66565b34801561065657600080fd5b506101cc600435602435604435611e78565b34801561067457600080fd5b506101cc600160a060020a0360043516611ec1565b34801561069557600080fd5b506101e3600160a060020a0360043581169060243516611f16565b3480156106bc57600080fd5b506106c8600435611f41565b6040805192835260208301919091528051918290030190f35b3480156106ed57600080fd5b506101e3600435611f5a565b34801561070557600080fd5b506101cc600160a060020a03600435166024351515611f6c565b34801561072b57600080fd5b506101e3600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e435166101043561012435611fbd565b600160a060020a038116600090815260008051602061256c833981519152602052604090205461079a90346122b0565b600160a060020a038216600081815260008051602061256c8339815191526020908152604080832085905580519283529082019290925234818301526060810192909252517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a150565b60085481565b6000308c8c8c8c8c8c8c6040516020018089600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140188600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140187815260200186600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140185815260200184815260200183815260200182600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831061091f5780518252601f199092019160209182019101610900565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600160a060020a038c16600090815260068352848120828252909252929020549194505060ff169150819050610a94575085600160a060020a031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310610a035780518252601f1990920191602091820191016109e4565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060008084528383018087529190915260ff8e1683860152606083018d9052608083018c9052935160a08084019750919550601f1981019492819003909101925090865af1158015610a7f573d6000803e3d6000fd5b50505060206040510351600160a060020a0316145b8015610aa05750874211155b8015610ada5750600160a060020a03861660009081526007602090815260408083208484529091529020548b90610ad790846122b0565b11155b1515610ae557600080fd5b610af38c8c8c8c8a876122ca565b600160a060020a0386166000908152600760209081526040808320848452909152902054610b2190836122b0565b600160a060020a03871660009081526007602090815260408083208584529091529020557f9af54f3727fc9dd2ab4bb1beceebee0465565940fc9121ae2e87892df9b99f1a8c838c8e8d8302811515610b7657fe5b60408051600160a060020a03968716815260208101959095529285168484015204606083015291891660808201523360a082015260c081018490524260e08201529051908190036101000190a1505050505050505050505050565b604080516c01000000000000000000000000308102602080840191909152600160a060020a03808b1683026034850152604884018a9052881682026068840152607c8301879052609c830186905260bc8301859052339190910260dc830152825160d081840301815260f0909201928390528151600093918291908401908083835b60208310610c725780518252601f199092019160209182019101610c53565b51815160001960209485036101000a0190811690199190911617905260408051949092018490038420336000818152600684528481208382528452849020805460ff19166001179055600160a060020a038f811687529286018e9052918c1685840152606085018b9052608085018a905260a0850189905260c085019190915290519095507f3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e8594509182900360e001925050a150505050505050565b600760209081526000928352604080842090915290825290205481565b604080516c01000000000000000000000000308102602080840191909152600160a060020a03808e1683026034850152604884018d90528b1682026068840152607c83018a9052609c830189905260bc8301889052339190910260dc830152825160d081840301815260f0909201928390528151600093918291908401908083835b60208310610dec5780518252601f199092019160209182019101610dcd565b51815160209384036101000a6000190180199092169116179052604080519290940182900390912033600090815260068352848120828252909252929020549194505060ff169150819050610f485750604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c909201928390528151339360019392909182918401908083835b60208310610eb75780518252601f199092019160209182019101610e98565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060008084528383018087529190915260ff8d1683860152606083018c9052608083018b9052935160a08084019750919550601f1981019492819003909101925090865af1158015610f33573d6000803e3d6000fd5b50505060206040510351600160a060020a0316145b1515610f5357600080fd5b3360008181526007602090815260408083208584528252918290208c90558151600160a060020a038e811682529181018d9052908b1681830152606081018a90526080810189905260a0810188905260c081019290925260ff861660e0830152610100820185905261012082018490526101408201839052517fc492b04027c671b0548e5bd4639174bf1d425fe5f94566809f148b0fc6cda204918190036101600190a150505050505050505050565b604080516c01000000000000000000000000308102602080840191909152600160a060020a03808c1683026034850152604884018b9052808a1683026068850152607c8401899052609c840188905260bc8401879052851690910260dc830152825160d081840301815260f0909201928390528151600093849392909182918401908083835b602083106110a85780518252601f199092019160209182019101611089565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600160a060020a039890981660009081526007825283812098815297905250909420549a9950505050505050505050565b33600090815260008051602061256c833981519152602052604090205481111561112a57600080fd5b33600090815260008051602061256c833981519152602052604090205461115190826124f5565b33600081815260008051602061256c8339815191526020526040808220939093559151909183156108fc02918491818181858888f1935050505015801561119c573d6000803e3d6000fd5b5033600081815260008051602061256c8339815191526020908152604080832054815193845291830193909352818301849052606082015290517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679181900360800190a150565b600160a060020a038216151561121857600080fd5b600160a060020a03821660009081526009602052604090205460ff16156113a857600160a060020a03821660009081526009602052604090206001015442101561126157600080fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b1580156112cf57600080fd5b505af11580156112e3573d6000803e3d6000fd5b505050506040513d60208110156112f957600080fd5b5051151561130657600080fd5b600160a060020a038216600090815260056020908152604080832033845290915290205461133490826122b0565b600160a060020a03831660008181526005602090815260408083203380855290835292819020859055805193845290830191909152818101849052606082019290925290517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a161150a565b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390529051600160a060020a038416916323b872dd9160648083019260209291908290030181600087803b15801561141657600080fd5b505af115801561142a573d6000803e3d6000fd5b505050506040513d602081101561144057600080fd5b5051151561144d57600080fd5b600160a060020a0380831660009081526005602090815260408083206004549094168352929052205461148090826122b0565b600160a060020a038084166000818152600560208181526040808420600480548816865290835281852097909755338085529282528084209654909516835294855290839020548351928352938201528082018490526060810192909252517f0d0d8b0237a7894a7c9fc3d0a983bd42663c792c277df1c6df07e3962e4c29a69181900360800190a15b5050565b600560209081526000928352604080842090915290825290205481565b3360009081526003602052604081205460ff16151561154657fe5b83156116a6576115da85600160a060020a03166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156115a657600080fd5b505af11580156115ba573d6000803e3d6000fd5b505050506040513d60208110156115d057600080fd5b5051600854612509565b9050600081116115e957600080fd5b600160a060020a0380861660009081526005602090815260408083206004549094168352929052205481111561161e57600080fd5b60048054604080517fe473c74f000000000000000000000000000000000000000000000000000000008152600160a060020a03898116948201949094529051929091169163e473c74f9160248082019260009290919082900301818387803b15801561168957600080fd5b505af115801561169d573d6000803e3d6000fd5b5050505061172a565b60048054604080517f842a8bf6000000000000000000000000000000000000000000000000000000008152600160a060020a03898116948201949094529051929091169163842a8bf69160248082019260009290919082900301818387803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b505050505b600160a060020a038516600081815260096020908152604091829020805488151560ff1990911681178255600190910187905582519384529083015281810185905260608201849052517fd84efa85ce21ebc48f44b73043ac7b09daa8c745f674422b78381404cb4ab4269181900360800190a15050505050565b6009602052600090815260409020805460019091015460ff9091169082565b600454600160a060020a031681565b600160a060020a03808d166000908152600560209081526040808320938516835292905290812054831180159061181b5750826118188e8e8e8e8e8e8e8e8e8e611fbd565b10155b15156118295750600061182d565b5060015b9c9b505050505050505050505050565b60036020526000908152604090205460ff1681565b3360009081526003602052604090205460ff16151561186d57fe5b600160a060020a038116151561188257600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a03163314156119315760015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b565b3360009081526003602052604090205460ff16151561194e57fe5b600855565b600054600160a060020a031681565b6000908152600b602052604090206001015490565b600160a060020a038216151561198c57600080fd5b600160a060020a03821660009081526005602090815260408083203384529091529020548111156119bc57600080fd5b600160a060020a03821660009081526005602090815260408083203384529091529020546119ea90826124f5565b600160a060020a0383166000818152600560209081526040808320338085529083528184209590955580517fa9059cbb00000000000000000000000000000000000000000000000000000000815260048101959095526024850186905251929363a9059cbb9360448083019491928390030190829087803b158015611a6e57600080fd5b505af1158015611a82573d6000803e3d6000fd5b505050506040513d6020811015611a9857600080fd5b50511515611aa557600080fd5b600160a060020a03821660008181526005602090815260408083203380855290835292819020548151948552918401929092528282018490526060830152517ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679181900360800190a15050565b600254600160a060020a031681565b600160a060020a03166000908152600a602052604090205490565b3360009081526003602052604090205460ff161515611b5757fe5b600160a060020a039091166000908152600a6020526040902055565b600660209081526000928352604080842090915290825290205460ff1681565b6000811515611c7a573360009081526009602052604090205460ff168015611bcd5750336000908152600960205260409020600101544210155b1515611bd557fe5b336000908152600560209081526040808320600160a060020a0389168452909152902054611c0390856122b0565b336000818152600560209081526040808320600160a060020a038b1680855290835292819020859055805193845290830191909152818101879052606082019290925290517fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79181900360800190a1506001611d2d565b336000908152600560209081526040808320600454600160a060020a03168452909152902054611caa90856122b0565b33600081815260056020908152604080832060048054600160a060020a03908116865282855283862097909755548616845282529182902054825193845293891690830152818101879052606082019290925290517f0d0d8b0237a7894a7c9fc3d0a983bd42663c792c277df1c6df07e3962e4c29a69181900360800190a15060015b949350505050565b600054600160a060020a03163314611d4957fe5b600160a060020a03808216600081815260096020526040808220805460ff191660019081178255429101556004805482517fe473c74f000000000000000000000000000000000000000000000000000000008152918201949094529051929093169263e473c74f926024808301939282900301818387803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505060408051600160a060020a03851681526001602082015242818301527f4552433230000000000000000000000000000000000000000000000000000000606082015290517fd84efa85ce21ebc48f44b73043ac7b09daa8c745f674422b78381404cb4ab4269350908190036080019150a150565b600154600160a060020a031681565b600a6020526000908152604090205481565b3360009081526003602052604090205460ff161515611e9357fe5b60408051808201825292835260208084019283526000948552600b9052909220905181559051600190910155565b600054600160a060020a03163314611ed557fe5b600160a060020a0381161515611ee757fe5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b600b602052600090815260409020805460019091015482565b6000908152600b602052604090205490565b600054600160a060020a03163314611f8057fe5b600160a060020a0382161515611f9257fe5b600160a060020a03919091166000908152600360205260409020805460ff1916911515919091179055565b604080516c01000000000000000000000000308102602080840191909152600160a060020a03808f1683026034850152604884018e9052808d1683026068850152607c84018c9052609c84018b905260bc84018a9052881690910260dc830152825160d081840301815260f090920192839052815160009384938493849391929182918401908083835b602083106120665780518252601f199092019160209182019101612047565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600160a060020a038e16600090815260068352848120828252909252929020549196505060ff169150819050612200575087600160a060020a031660018460405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061214a5780518252601f19909201916020918201910161212b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020898989604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156121eb573d6000803e3d6000fd5b50505060206040510351600160a060020a0316145b801561220c5750894211155b151561221b576000935061229f565b600160a060020a038816600090815260076020908152604080832086845290915290205461224a908e906124f5565b600160a060020a03808e166000908152600560209081526040808320938d16835292905220549092508b9061227f908f612540565b81151561228857fe5b0490508082101561229b5781935061229f565b8093505b5050509a9950505050505050505050565b6000828201838110156122bf57fe5b8091505b5092915050565b600160a060020a0382166000908152600a60209081526040808320548352600b9091528120548190670de0b6b3a764000090612307908590612540565b81151561231057fe5b336000908152600a60209081526040808320548352600b9091529020600101549190049250670de0b6b3a76400009061234a908590612540565b81151561235357fe5b600160a060020a038a166000908152600560209081526040808320338452909152902054919004915061238f9061238a85846122b0565b6124f5565b600160a060020a03898116600090815260056020908152604080832033845290915280822093909355908616815220546123d2906123cd85856124f5565b6122b0565b600160a060020a03898116600090815260056020908152604080832089851684529091528082209390935560045490911681522054612415906123cd84846122b0565b600160a060020a03808a166000908152600560208181526040808420600454861685528252808420959095558a84168352908152838220928816825291909152205461247590886124668887612540565b81151561246f57fe5b046124f5565b600160a060020a0387811660009081526005602090815260408083209389168352929052818120929092553382529020546124c490886124b58887612540565b8115156124be57fe5b046122b0565b600160a060020a03909616600090815260056020908152604080832033845290915290209590955550505050505050565b6000808383111561250257fe5b5050900390565b60008083151561251c57600091506122c3565b5082820282848281151561252c57fe5b041461253457fe5b61271090049392505050565b60008083151561255357600091506122c3565b5082820282848281151561256357fe5b04146122bf57fe0005b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bca165627a7a72305820efaf60ea9c8555b4c762cec1559c9a4a3a01c65ae627891988f2826377242ab70029

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

0000000000000000000000009a156f934c3542ef6a4443ce9a91d2d768fc01c1

-----Decoded View---------------
Arg [0] : feeAccount_ (address): 0x9a156f934C3542EF6A4443ce9a91d2D768FC01c1

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009a156f934c3542ef6a4443ce9a91d2d768fc01c1


Swarm Source

bzzr://efaf60ea9c8555b4c762cec1559c9a4a3a01c65ae627891988f2826377242ab7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.