ETH Price: $2,607.76 (-6.09%)

Token

DunkPay (DNK)
 

Overview

Max Total Supply

10,001,000 DNK

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
36,701.664799999999999999 DNK

Value
$0.00
0xeb97444a0f0781890b8e7e317fcb0853a46880e6
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

DunkPay is a billing system service with cryptocurrency.

ICO Information

Project Sector : Payments
ICO Start Date : May 1, 2018
ICO Price  : 0.001 ETH
Bonus : 0% - 50%
Country : Hong Kong

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DunkPayToken

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-04-26
*/

pragma solidity ^0.4.16;

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

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

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

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

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

contract Ownable {
    address public owner;

    function Ownable() public {
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address newOwner) onlyOwner public {
        owner = newOwner;
    }
}

contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    emit Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    emit Unpause();
  }
}

interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) external; }

contract TokenERC20 is Pausable{
    
    using SafeMath for uint256;    
    
    // Public variables of the token
    string public name;
    string public symbol;
    uint8 public decimals = 18;
    // 18 decimals is the strongly suggested default, avoid changing it
    uint256 public totalSupply;
    uint256 totalSupplyForDivision;

    // This creates an array with all balances
    mapping (address => uint256) public balanceOf; 
    mapping (address => mapping (address => uint256)) public allowance;

    // This generates a public event on the blockchain that will notify clients
    event Transfer(address indexed from, address indexed to, uint256 value);

    // This notifies clients about the amount burnt
    event Burn(address indexed from, uint256 value);

    /**
     * Constrctor function
     *
     * Initializes contract with initial supply tokens to the creator of the contract
     */
    function TokenERC20(
        uint256 initialSupply,
        string tokenName,
        string tokenSymbol
    ) public {
        totalSupply = initialSupply * 10 ** uint256(decimals);  // Update total supply with the decimal amount
        balanceOf[msg.sender] = totalSupply;                // Give the creator all initial tokens
        name = tokenName;                                   // Set the name for display purposes
        symbol = tokenSymbol;
    }
    
    /**
     * Internal transfer, only can be called by this contract
     */
    function _transfer(address _from, address _to, uint _value) internal whenNotPaused{
        // Prevent transfer to 0x0 address. Use burn() instead
        require(_to != 0x0);
        // Check if the sender has enough
        require(balanceOf[_from] >= _value);
        // Check for overflows
        require(balanceOf[_to].add(_value) > balanceOf[_to]);
        // Save this for an assertion in the future
        uint previousBalances = balanceOf[_from].add(balanceOf[_to]);
        // Subtract from the sender
        balanceOf[_from] = balanceOf[_from].sub(_value);
        // Add the same to the recipient
        balanceOf[_to] = balanceOf[_to].add(_value);
        emit Transfer(_from, _to, _value);
        // Asserts are used to use static analysis to find bugs in your code. They should never fail
        assert(balanceOf[_from].add(balanceOf[_to]) == previousBalances);
    }

    /**
     * Transfer tokens
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transfer(address _to, uint256 _value) public whenNotPaused {
        _transfer(msg.sender, _to, _value);
    }

    /**
     * Transfer tokens from other address
     *
     * Send `_value` tokens to `_to` in behalf of `_from`
     *
     * @param _from The address of the sender
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);     // Check allowance
        allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value);
        _transfer(_from, _to, _value);
        return true;
    }

    /**
     * Set allowance for other address
     *
     * Allows `_spender` to spend no more than `_value` tokens in your behalf
     *
     * @param _spender The address authorized to spend
     * @param _value the max amount they can spend
     */
    function approve(address _spender, uint256 _value) public whenNotPaused
        returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        return true;
    }

    /**
     * Set allowance for other address and notify
     *
     * Allows `_spender` to spend no more than `_value` tokens in your behalf, and then ping the contract about it
     *
     * @param _spender The address authorized to spend
     * @param _value the max amount they can spend
     * @param _extraData some extra information to send to the approved contract
     */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) whenNotPaused
        public
        returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, this, _extraData);
            return true;
        }
    }

    /**
     * Destroy tokens
     *
     * Remove `_value` tokens from the system irreversibly
     *
     * @param _value the amount of money to burn
     */
    function burn(uint256 _value) public whenPaused returns (bool success) {
        require(balanceOf[msg.sender] >= _value);   // Check if the sender has enough
        balanceOf[msg.sender] = balanceOf[msg.sender].sub(_value);            // Subtract from the sender
        totalSupply = totalSupply.sub(_value);                      // Updates totalSupply
        totalSupplyForDivision = totalSupply;                              // Update totalSupply
        emit Burn(msg.sender, _value);
        return true;
    }
    /**
     * Destroy tokens from other account
     *
     * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
     *
     * @param _from the address of the sender
     * @param _value the amount of money to burn
     */
    function burnFrom(address _from, uint256 _value) public whenPaused returns (bool success) {
        require(balanceOf[_from] >= _value);                // Check if the targeted balance is enough
        require(_value <= allowance[_from][msg.sender]);    // Check allowance
        balanceOf[_from] = balanceOf[_from].sub(_value);                         // Subtract from the targeted balance
        allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value);             // Subtract from the sender's allowance
        totalSupply = totalSupply.sub(_value);                              // Update totalSupply
        totalSupplyForDivision = totalSupply;                              // Update totalSupply
        emit Burn(_from, _value);
        return true;
    }
}

/******************************************/
/*       ADVANCED TOKEN STARTS HERE       */
/******************************************/

contract DunkPayToken is TokenERC20 {

    uint256 public sellPrice;
    uint256 public buyPrice;
    uint256 public buySupply;
    uint256 public totalEth;
    uint256 minimumAmountForPos;
    mapping (address => bool) public frozenAccount;

    /* This generates a public event on the blockchain that will notify clients */
    event FrozenFunds(address target, bool frozen);

    /* Initializes contract with initial supply tokens to the creator of the contract */
    function DunkPayToken() TokenERC20(totalSupply, name, symbol) public {

        buyPrice = 1000;
        sellPrice = 1000;
        
        name = "DunkPay";
        symbol = "DNK";
        totalSupply = buyPrice * 10000 * 10 ** uint256(decimals);
        minimumAmountForPos = buyPrice * 1 * 10 ** uint256(decimals);
        balanceOf[msg.sender] = buyPrice * 5100 * 10 ** uint256(decimals);              
        balanceOf[this] = totalSupply - balanceOf[msg.sender];
        buySupply = balanceOf[this];
        allowance[this][msg.sender] = buySupply;
        totalSupplyForDivision = totalSupply;// Set the symbol for display purposes
        totalEth = address(this).balance;
        
    }

    function percent(uint256 numerator, uint256 denominator , uint precision) returns(uint256 quotient) {
        if(numerator <= 0)
        {
            return 0;
        }
        // caution, check safe-to-multiply here
        uint256 _numerator  = numerator.mul(10 ** uint256(precision+1));
        // with rounding of last digit
        uint256 _quotient =  ((_numerator.div(denominator)).sub(5)).div(10);
        return  _quotient;
    }
    
    function getZero(uint256 number) returns(uint num_len) {
        uint i = 1;
        uint _num_len = 0;
        while( number > i )
        {
            i *= 10;
            _num_len++;
        }
        return _num_len;
    }

    /* Internal transfer, only can be called by this contract */
    function _transfer(address _from, address _to, uint _value) internal {
        require (_to != 0x0);                               // Prevent transfer to 0x0 address. Use burn() instead
        require (balanceOf[_from] >= _value);               // Check if the sender has enough
        require (balanceOf[_to] + _value > balanceOf[_to]); // Check for overflows
        require(!frozenAccount[_from]);                     // Check if sender is frozen
        require(!frozenAccount[_to]);                       // Check if recipient is frozen
        balanceOf[_from] -= _value;                         // Subtract from the sender
        balanceOf[_to] += _value;                           // Add the same to the recipient
        emit Transfer(_from, _to, _value);
    }

    /// @notice Create `mintedAmount` tokens and send it to `target`
    /// @param target Address to receive the tokens
    /// @param mintedAmount the amount of tokens it will receive
    function mintToken(address target, uint256 mintedAmount) onlyOwner public {
        balanceOf[target] += mintedAmount;
        totalSupply += mintedAmount;
        emit Transfer(0, this, mintedAmount);
        emit Transfer(this, target, mintedAmount);
    }
    
    function AddSupply(uint256 mintedAmount) onlyOwner public {
        buySupply += mintedAmount; 
        allowance[this][msg.sender] += mintedAmount;
        mintToken(address(this), mintedAmount);
    }
    
    /// @notice `freeze? Prevent | Allow` `target` from sending & receiving tokens
    /// @param target Address to be frozen
    /// @param freeze either to freeze it or not
    function freezeAccount(address target, bool freeze) onlyOwner public {
        frozenAccount[target] = freeze;
        emit FrozenFunds(target, freeze);
    }

    /// @notice Allow users to buy tokens for `newBuyPrice` eth and sell tokens for `newSellPrice` eth
    /// @param newSellPrice Price the users can sell to the contract
    /// @param newBuyPrice Price users can buy from the contract
    function setPrices(uint256 newSellPrice, uint256 newBuyPrice) onlyOwner public {
        sellPrice = newSellPrice;
        buyPrice = newBuyPrice;
    }

    function transfer(address _to, uint256 _value) public whenNotPaused {
        if(_to == address(this)){
            sell(_value);
        }else{
            _transfer(msg.sender, _to, _value);
        }
    }

    function () payable public {
        buy();
    }

    /// @notice Buy tokens from contract by sending ether
    function buy() payable whenNotPaused public {
        uint256 dnkForBuy = msg.value;
        uint zeros = getZero(totalSupply);
        uint256 interest = (dnkForBuy.div(2)).mul(percent(balanceOf[this], totalSupply , zeros));
        interest = interest.div(10 ** uint256(zeros));
        dnkForBuy = dnkForBuy.add(interest);
        require(dnkForBuy > 0);  
        _transfer(this, msg.sender, dnkForBuy.mul(buyPrice));              // makes the transfers
        totalEth = totalEth.add(msg.value);
    }

    /// @notice Sell `amount` tokens to contract
    /// @param amount amount of tokens to be sold
    function sell(uint256 amount) whenNotPaused public {
        uint256 ethForSell =  amount;
        uint zeros = getZero(totalSupply);
        uint256 interest = (ethForSell.div(2)).mul(percent(balanceOf[this], totalSupply , zeros));
        interest = interest.div(10 ** uint256(zeros));
        ethForSell = ethForSell.div(2) + interest;
        ethForSell = ethForSell.sub(ethForSell.div(100)); // minus 1% for refund fee.   
        ethForSell = ethForSell.div(sellPrice);
        require(ethForSell > 0);  
        uint256 minimumAmount = address(this).balance; 
        require(minimumAmount >= ethForSell);      // checks if the contract has enough ether to buy
        _transfer(msg.sender, this, amount);              // makes the transfers
        msg.sender.transfer(ethForSell);          // sends ether to the seller. It's important to do this last to avoid recursion attacks
        totalEth = totalEth.sub(ethForSell);
    }
    
    /// @notice withDraw `amount` ETH to contract
    /// @param amount amount of ETH to be sent
    function withdraw(uint256 amount) onlyOwner public {
        uint256 minimumAmount = address(this).balance; 
        require(minimumAmount >= amount);      // checks if the contract has enough ether to buy
        msg.sender.transfer(amount);          // sends ether to the seller. It's important to do this last to avoid recursion attacks
        totalEth = totalEth.sub(amount);
    }

    function pos(address[] _holders, uint256 mintedAmount) onlyOwner whenPaused public {
        for (uint i = 0; i < _holders.length; i++) {
            uint zeros = getZero(totalSupplyForDivision);
            uint256 holderBalance = balanceOf[_holders[i]];
            if(holderBalance>minimumAmountForPos)
            {
                uint256 amount = percent(holderBalance,totalSupplyForDivision,zeros).mul(mintedAmount);
                amount = amount.div(10 ** uint256(zeros));
                if(amount > 0){
                    mintToken(_holders[i], amount);
                }
            }
        }
        totalSupplyForDivision = totalSupply;
    }

    function bankrupt(address[] _holders) onlyOwner whenPaused public {
        uint256 restBalance = balanceOf[this];
        totalSupplyForDivision = totalSupply.sub(restBalance);                             
        totalEth = address(this).balance;
        for (uint i = 0; i < _holders.length; i++) {
          uint zeros = getZero(totalSupplyForDivision);
          uint256 amount = percent(balanceOf[_holders[i]],totalSupplyForDivision , zeros).mul(totalEth);
          amount = amount.div(10 ** uint256(zeros));
          if(amount > 0){
            uint256 minimumAmount = address(this).balance; 
            require(minimumAmount >= amount);      // checks if the contract has enough ether to buy
            uint256 holderBalance = balanceOf[_holders[i]];
            balanceOf[_holders[i]] = balanceOf[_holders[i]].sub(holderBalance);                        // Subtract from the targeted balance
            totalSupply = totalSupply.sub(holderBalance);            
            _holders[i].transfer(amount);          // sends ether to the seller. It's important to do this last to 
          } 
        }
        totalSupplyForDivision = totalSupply;
        totalEth = address(this).balance;
    }    
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"},{"name":"precision","type":"uint256"}],"name":"percent","outputs":[{"name":"quotient","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newSellPrice","type":"uint256"},{"name":"newBuyPrice","type":"uint256"}],"name":"setPrices","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"mintedAmount","type":"uint256"}],"name":"AddSupply","outputs":[],"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":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holders","type":"address[]"}],"name":"bankrupt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"mintedAmount","type":"uint256"}],"name":"mintToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"number","type":"uint256"}],"name":"getZero","outputs":[{"name":"num_len","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buySupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_holders","type":"address[]"},{"name":"mintedAmount","type":"uint256"}],"name":"pos","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","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":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]

608060405260008060146101000a81548160ff0219169083151502179055506012600360006101000a81548160ff021916908360ff1602179055503480156200004757600080fd5b5060045460018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620000e55780601f10620000b957610100808354040283529160200191620000e5565b820191906000526020600020905b815481529060010190602001808311620000c757829003601f168201915b505050505060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620001845780601f10620001585761010080835404028352916020019162000184565b820191906000526020600020905b8154815290600101906020018083116200016657829003601f168201915b5050505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900460ff1660ff16600a0a8302600481905550600454600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600190805190602001906200024592919062000535565b5080600290805190602001906200025e92919062000535565b505050506103e86009819055506103e86008819055506040805190810160405280600781526020017f44756e6b5061790000000000000000000000000000000000000000000000000081525060019080519060200190620002c192919062000535565b506040805190810160405280600381526020017f444e4b0000000000000000000000000000000000000000000000000000000000815250600290805190602001906200030f92919062000535565b50600360009054906101000a900460ff1660ff16600a0a6127106009540202600481905550600360009054906101000a900460ff1660ff16600a0a60016009540202600c81905550600360009054906101000a900460ff1660ff16600a0a6113ec6009540202600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460045403600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600a81905550600a54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004546005819055503073ffffffffffffffffffffffffffffffffffffffff1631600b81905550620005e4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200057857805160ff1916838001178555620005a9565b82800160010185558215620005a9579182015b82811115620005a85782518255916020019190600101906200058b565b5b509050620005b89190620005bc565b5090565b620005e191905b80821115620005dd576000816000905550600101620005c3565b5090565b90565b61298880620005f46000396000f3006080604052600436106101a0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680622c1a9e146101aa57806305fefda7146101ff57806306fdde0314610236578063095ea7b3146102c657806318160ddd1461032b5780631f90ffc81461035657806323b872dd146103835780632e1a7d4d14610408578063313ce567146104355780633c3c9c23146104665780633f4ba83a1461049157806342966c68146104a85780634b750334146104ed578063577131ac146105185780635c975abb1461057e57806370a08231146105ad57806379c650681461060457806379cc6790146106515780637c82eff7146106b65780638456cb59146106f75780638620410b1461070e5780638da5cb5b1461073957806395d89b4114610790578063a6f2ae3a14610820578063a9059cbb1461082a578063b414d4b614610877578063b51dfa9d146108d2578063cae9ca51146108fd578063dd62ed3e146109a8578063e4849b3214610a1f578063e724529c14610a4c578063e992f6cd14610a9b578063f2fde38b14610b0b575b6101a8610b4e565b005b3480156101b657600080fd5b506101e9600480360381019080803590602001909291908035906020019092919080359060200190929190505050610c6c565b6040518082815260200191505060405180910390f35b34801561020b57600080fd5b506102346004803603810190808035906020019092919080359060200190929190505050610ce6565b005b34801561024257600080fd5b5061024b610d53565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028b578082015181840152602081019050610270565b50505050905090810190601f1680156102b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d257600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610df1565b604051808215151515815260200191505060405180910390f35b34801561033757600080fd5b50610340610e99565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b5061038160048036038101908080359060200190929190505050610e9f565b005b34801561038f57600080fd5b506103ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fa1565b604051808215151515815260200191505060405180910390f35b34801561041457600080fd5b506104336004803603810190808035906020019092919050505061116e565b005b34801561044157600080fd5b5061044a61125a565b604051808260ff1660ff16815260200191505060405180910390f35b34801561047257600080fd5b5061047b61126d565b6040518082815260200191505060405180910390f35b34801561049d57600080fd5b506104a6611273565b005b3480156104b457600080fd5b506104d360048036038101908080359060200190929190505050611331565b604051808215151515815260200191505060405180910390f35b3480156104f957600080fd5b506105026114ab565b6040518082815260200191505060405180910390f35b34801561052457600080fd5b5061057c600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506114b1565b005b34801561058a57600080fd5b5061059361185c565b604051808215151515815260200191505060405180910390f35b3480156105b957600080fd5b506105ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061186f565b6040518082815260200191505060405180910390f35b34801561061057600080fd5b5061064f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611887565b005b34801561065d57600080fd5b5061069c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119f8565b604051808215151515815260200191505060405180910390f35b3480156106c257600080fd5b506106e160048036038101908080359060200190929190505050611d0d565b6040518082815260200191505060405180910390f35b34801561070357600080fd5b5061070c611d40565b005b34801561071a57600080fd5b50610723611e00565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e611e06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079c57600080fd5b506107a5611e2b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e55780820151818401526020810190506107ca565b50505050905090810190601f1680156108125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610828610b4e565b005b34801561083657600080fd5b50610875600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ec9565b005b34801561088357600080fd5b506108b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f37565b604051808215151515815260200191505060405180910390f35b3480156108de57600080fd5b506108e7611f57565b6040518082815260200191505060405180910390f35b34801561090957600080fd5b5061098e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611f5d565b604051808215151515815260200191505060405180910390f35b3480156109b457600080fd5b50610a09600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fc565b6040518082815260200191505060405180910390f35b348015610a2b57600080fd5b50610a4a60048036038101908080359060200190929190505050612121565b005b348015610a5857600080fd5b50610a99600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506122e1565b005b348015610aa757600080fd5b50610b096004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190505050612406565b005b348015610b1757600080fd5b50610b4c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612583565b005b60008060008060149054906101000a900460ff16151515610b6e57600080fd5b349250610b7c600454611d0d565b9150610bef610bcd600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460045485610c6c565b610be160028661262190919063ffffffff16565b61263790919063ffffffff16565b9050610c0782600a0a8261262190919063ffffffff16565b9050610c1c818461266f90919063ffffffff16565b9250600083111515610c2d57600080fd5b610c4c3033610c476009548761263790919063ffffffff16565b61268b565b610c6134600b5461266f90919063ffffffff16565b600b81905550505050565b60008060008086111515610c835760009250610cdd565b610c9c60018501600a0a8761263790919063ffffffff16565b9150610cd7600a610cc96005610cbb898761262190919063ffffffff16565b61294390919063ffffffff16565b61262190919063ffffffff16565b90508092505b50509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d4157600080fd5b81600881905550806009819055505050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610de95780601f10610dbe57610100808354040283529160200191610de9565b820191906000526020600020905b815481529060010190602001808311610dcc57829003601f168201915b505050505081565b60008060149054906101000a900460ff16151515610e0e57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610efa57600080fd5b80600a6000828254019250508190555080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550610f9e3082611887565b50565b60008060149054906101000a900460ff16151515610fbe57600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561104957600080fd5b6110d882600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061116384848461268b565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111cb57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff163190508181101515156111f457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561123a573d6000803e3d6000fd5b5061125082600b5461294390919063ffffffff16565b600b819055505050565b600360009054906101000a900460ff1681565b600b5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ce57600080fd5b600060149054906101000a900460ff1615156112e957600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60008060149054906101000a900460ff16151561134d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561139b57600080fd5b6113ed82600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114458260045461294390919063ffffffff16565b6004819055506004546005819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b60085481565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561151557600080fd5b600060149054906101000a900460ff16151561153057600080fd5b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506115878660045461294390919063ffffffff16565b6005819055503073ffffffffffffffffffffffffffffffffffffffff1631600b81905550600094505b865185101561182c576115c4600554611d0d565b935061163d600b5461162f600660008b8a8151811015156115e157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460055488610c6c565b61263790919063ffffffff16565b925061165584600a0a8461262190919063ffffffff16565b9250600083111561181f573073ffffffffffffffffffffffffffffffffffffffff1631915082821015151561168957600080fd5b60066000888781518110151561169b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061174b81600660008a898151811015156116f857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b60066000898881518110151561175d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba8160045461294390919063ffffffff16565b60048190555086858151811015156117ce57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561181d573d6000803e3d6000fd5b505b84806001019550506115b0565b6004546005819055503073ffffffffffffffffffffffffffffffffffffffff1631600b8190555050505050505050565b600060149054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118e257600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550806004600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060149054906101000a900460ff161515611a1457600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611a6257600080fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611aed57600080fd5b611b3f82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ca68260045461294390919063ffffffff16565b6004819055506004546005819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b600080600060019150600090505b81841115611d3657600a820291508080600101915050611d1b565b8092505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d9b57600080fd5b600060149054906101000a900460ff16151515611db757600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ec15780601f10611e9657610100808354040283529160200191611ec1565b820191906000526020600020905b815481529060010190602001808311611ea457829003601f168201915b505050505081565b600060149054906101000a900460ff16151515611ee557600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f2757611f2281612121565b611f33565b611f3233838361268b565b5b5050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600a5481565b600080600060149054906101000a900460ff16151515611f7c57600080fd5b849050611f898585610df1565b156120f3578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612083578082015181840152602081019050612068565b50505050905090810190601f1680156120b05780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b50505050600191506120f4565b5b509392505050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600080600080600060149054906101000a900460ff1615151561214357600080fd5b849350612151600454611d0d565b92506121c46121a2600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460045486610c6c565b6121b660028761262190919063ffffffff16565b61263790919063ffffffff16565b91506121dc83600a0a8361262190919063ffffffff16565b9150816121f360028661262190919063ffffffff16565b01935061221c61220d60648661262190919063ffffffff16565b8561294390919063ffffffff16565b93506122336008548561262190919063ffffffff16565b935060008411151561224457600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631905083811015151561226d57600080fd5b61227833308761268b565b3373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501580156122be573d6000803e3d6000fd5b506122d484600b5461294390919063ffffffff16565b600b819055505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561233c57600080fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561246757600080fd5b600060149054906101000a900460ff16151561248257600080fd5b600093505b85518410156125725761249b600554611d0d565b92506006600087868151811015156124af57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600c548211156125655761251f856125118460055487610c6c565b61263790919063ffffffff16565b905061253783600a0a8261262190919063ffffffff16565b9050600081111561256457612563868581518110151561255357fe5b9060200190602002015182611887565b5b5b8380600101945050612487565b600454600581905550505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125de57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000818381151561262e57fe5b04905092915050565b60008083141561264a5760009050612669565b818302905081838281151561265b57fe5b0414151561266557fe5b8090505b92915050565b6000818301905082811015151561268257fe5b80905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff16141515156126b157600080fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156126ff57600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111151561278d57600080fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156127e657600080fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561283f57600080fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600082821115151561295157fe5b8183039050929150505600a165627a7a723058203bf815a0f8f556950cc2b622cc7a7c729604858f430830eaf8d59516dbf96fa40029

Deployed Bytecode

0x6080604052600436106101a0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680622c1a9e146101aa57806305fefda7146101ff57806306fdde0314610236578063095ea7b3146102c657806318160ddd1461032b5780631f90ffc81461035657806323b872dd146103835780632e1a7d4d14610408578063313ce567146104355780633c3c9c23146104665780633f4ba83a1461049157806342966c68146104a85780634b750334146104ed578063577131ac146105185780635c975abb1461057e57806370a08231146105ad57806379c650681461060457806379cc6790146106515780637c82eff7146106b65780638456cb59146106f75780638620410b1461070e5780638da5cb5b1461073957806395d89b4114610790578063a6f2ae3a14610820578063a9059cbb1461082a578063b414d4b614610877578063b51dfa9d146108d2578063cae9ca51146108fd578063dd62ed3e146109a8578063e4849b3214610a1f578063e724529c14610a4c578063e992f6cd14610a9b578063f2fde38b14610b0b575b6101a8610b4e565b005b3480156101b657600080fd5b506101e9600480360381019080803590602001909291908035906020019092919080359060200190929190505050610c6c565b6040518082815260200191505060405180910390f35b34801561020b57600080fd5b506102346004803603810190808035906020019092919080359060200190929190505050610ce6565b005b34801561024257600080fd5b5061024b610d53565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028b578082015181840152602081019050610270565b50505050905090810190601f1680156102b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d257600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610df1565b604051808215151515815260200191505060405180910390f35b34801561033757600080fd5b50610340610e99565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b5061038160048036038101908080359060200190929190505050610e9f565b005b34801561038f57600080fd5b506103ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fa1565b604051808215151515815260200191505060405180910390f35b34801561041457600080fd5b506104336004803603810190808035906020019092919050505061116e565b005b34801561044157600080fd5b5061044a61125a565b604051808260ff1660ff16815260200191505060405180910390f35b34801561047257600080fd5b5061047b61126d565b6040518082815260200191505060405180910390f35b34801561049d57600080fd5b506104a6611273565b005b3480156104b457600080fd5b506104d360048036038101908080359060200190929190505050611331565b604051808215151515815260200191505060405180910390f35b3480156104f957600080fd5b506105026114ab565b6040518082815260200191505060405180910390f35b34801561052457600080fd5b5061057c600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506114b1565b005b34801561058a57600080fd5b5061059361185c565b604051808215151515815260200191505060405180910390f35b3480156105b957600080fd5b506105ee600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061186f565b6040518082815260200191505060405180910390f35b34801561061057600080fd5b5061064f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611887565b005b34801561065d57600080fd5b5061069c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119f8565b604051808215151515815260200191505060405180910390f35b3480156106c257600080fd5b506106e160048036038101908080359060200190929190505050611d0d565b6040518082815260200191505060405180910390f35b34801561070357600080fd5b5061070c611d40565b005b34801561071a57600080fd5b50610723611e00565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e611e06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561079c57600080fd5b506107a5611e2b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e55780820151818401526020810190506107ca565b50505050905090810190601f1680156108125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610828610b4e565b005b34801561083657600080fd5b50610875600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ec9565b005b34801561088357600080fd5b506108b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f37565b604051808215151515815260200191505060405180910390f35b3480156108de57600080fd5b506108e7611f57565b6040518082815260200191505060405180910390f35b34801561090957600080fd5b5061098e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611f5d565b604051808215151515815260200191505060405180910390f35b3480156109b457600080fd5b50610a09600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fc565b6040518082815260200191505060405180910390f35b348015610a2b57600080fd5b50610a4a60048036038101908080359060200190929190505050612121565b005b348015610a5857600080fd5b50610a99600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506122e1565b005b348015610aa757600080fd5b50610b096004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190505050612406565b005b348015610b1757600080fd5b50610b4c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612583565b005b60008060008060149054906101000a900460ff16151515610b6e57600080fd5b349250610b7c600454611d0d565b9150610bef610bcd600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460045485610c6c565b610be160028661262190919063ffffffff16565b61263790919063ffffffff16565b9050610c0782600a0a8261262190919063ffffffff16565b9050610c1c818461266f90919063ffffffff16565b9250600083111515610c2d57600080fd5b610c4c3033610c476009548761263790919063ffffffff16565b61268b565b610c6134600b5461266f90919063ffffffff16565b600b81905550505050565b60008060008086111515610c835760009250610cdd565b610c9c60018501600a0a8761263790919063ffffffff16565b9150610cd7600a610cc96005610cbb898761262190919063ffffffff16565b61294390919063ffffffff16565b61262190919063ffffffff16565b90508092505b50509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d4157600080fd5b81600881905550806009819055505050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610de95780601f10610dbe57610100808354040283529160200191610de9565b820191906000526020600020905b815481529060010190602001808311610dcc57829003601f168201915b505050505081565b60008060149054906101000a900460ff16151515610e0e57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610efa57600080fd5b80600a6000828254019250508190555080600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550610f9e3082611887565b50565b60008060149054906101000a900460ff16151515610fbe57600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561104957600080fd5b6110d882600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061116384848461268b565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111cb57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff163190508181101515156111f457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561123a573d6000803e3d6000fd5b5061125082600b5461294390919063ffffffff16565b600b819055505050565b600360009054906101000a900460ff1681565b600b5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ce57600080fd5b600060149054906101000a900460ff1615156112e957600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60008060149054906101000a900460ff16151561134d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561139b57600080fd5b6113ed82600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114458260045461294390919063ffffffff16565b6004819055506004546005819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b60085481565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561151557600080fd5b600060149054906101000a900460ff16151561153057600080fd5b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205495506115878660045461294390919063ffffffff16565b6005819055503073ffffffffffffffffffffffffffffffffffffffff1631600b81905550600094505b865185101561182c576115c4600554611d0d565b935061163d600b5461162f600660008b8a8151811015156115e157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460055488610c6c565b61263790919063ffffffff16565b925061165584600a0a8461262190919063ffffffff16565b9250600083111561181f573073ffffffffffffffffffffffffffffffffffffffff1631915082821015151561168957600080fd5b60066000888781518110151561169b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061174b81600660008a898151811015156116f857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b60066000898881518110151561175d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ba8160045461294390919063ffffffff16565b60048190555086858151811015156117ce57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561181d573d6000803e3d6000fd5b505b84806001019550506115b0565b6004546005819055503073ffffffffffffffffffffffffffffffffffffffff1631600b8190555050505050505050565b600060149054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118e257600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550806004600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a38173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008060149054906101000a900460ff161515611a1457600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611a6257600080fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611aed57600080fd5b611b3f82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294390919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ca68260045461294390919063ffffffff16565b6004819055506004546005819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b600080600060019150600090505b81841115611d3657600a820291508080600101915050611d1b565b8092505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d9b57600080fd5b600060149054906101000a900460ff16151515611db757600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ec15780601f10611e9657610100808354040283529160200191611ec1565b820191906000526020600020905b815481529060010190602001808311611ea457829003601f168201915b505050505081565b600060149054906101000a900460ff16151515611ee557600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f2757611f2281612121565b611f33565b611f3233838361268b565b5b5050565b600d6020528060005260406000206000915054906101000a900460ff1681565b600a5481565b600080600060149054906101000a900460ff16151515611f7c57600080fd5b849050611f898585610df1565b156120f3578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612083578082015181840152602081019050612068565b50505050905090810190601f1680156120b05780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b50505050600191506120f4565b5b509392505050565b6007602052816000526040600020602052806000526040600020600091509150505481565b600080600080600060149054906101000a900460ff1615151561214357600080fd5b849350612151600454611d0d565b92506121c46121a2600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460045486610c6c565b6121b660028761262190919063ffffffff16565b61263790919063ffffffff16565b91506121dc83600a0a8361262190919063ffffffff16565b9150816121f360028661262190919063ffffffff16565b01935061221c61220d60648661262190919063ffffffff16565b8561294390919063ffffffff16565b93506122336008548561262190919063ffffffff16565b935060008411151561224457600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631905083811015151561226d57600080fd5b61227833308761268b565b3373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501580156122be573d6000803e3d6000fd5b506122d484600b5461294390919063ffffffff16565b600b819055505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561233c57600080fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561246757600080fd5b600060149054906101000a900460ff16151561248257600080fd5b600093505b85518410156125725761249b600554611d0d565b92506006600087868151811015156124af57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600c548211156125655761251f856125118460055487610c6c565b61263790919063ffffffff16565b905061253783600a0a8261262190919063ffffffff16565b9050600081111561256457612563868581518110151561255357fe5b9060200190602002015182611887565b5b5b8380600101945050612487565b600454600581905550505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125de57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000818381151561262e57fe5b04905092915050565b60008083141561264a5760009050612669565b818302905081838281151561265b57fe5b0414151561266557fe5b8090505b92915050565b6000818301905082811015151561268257fe5b80905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff16141515156126b157600080fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156126ff57600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111151561278d57600080fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156127e657600080fd5b600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561283f57600080fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600082821115151561295157fe5b8183039050929150505600a165627a7a723058203bf815a0f8f556950cc2b622cc7a7c729604858f430830eaf8d59516dbf96fa40029

Swarm Source

bzzr://3bf815a0f8f556950cc2b622cc7a7c729604858f430830eaf8d59516dbf96fa4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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