ETH Price: $2,667.70 (+1.09%)
Gas: 11 Gwei

Token

Mobile Ecosystem (MSCE)
 

Overview

Max Total Supply

500,000,000 MSCE

Holders

1,156

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
26 MSCE

Value
$0.00
0x332bf5cb5a8775b6890f80286e7442bab1e3d1b1
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MSCEVote

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-09-18
*/

pragma solidity ^0.4.23;


/*
 *             ╔═╗┌─┐┌─┐┬┌─┐┬┌─┐┬   ┌─────────────────────────┐ ╦ ╦┌─┐┌┐ ╔═╗┬┌┬┐┌─┐ 
 *             ║ ║├┤ ├┤ ││  │├─┤│   │          MSCE.vip       │ ║║║├┤ ├┴┐╚═╗│ │ ├┤  
 *             ╚═╝└  └  ┴└─┘┴┴ ┴┴─┘ └─┬─────────────────────┬─┘ ╚╩╝└─┘└─┘╚═╝┴ ┴ └─┘ 
 *   ┌────────────────────────────────┘                     └──────────────────────────────┐
 *   │    ┌─────────────────────────────────────────────────────────────────────────────┐  │
 *   └────┤ Dev:John ├──────────────────────┤ Boss:Jack ├──────────────────┤ Sup:Kilmas ├──┘
 *        └─────────────────────────────────────────────────────────────────────────────┘
 */

library SafeMath {

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

    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;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @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 {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address _who) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
  function allowance(address _owner, address _spender)
    public view returns (uint256);

  function transferFrom(address _from, address _to, uint256 _value)
    public returns (bool);

  function approve(address _spender, uint256 _value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) internal balances;

  uint256 internal totalSupply_;

  /**
  * @dev Total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev Transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_value <= balances[msg.sender]);
    require(_to != address(0));

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner];
  }
}

contract BurnableToken is BasicToken {

  event Burn(address indexed burner, uint256 value);

  /**
   * @dev Burns a specific amount of tokens.
   * @param _value The amount of token to be burned.
   */
  function burn(uint256 _value) public {
    _burn(msg.sender, _value);
  }

  function _burn(address _who, uint256 _value) internal {
    require(_value <= balances[_who]);
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure

    balances[_who] = balances[_who].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    emit Burn(_who, _value);
    emit Transfer(_who, address(0), _value);
  }
}




contract StandardToken is ERC20, BasicToken {

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


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
    public
    returns (bool)
  {
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);
    require(_to != address(0));

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(
    address _owner,
    address _spender
   )
    public
    view
    returns (uint256)
  {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(
    address _spender,
    uint256 _addedValue
  )
    public
    returns (bool)
  {
    allowed[msg.sender][_spender] = (
      allowed[msg.sender][_spender].add(_addedValue));
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(
    address _spender,
    uint256 _subtractedValue
  )
    public
    returns (bool)
  {
    uint256 oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue >= oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }



}

contract MSCE is Ownable, StandardToken, BurnableToken{
    using SafeMath for uint256;

    uint8 public constant TOKEN_DECIMALS = 18;

    string public name = "Mobile Ecosystem"; 
    string public symbol = "MSCE";
    uint8 public decimals = TOKEN_DECIMALS;


    uint256 public totalSupply = 500000000 *(10**uint256(TOKEN_DECIMALS)); 
    uint256 public soldSupply = 0; 
    uint256 public sellSupply = 0; 
    uint256 public buySupply = 0; 
    bool public stopSell = true;
    bool public stopBuy = false;

    uint256 public crowdsaleStartTime = block.timestamp;
    uint256 public crowdsaleEndTime = 1526831999;

    uint256 public crowdsaleTotal = 2000*40000*(10**18);


    uint256 public buyExchangeRate = 40000;   
    uint256 public sellExchangeRate = 100000;  
    address public ethFundDeposit;  


    bool public allowTransfers = true; 


    mapping (address => bool) public frozenAccount;

    bool public enableInternalLock = true;
    uint256 unitCount = 100; 
    uint256 unitTime = 1 days;
    uint256 lockTime = unitCount * unitTime;

    mapping (address => bool) public internalLockAccount;
    mapping (address => uint256) public releaseLockAccount;
    mapping (address => uint256) public lockAmount;
    mapping (address => uint256) public lockStartTime;
    mapping (address => uint256) public lockReleaseTime;

    event LockAmount(address _from, address _to, uint256 amount, uint256 releaseTime);
    event FrozenFunds(address target, bool frozen);
    event IncreaseSoldSaleSupply(uint256 _value);
    event DecreaseSoldSaleSupply(uint256 _value);

    function MSCE() public {
        balances[msg.sender] = totalSupply;
        ethFundDeposit = msg.sender;                      
        allowTransfers = true;
    }

    function _isUserInternalLock() internal view returns (bool) {

        return getAccountLockState(msg.sender);

    }

    function increaseSoldSaleSupply (uint256 _value) onlyOwner public {
        require (_value + soldSupply < totalSupply);
        soldSupply = soldSupply.add(_value);
        emit IncreaseSoldSaleSupply(_value);
    }

    function decreaseSoldSaleSupply (uint256 _value) onlyOwner public {
        require (soldSupply - _value > 0);
        soldSupply = soldSupply.sub(_value);
        emit DecreaseSoldSaleSupply(_value);
    }


    function setEthFundDeposit(address _ethFundDeposit) onlyOwner public {
        require(_ethFundDeposit != address(0));
        ethFundDeposit = _ethFundDeposit;
    }

    function transferETH() onlyOwner public {
        require(ethFundDeposit != address(0));
        require(this.balance != 0);
        require(ethFundDeposit.send(this.balance));
    }


    function setExchangeRate(uint256 _sellExchangeRate, uint256 _buyExchangeRate) onlyOwner public {
        sellExchangeRate = _sellExchangeRate;
        buyExchangeRate = _buyExchangeRate;
    }

    function setExchangeStatus(bool _stopSell, bool _stopBuy) onlyOwner public {
        stopSell = _stopSell;
        stopBuy = _stopBuy;
    }

    function setAllowTransfers(bool _allowTransfers) onlyOwner public {
        allowTransfers = _allowTransfers;
    }

    function setEnableInternalLock(bool _isEnable) onlyOwner public {
        enableInternalLock = _isEnable;
    }



    function getAccountUnlockTime(address _target) public view returns(uint256) {

        return releaseLockAccount[_target];

    }
    function getAccountLockState(address _target) public view returns(bool) {
        if(enableInternalLock && internalLockAccount[_target]){
            if((releaseLockAccount[_target] > 0)&&(releaseLockAccount[_target]<block.timestamp)){       
                return false;
            }          
            return true;
        }
        return false;

    }

    function setUnitTime(uint256 unit) external onlyOwner{
        unitTime = unit;
    }
    
    function isOwner() internal view returns(bool success) {
        if (msg.sender == owner) return true;
        return false;
    }
    /***************************************************/
    /*              BASE Functions                     */
    /***************************************************/

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        if (!isOwner()) {
            require (allowTransfers);
            require(!frozenAccount[_from]);                                         
            require(!frozenAccount[_to]);                                        
            require(!_isUserInternalLock());
        }
        return super.transferFrom(_from, _to, _value);
    }

    function transfer(address _to, uint256 _value) public returns (bool) {
        if (!isOwner()) {
            require (allowTransfers);
            require(!frozenAccount[msg.sender]);                                       
            require(!frozenAccount[_to]);                                             
            require(!_isUserInternalLock());
            require(_value <= balances[msg.sender] - lockAmount[msg.sender] + releasedAmount(msg.sender));
        }
        if(_value >= releasedAmount(msg.sender)){
            lockAmount[msg.sender] = lockAmount[msg.sender].sub(releasedAmount(msg.sender));
        }else{
            lockAmount[msg.sender] = lockAmount[msg.sender].sub(_value);
        }
        
        return super.transfer(_to, _value);
    }

    function approve(address _spender, uint256 _value) public returns (bool) {
        if (!isOwner()) {
            require (allowTransfers);
            require(!frozenAccount[msg.sender]);                                         
            require(!frozenAccount[_spender]);                                        
            require(!_isUserInternalLock());
            require(_value <= balances[msg.sender] - lockAmount[msg.sender] + releasedAmount(msg.sender));
        }
        if(_value >= releasedAmount(msg.sender)){
            lockAmount[msg.sender] = lockAmount[msg.sender].sub(releasedAmount(msg.sender));
        }else{
            lockAmount[msg.sender] = lockAmount[msg.sender].sub(_value);
        }
        return super.approve(_spender, _value);
    }

    function transferFromAdmin(address _from, address _to, uint256 _value) onlyOwner public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(_from, _to, _value);
        return true;
    }

    function () internal payable{

        uint256 currentTime = block.timestamp;
        require((currentTime>crowdsaleStartTime)&&(currentTime<crowdsaleEndTime));
        require(crowdsaleTotal>0);

        require(buy());

        crowdsaleTotal = crowdsaleTotal.sub(msg.value.mul(buyExchangeRate));

    }

    function buy() payable public returns (bool){


        uint256 amount = msg.value.mul(buyExchangeRate);

        require(!stopBuy);
        require(amount <= balances[owner]);

        balances[owner] = balances[owner].sub(amount);
        balances[msg.sender] = balances[msg.sender].add(amount);

        soldSupply = soldSupply.add(amount);
        buySupply = buySupply.add(amount);

        Transfer(owner, msg.sender, amount);
        return true;
    }

    function sell(uint256 amount) public {
        uint256 ethAmount = amount.div(sellExchangeRate);
        require(!stopSell);
        require(this.balance >= ethAmount);      
        require(ethAmount >= 1);      

        require(balances[msg.sender] >= amount);                 
        require(balances[owner] + amount > balances[owner]);       
        require(!frozenAccount[msg.sender]);                       
        require(!_isUserInternalLock());                                          

        balances[owner] = balances[owner].add(amount);
        balances[msg.sender] = balances[msg.sender].sub(amount);

        soldSupply = soldSupply.sub(amount);
        sellSupply = sellSupply.add(amount);

        Transfer(msg.sender, owner, amount);

        msg.sender.transfer(ethAmount); 
    }

    function setCrowdsaleStartTime(uint256 _crowdsaleStartTime) onlyOwner public {
        crowdsaleStartTime = _crowdsaleStartTime;
    }

    function setCrowdsaleEndTime(uint256 _crowdsaleEndTime) onlyOwner public {
        crowdsaleEndTime = _crowdsaleEndTime;
    }
   

    function setCrowdsaleTotal(uint256 _crowdsaleTotal) onlyOwner public {
        crowdsaleTotal = _crowdsaleTotal;
    }

    /***************************************************/
    /*              Lock Functions                     */
    /***************************************************/
    function transferLockAmount(address _to, uint256 _value) public{
        // require(_value >= _value, "Not enough MSCE");
        require(balances[msg.sender] >= _value, "Not enough MSCE");
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        lockAmount[_to] = lockAmount[_to].add(_value);
        _resetReleaseTime(_to);
        emit Transfer(msg.sender, _to, _value);
        emit LockAmount(msg.sender, _to, _value, uint256(now + lockTime));
    }

    function _resetReleaseTime(address _target) internal {
        lockStartTime[_target] = uint256(now);
        lockReleaseTime[_target] = uint256(now + lockTime);
    }

    function releasedAmount(address _target) public view returns (uint256) {
        if(now >= lockReleaseTime[_target]){
            return lockAmount[_target];
        }
        else{
            return (now - lockStartTime[_target]).div(unitTime).mul(lockAmount[_target]).div(100);
        }
    }
    
}


contract MSCEVote is MSCE {
    //Vote Setting
    uint256 votingRight = 10000;
    uint256 dealTime = 3 days;
    
     
    struct Vote{
        bool isActivated;
        bytes32 name;
        address target;
        address spender;
        uint256 targetAmount;
        bool freeze;
        string newName;
        string newSymbol;
        uint256 agreeSupply;
        uint256 disagreeSupply;
        uint256 startTime;
        uint256 endTime;
        uint256 releaseTime;
    }
 
    Vote[] public votes;

    mapping (uint256 => address) public voteToOwner;
    mapping (address => bool) public frozenAccount;

    event NewVote(address _initiator, bytes32 name, address target, uint256 targetAmount);

    modifier onlySuperNode() {
        require(balances[msg.sender] >= 5000000*(10**18), "Just for SuperNodes");
        _;
    }

    modifier onlyVotingRight() {
        require(balances[msg.sender] >= votingRight*(10**18), "You haven't voting right.");
        _;
    }    

    function createVote(bytes32 _name, address _target, address _spender,uint256 _targetAmount, bool _freeze, string _newName, string _newSymbol, uint256 _releaseTime) onlySuperNode public {
        uint256 id = votes.push(Vote(true, _name,  _target, _spender,_targetAmount, _freeze, _newName, _newSymbol, 0, 0, uint256(now), uint256(now + dealTime), _releaseTime)) - 1;
        voteToOwner[id] = msg.sender;
        emit NewVote(msg.sender, _name, _target, _targetAmount);
    }

    function mintToken(address target, uint256 mintedAmount) onlySuperNode public {
        createVote("MINT", target, target, mintedAmount, false, "", "", 0);
    }

    function destroyToken(address target, uint256 amount) onlySuperNode public {
        createVote("DESTROY", target, target, amount, false, "", "", 0);
    }

    function freezeAccount(address _target, bool freeze) onlySuperNode public {
        createVote("FREEZE", _target, _target, 0, freeze, "", "", 0);
    }

    function lockInternalAccount(address _target, bool _lock, uint256 _releaseTime) onlySuperNode public {
        require(_target != address(0));
        createVote("LOCK", _target, _target, 0, _lock, "", "", _releaseTime);
    }

    function setName(string _name) onlySuperNode public {
        createVote("CHANGENAME", msg.sender, msg.sender, 0, false, _name, "", 0);
        
    }

    function setSymbol(string _symbol) onlySuperNode public {
        createVote("CHANGESYMBOL", msg.sender, msg.sender, 0, false, "", _symbol, 0);
    }

    function transferFromAdmin(address _from, address _to, uint256 _value) onlySuperNode public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        createVote("TRANS",_from, _to, _value, false, "", "", 0);
        return true;
    }

    /***************************************************/
    /*              Vote Functions                     */
    /***************************************************/
    function getVote(uint _id) 
        public 
        view 
        returns (bool, bytes32, address, address, uint256, bool, string, string, uint256, uint256, uint256, uint256){
        Vote storage _vote = votes[_id];
        return(
            _vote.isActivated,
            _vote.name,
            _vote.target,
            _vote.spender,
            _vote.targetAmount,
            _vote.freeze,
            _vote.newName,
            _vote.newSymbol,
            _vote.agreeSupply,
            _vote.disagreeSupply,
            _vote.startTime,
            _vote.endTime
        );
    }

    function voteXId(uint256 _id, bool _agree) onlyVotingRight public{
        Vote storage vote = votes[_id];
        uint256 rate = 100;
        if(vote.name == "FREEZE")
        {
            rate = 30;
        }else if(vote.name == "DESTROY")
        {
            rate = 51;
        }
        else{
            rate = 80;
        }
        if(now > vote.endTime){
            vote.isActivated = false;
            votes[_id] = vote;
        }
        require(vote.isActivated == true, "The vote ended");
        if(_agree == true){
            vote.agreeSupply = vote.agreeSupply.add(balances[msg.sender]);
        }
        else{
            vote.disagreeSupply = vote.disagreeSupply.add(balances[msg.sender]);
        }

        if (vote.agreeSupply >= soldSupply * (rate/100)){
            executeVote(_id);
        }else if (vote.disagreeSupply >= soldSupply * ((100-rate)/100)) {
            vote.isActivated = false;
            votes[_id] = vote;
        }

    }

    function executeVote(uint256 _id)private{
        Vote storage vote = votes[_id];
        vote.isActivated = false;

        if(vote.name == "MINT"){
            balances[vote.target] = balances[vote.target].add(vote.targetAmount);
            totalSupply = totalSupply.add(vote.targetAmount);
            emit Transfer(0, this, vote.targetAmount);
            emit Transfer(this, vote.target, vote.targetAmount);
        }else if(vote.name == "DESTROY"){
            balances[vote.target] = balances[vote.target].sub(vote.targetAmount);
            totalSupply = totalSupply.sub(vote.targetAmount);
            emit Transfer(vote.target, this, vote.targetAmount);
            emit Transfer(this, 0, vote.targetAmount);
        }else if(vote.name == "CHANGENAME"){
            name = vote.newName;
        }else if(vote.name == "CHANGESYMBOL"){
            symbol = vote.newSymbol;
        }else if(vote.name == "FREEZE"){
            frozenAccount[vote.target] = vote.freeze;
            emit FrozenFunds(vote.target, vote.freeze);
        }else if(vote.name == "LOCK"){
            internalLockAccount[vote.target] = vote.freeze;
            releaseLockAccount[vote.target] = vote.endTime;
        }
        else if(vote.name == "TRANS"){
            balances[vote.target] = balances[vote.target].sub(vote.targetAmount);
            balances[vote.spender] = balances[vote.spender].add(vote.targetAmount);
            emit Transfer(vote.target, vote.spender, vote.targetAmount);
        }
        votes[_id] = vote;
    }

    
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_crowdsaleEndTime","type":"uint256"}],"name":"setCrowdsaleEndTime","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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_crowdsaleStartTime","type":"uint256"}],"name":"setCrowdsaleStartTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFromAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellExchangeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_target","type":"address"},{"name":"_spender","type":"address"},{"name":"_targetAmount","type":"uint256"},{"name":"_freeze","type":"bool"},{"name":"_newName","type":"string"},{"name":"_newSymbol","type":"string"},{"name":"_releaseTime","type":"uint256"}],"name":"createVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"releasedAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allowTransfers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"unit","type":"uint256"}],"name":"setUnitTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"decreaseSoldSaleSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stopBuy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"enableInternalLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_lock","type":"bool"},{"name":"_releaseTime","type":"uint256"}],"name":"lockInternalAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getVote","outputs":[{"name":"","type":"bool"},{"name":"","type":"bytes32"},{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_DECIMALS","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"votes","outputs":[{"name":"isActivated","type":"bool"},{"name":"name","type":"bytes32"},{"name":"target","type":"address"},{"name":"spender","type":"address"},{"name":"targetAmount","type":"uint256"},{"name":"freeze","type":"bool"},{"name":"newName","type":"string"},{"name":"newSymbol","type":"string"},{"name":"agreeSupply","type":"uint256"},{"name":"disagreeSupply","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"endTime","type":"uint256"},{"name":"releaseTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopSell","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"_id","type":"uint256"},{"name":"_agree","type":"bool"}],"name":"voteXId","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_stopSell","type":"bool"},{"name":"_stopBuy","type":"bool"}],"name":"setExchangeStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"increaseSoldSaleSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lockAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"amount","type":"uint256"}],"name":"destroyToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferLockAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_isEnable","type":"bool"}],"name":"setEnableInternalLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_crowdsaleTotal","type":"uint256"}],"name":"setCrowdsaleTotal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lockStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"internalLockAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"ethFundDeposit","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"getAccountUnlockTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"releaseLockAccount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"getAccountLockState","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ethFundDeposit","type":"address"}],"name":"setEthFundDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyExchangeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_allowTransfers","type":"bool"}],"name":"setAllowTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"transferETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleStartTime","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":true,"inputs":[{"name":"","type":"uint256"}],"name":"voteToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sellExchangeRate","type":"uint256"},{"name":"_buyExchangeRate","type":"uint256"}],"name":"setExchangeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lockReleaseTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"soldSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_initiator","type":"address"},{"indexed":false,"name":"name","type":"bytes32"},{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"targetAmount","type":"uint256"}],"name":"NewVote","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_from","type":"address"},{"indexed":false,"name":"_to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"releaseTime","type":"uint256"}],"name":"LockAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_value","type":"uint256"}],"name":"IncreaseSoldSaleSupply","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_value","type":"uint256"}],"name":"DecreaseSoldSaleSupply","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"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":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60c0604052601060808190527f4d6f62696c652045636f73797374656d0000000000000000000000000000000060a090815262000040916004919062000185565b506040805180820190915260048082527f4d534345000000000000000000000000000000000000000000000000000000006020909201918252620000879160059162000185565b5060068054601260ff19918216179091556b019d971e4fe8401e740000006007819055600060088190556009819055600a819055600b80548416600190811761ff00191690915542600c55635b019b7f600d556a422ca8b0a00a4250000000600e55619c40600f55620186a0601055601180547401000000000000000000000000000000000000000060a060020a60ff0219918216811783556013805490971684179096556064601455620151806015556283d600601655612710601c556203f480601d55835433600160a060020a03199182168117865580865260209490945260409094209490945580549092161790911690911790556200022a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001c857805160ff1916838001178555620001f8565b82800160010185558215620001f8579182015b82811115620001f8578251825591602001919060010190620001db565b50620002069291506200020a565b5090565b6200022791905b8082111562000206576000815560010162000211565b90565b613b87806200023a6000396000f3006080604052600436106102ff5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041662ebc96e811461036d57806306fdde0314610387578063095ea7b3146104115780630967cff0146104495780630d27172014610461578063149f2fdb1461048b5780631565f12f146104b257806318160ddd1461056e5780631cf1bb72146105835780631d545d09146105a45780632185810b146105b957806323b872dd146105ce578063289799b7146105f8578063308f505b14610610578063313ce56714610625578063417998831461065057806342966c6814610668578063493a7209146106805780634b0e2c90146106955780635a4071fe146106aa5780635a55c1f0146106d35780635b7f415c146108435780635df813301461085857806361aebe59146109cf57806366188463146109e457806370a0823114610a08578063715018a614610a2957806379c6506814610a3e5780637c129c1c14610a6257806388f7c6d614610a7f5780638da5cb5b14610a9e5780639061a6e914610acf57806395bc3bd014610ae757806395d89b4114610b085780639b1ad79214610b1d5780639b69de7914610b415780639bcf735214610b655780639dec365e14610b7f5780639fab73f714610b97578063a4b03f5214610bb8578063a6f2ae3a14610bd9578063a81c3bdf14610be1578063a9059cbb14610bf6578063aff1e0de14610c1a578063b414d4b614610c2f578063b51dfa9d14610c50578063b84c824614610c65578063c47f002714610cbe578063c92015f614610d17578063d622634714610d38578063d73dd62314610d59578063d86f8ccd14610d7d578063d903744114610d9e578063db1366bf14610dbf578063dd62ed3e14610dd4578063df50afa414610dfb578063e28d717b14610e15578063e2fc421d14610e2a578063e4849b3214610e3f578063e6ee3e6414610e57578063e724529c14610e6f578063f2fde38b14610e95578063f55ecf0614610eb6578063f90a902714610ed1578063fa2299ee14610ef2575b600c544290811180156103135750600d5481105b151561031e57600080fd5b600e5460001061032d57600080fd5b610335610f07565b151561034057600080fd5b610367610358600f543461102d90919063ffffffff16565b600e549063ffffffff61105c16565b600e5550005b34801561037957600080fd5b5061038560043561106e565b005b34801561039357600080fd5b5061039c61108a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d65781810151838201526020016103be565b50505050905090810190601f1680156104035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041d57600080fd5b50610435600160a060020a0360043516602435611118565b604080519115158252519081900360200190f35b34801561045557600080fd5b50610385600435611256565b34801561046d57600080fd5b50610435600160a060020a0360043581169060243516604435611272565b34801561049757600080fd5b506104a0611368565b60408051918252519081900360200190f35b3480156104be57600080fd5b50604080516020600460a43581810135601f81018490048402850184019095528484526103859482359460248035600160a060020a039081169660443590911695606435956084351515953695929460c494920191819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750509335945061136e9350505050565b34801561057a57600080fd5b506104a0611690565b34801561058f57600080fd5b506104a0600160a060020a0360043516611696565b3480156105b057600080fd5b506104a061173b565b3480156105c557600080fd5b50610435611741565b3480156105da57600080fd5b50610435600160a060020a0360043581169060243516604435611751565b34801561060457600080fd5b506103856004356117ea565b34801561061c57600080fd5b506104a0611806565b34801561063157600080fd5b5061063a61180c565b6040805160ff9092168252519081900360200190f35b34801561065c57600080fd5b50610385600435611815565b34801561067457600080fd5b5061038560043561188b565b34801561068c57600080fd5b50610435611898565b3480156106a157600080fd5b506104356118a6565b3480156106b657600080fd5b50610385600160a060020a036004351660243515156044356118af565b3480156106df57600080fd5b506106eb60043561197a565b604051808d1515151581526020018c600019166000191681526020018b600160a060020a0316600160a060020a031681526020018a600160a060020a0316600160a060020a03168152602001898152602001881515151581526020018060200180602001878152602001868152602001858152602001848152602001838103835289818151815260200191508051906020019080838360005b8381101561079c578181015183820152602001610784565b50505050905090810190601f1680156107c95780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b838110156107fc5781810151838201526020016107e4565b50505050905090810190601f1680156108295780820380516001836020036101000a031916815260200191505b509e50505050505050505050505050505060405180910390f35b34801561084f57600080fd5b5061063a611b79565b34801561086457600080fd5b50610870600435611b7e565b604051808e1515151581526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b600160a060020a0316600160a060020a031681526020018a815260200189151515158152602001806020018060200188815260200187815260200186815260200185815260200184815260200183810383528a818151815260200191508051906020019080838360005b8381101561092757818101518382015260200161090f565b50505050905090810190601f1680156109545780820380516001836020036101000a031916815260200191505b5083810382528951815289516020918201918b019080838360005b8381101561098757818101518382015260200161096f565b50505050905090810190601f1680156109b45780820380516001836020036101000a031916815260200191505b509f5050505050505050505050505050505060405180910390f35b3480156109db57600080fd5b50610435611d19565b3480156109f057600080fd5b50610435600160a060020a0360043516602435611d22565b348015610a1457600080fd5b506104a0600160a060020a0360043516611e11565b348015610a3557600080fd5b50610385611e2c565b348015610a4a57600080fd5b50610385600160a060020a0360043516602435611e8b565b348015610a6e57600080fd5b506103856004356024351515611f41565b348015610a8b57600080fd5b50610385600435151560243515156123af565b348015610aaa57600080fd5b50610ab36123e9565b60408051600160a060020a039092168252519081900360200190f35b348015610adb57600080fd5b506103856004356123f8565b348015610af357600080fd5b506104a0600160a060020a036004351661246d565b348015610b1457600080fd5b5061039c61247f565b348015610b2957600080fd5b50610385600160a060020a03600435166024356124da565b348015610b4d57600080fd5b50610385600160a060020a036004351660243561258c565b348015610b7157600080fd5b506103856004351515612721565b348015610b8b57600080fd5b5061038560043561274b565b348015610ba357600080fd5b506104a0600160a060020a0360043516612767565b348015610bc457600080fd5b50610435600160a060020a0360043516612779565b610435610f07565b348015610bed57600080fd5b50610ab361278e565b348015610c0257600080fd5b50610435600160a060020a036004351660243561279d565b348015610c2657600080fd5b506104a06128b8565b348015610c3b57600080fd5b50610435600160a060020a03600435166128be565b348015610c5c57600080fd5b506104a06128d2565b348015610c7157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103859436949293602493928401919081908401838280828437509497506128d89650505050505050565b348015610cca57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261038594369492936024939284019190819084018382808284375094975061297a9650505050505050565b348015610d2357600080fd5b506104a0600160a060020a0360043516612a1c565b348015610d4457600080fd5b506104a0600160a060020a0360043516612a37565b348015610d6557600080fd5b50610435600160a060020a0360043516602435612a49565b348015610d8957600080fd5b50610435600160a060020a0360043516612ae2565b348015610daa57600080fd5b50610385600160a060020a0360043516612b6e565b348015610dcb57600080fd5b506104a0612bbc565b348015610de057600080fd5b506104a0600160a060020a0360043581169060243516612bc2565b348015610e0757600080fd5b506103856004351515612bed565b348015610e2157600080fd5b50610385612c33565b348015610e3657600080fd5b506104a0612ca4565b348015610e4b57600080fd5b50610385600435612caa565b348015610e6357600080fd5b50610ab3600435612e58565b348015610e7b57600080fd5b50610385600160a060020a03600435166024351515612e73565b348015610ea157600080fd5b50610385600160a060020a0360043516612f25565b348015610ec257600080fd5b50610385600435602435612f45565b348015610edd57600080fd5b506104a0600160a060020a0360043516612f67565b348015610efe57600080fd5b506104a0612f79565b600080610f1f600f543461102d90919063ffffffff16565b600b54909150610100900460ff1615610f3757600080fd5b60008054600160a060020a0316815260016020526040902054811115610f5c57600080fd5b60008054600160a060020a0316815260016020526040902054610f85908263ffffffff61105c16565b60008054600160a060020a0316815260016020526040808220929092553381522054610fb7908263ffffffff612f7f16565b33600090815260016020526040902055600854610fda908263ffffffff612f7f16565b600855600a54610ff0908263ffffffff612f7f16565b600a556000546040805183815290513392600160a060020a031691600080516020613b3c833981519152919081900360200190a3600191505b5090565b600082151561103e57506000611056565b5081810281838281151561104e57fe5b041461105657fe5b92915050565b60008282111561106857fe5b50900390565b600054600160a060020a0316331461108557600080fd5b600d55565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156111105780601f106110e557610100808354040283529160200191611110565b820191906000526020600020905b8154815290600101906020018083116110f357829003601f168201915b505050505081565b6000611122612f8c565b15156111c85760115460a060020a900460ff16151561114057600080fd5b3360009081526012602052604090205460ff161561115d57600080fd5b600160a060020a03831660009081526012602052604090205460ff161561118357600080fd5b61118b612faf565b1561119557600080fd5b61119e33611696565b3360009081526019602090815260408083205460019092529091205403018211156111c857600080fd5b6111d133611696565b8210611214576111ff6111e333611696565b336000908152601960205260409020549063ffffffff61105c16565b33600090815260196020526040902055611245565b33600090815260196020526040902054611234908363ffffffff61105c16565b336000908152601960205260409020555b61124f8383612fbf565b9392505050565b600054600160a060020a0316331461126d57600080fd5b600c55565b336000908152600160205260408120546a0422ca8b0a00a42500000011156112d2576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b600160a060020a03831615156112e757600080fd5b600160a060020a03841660009081526001602052604090205482111561130c57600080fd5b61135e7f5452414e53000000000000000000000000000000000000000000000000000000858585600060206040519081016040528060008152506020604051908101604052806000815250600061136e565b5060019392505050565b60105481565b336000908152600160205260408120546a0422ca8b0a00a42500000011156113ce576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b604080516101a081018252600180825260208083018d8152600160a060020a03808e169585019586528c811660608601908152608086018d81528c151560a0880190815260c088018d815260e089018d905260006101008a018190526101208a01819052426101408b01819052601d54016101608b01526101808a018d9052601e8054808b01808355919092528a51600d9092027f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3508101805493151560ff1994851617815598517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3518201559b517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3528d018054918916600160a060020a031992831617905595517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3538d0180549190981696169590951790955591517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3548a0155517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35589018054911515919094161790925590518051949691959492936115b9937f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35690930192910190613a12565b5060e082015180516115d5916007840191602090910190613a12565b5061010082015160088201556101208201516009820155610140820151600a820155610160820151600b82015561018090910151600c90910155036000818152601f60209081526040918290208054600160a060020a0319163390811790915582519081529081018c9052600160a060020a038b16818301526060810189905290519192507f03493f239ae746243bd932fe008aab9958bea99169cc7d73fab2ceef9817b1ba919081900360800190a1505050505050505050565b60075481565b600160a060020a0381166000908152601b602052604081205442106116d45750600160a060020a038116600090815260196020526040902054611736565b600160a060020a038216600090815260196020908152604080832054601554601a909352922054611733926064926117279261171b9142919091039063ffffffff61302516565b9063ffffffff61102d16565b9063ffffffff61302516565b90505b919050565b600d5481565b60115460a060020a900460ff1681565b600061175b612f8c565b15156117d75760115460a060020a900460ff16151561177957600080fd5b600160a060020a03841660009081526012602052604090205460ff161561179f57600080fd5b600160a060020a03831660009081526012602052604090205460ff16156117c557600080fd5b6117cd612faf565b156117d757600080fd5b6117e284848461303a565b949350505050565b600054600160a060020a0316331461180157600080fd5b601555565b60095481565b60065460ff1681565b600054600160a060020a0316331461182c57600080fd5b6000816008540311151561183f57600080fd5b600854611852908263ffffffff61105c16565b6008556040805182815290517ff708844f569f2a630c36e2c8c1422c319aa04d0ef131636d78737df669e89b2f9181900360200190a150565b611895338261319f565b50565b600b54610100900460ff1681565b60135460ff1681565b336000908152600160205260409020546a0422ca8b0a00a425000000111561190f576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b600160a060020a038316151561192457600080fd5b6119757f4c4f434b000000000000000000000000000000000000000000000000000000008485600086602060405190810160405280600081525060206040519081016040528060008152508861136e565b505050565b6000806000806000806060806000806000806000601e8e81548110151561199d57fe5b90600052602060002090600d020190508060000160009054906101000a900460ff1681600101548260020160009054906101000a9004600160a060020a03168360030160009054906101000a9004600160a060020a031684600401548560050160009054906101000a900460ff168660060187600701886008015489600901548a600a01548b600b0154858054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611abc5780601f10611a9157610100808354040283529160200191611abc565b820191906000526020600020905b815481529060010190602001808311611a9f57829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015611b4a5780601f10611b1f57610100808354040283529160200191611b4a565b820191906000526020600020905b815481529060010190602001808311611b2d57829003601f168201915b505050505094509c509c509c509c509c509c509c509c509c509c509c509c505091939597999b5091939597999b565b601281565b601e805482908110611b8c57fe5b6000918252602091829020600d90910201805460018083015460028085015460038601546004870154600588015460068901805460408051601f6000199b841615610100029b909b01909216979097049889018c90048c0281018c0190965287865260ff9889169b509599600160a060020a039485169993909416979196911694919392830182828015611c615780601f10611c3657610100808354040283529160200191611c61565b820191906000526020600020905b815481529060010190602001808311611c4457829003601f168201915b5050505060078301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015611cf15780601f10611cc657610100808354040283529160200191611cf1565b820191906000526020600020905b815481529060010190602001808311611cd457829003601f168201915b50505050509080600801549080600901549080600a01549080600b01549080600c015490508d565b600b5460ff1681565b336000908152600360209081526040808320600160a060020a0386168452909152812054808310611d7657336000908152600360209081526040808320600160a060020a0388168452909152812055611dab565b611d86818463ffffffff61105c16565b336000908152600360209081526040808320600160a060020a03891684529091529020555b336000818152600360209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526001602052604090205490565b600054600160a060020a03163314611e4357600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a260008054600160a060020a0319169055565b336000908152600160205260409020546a0422ca8b0a00a4250000001115611eeb576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b611f3d7f4d494e5400000000000000000000000000000000000000000000000000000000838484600060206040519081016040528060008152506020604051908101604052806000815250600061136e565b5050565b601c543360009081526001602052604081205490918291670de0b6b3a76400009091021115611fba576040805160e560020a62461bcd02815260206004820152601960248201527f596f7520686176656e277420766f74696e672072696768742e00000000000000604482015290519081900360640190fd5b601e805485908110611fc857fe5b90600052602060002090600d02019150606490508160010154600019167f465245455a45000000000000000000000000000000000000000000000000000014156120145750601e61204c565b60018201547f44455354524f590000000000000000000000000000000000000000000000000014156120485750603361204c565b5060505b81600b015442111561218457815460ff19168255601e80548391908690811061207157fe5b600091825260209091208254600d90920201805460ff928316151560ff19918216178255600180850154818401556002808601548185018054600160a060020a0319908116600160a060020a039384161790915560038089015490870180549092169216919091179055600480870154908501556005808701549085018054919096161515931692909217909355600680850180549394612125949286019391929081161561010002600019011604613a8c565b506007820181600701908054600181600116156101000203166002900461214d929190613a8c565b506008820154816008015560098201548160090155600a82015481600a0155600b82015481600b0155600c82015481600c01559050505b815460ff1615156001146121e2576040805160e560020a62461bcd02815260206004820152600e60248201527f54686520766f746520656e646564000000000000000000000000000000000000604482015290519081900360640190fd5b6001831515141561221b573360009081526001602052604090205460088301546122119163ffffffff612f7f16565b6008830155612245565b33600090815260016020526040902054600983015461223f9163ffffffff612f7f16565b60098301555b60648104600854028260080154101515612267576122628461328e565b6123a9565b6064818103046008540282600901541015156123a957815460ff19168255601e80548391908690811061229657fe5b600091825260209091208254600d90920201805460ff928316151560ff19918216178255600180850154818401556002808601548185018054600160a060020a0319908116600160a060020a03938416179091556003808901549087018054909216921691909117905560048087015490850155600580870154908501805491909616151593169290921790935560068085018054939461234a949286019391929081161561010002600019011604613a8c565b5060078201816007019080546001816001161561010002031660029004612372929190613a8c565b506008820154816008015560098201548160090155600a82015481600a0155600b82015481600b0155600c82015481600c01559050505b50505050565b600054600160a060020a031633146123c657600080fd5b600b805460ff19169215159290921761ff00191661010091151591909102179055565b600054600160a060020a031681565b600054600160a060020a0316331461240f57600080fd5b60075460085482011061242157600080fd5b600854612434908263ffffffff612f7f16565b6008556040805182815290517f03e0d50af85e41e334dc3f5787a0c79260b3d45a70927162c106c45ebf9da6499181900360200190a150565b60196020526000908152604090205481565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156111105780601f106110e557610100808354040283529160200191611110565b336000908152600160205260409020546a0422ca8b0a00a425000000111561253a576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b611f3d7f44455354524f5900000000000000000000000000000000000000000000000000838484600060206040519081016040528060008152506020604051908101604052806000815250600061136e565b336000908152600160205260409020548111156125f3576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420656e6f756768204d5343450000000000000000000000000000000000604482015290519081900360640190fd5b33600090815260016020526040902054612613908263ffffffff61105c16565b3360009081526001602052604080822092909255600160a060020a03841681522054612645908263ffffffff612f7f16565b600160a060020a03831660009081526001602090815260408083209390935560199052205461267a908263ffffffff612f7f16565b600160a060020a03831660009081526019602052604090205561269c826138a4565b604080518281529051600160a060020a038416913391600080516020613b3c8339815191529181900360200190a360165460408051338152600160a060020a0385166020820152808201849052429092016060830152517f0d3d0fd8e1cbfcff61809766ea3ecedfb5f700f84c73829aeeda4835c54a18159181900360800190a15050565b600054600160a060020a0316331461273857600080fd5b6013805460ff1916911515919091179055565b600054600160a060020a0316331461276257600080fd5b600e55565b601a6020526000908152604090205481565b60176020526000908152604090205460ff1681565b601154600160a060020a031681565b60006127a7612f8c565b151561284d5760115460a060020a900460ff1615156127c557600080fd5b3360009081526012602052604090205460ff16156127e257600080fd5b600160a060020a03831660009081526012602052604090205460ff161561280857600080fd5b612810612faf565b1561281a57600080fd5b61282333611696565b33600090815260196020908152604080832054600190925290912054030182111561284d57600080fd5b61285633611696565b821061287d576128686111e333611696565b336000908152601960205260409020556128ae565b3360009081526019602052604090205461289d908363ffffffff61105c16565b336000908152601960205260409020555b61124f83836138d3565b600e5481565b602080526000908152604090205460ff1681565b600a5481565b336000908152600160205260409020546a0422ca8b0a00a4250000001115612938576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b6118957f4348414e474553594d424f4c00000000000000000000000000000000000000003333600080602060405190810160405280600081525087600061136e565b336000908152600160205260409020546a0422ca8b0a00a42500000011156129da576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b6118957f4348414e47454e414d45000000000000000000000000000000000000000000003333600080866020604051908101604052806000815250600061136e565b600160a060020a031660009081526018602052604090205490565b60186020526000908152604090205481565b336000908152600360209081526040808320600160a060020a0386168452909152812054612a7d908363ffffffff612f7f16565b336000818152600360209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60135460009060ff168015612b0f5750600160a060020a03821660009081526017602052604090205460ff165b15612b6657600160a060020a038216600090815260186020526040812054118015612b515750600160a060020a03821660009081526018602052604090205442115b15612b5e57506000611736565b506001611736565b506000919050565b600054600160a060020a03163314612b8557600080fd5b600160a060020a0381161515612b9a57600080fd5b60118054600160a060020a031916600160a060020a0392909216919091179055565b600f5481565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600054600160a060020a03163314612c0457600080fd5b6011805491151560a060020a0274ff000000000000000000000000000000000000000019909216919091179055565b600054600160a060020a03163314612c4a57600080fd5b601154600160a060020a03161515612c6157600080fd5b30311515612c6e57600080fd5b601154604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501515612ca257600080fd5b565b600c5481565b6000612cc16010548361302590919063ffffffff16565b600b5490915060ff1615612cd457600080fd5b3031811115612ce257600080fd5b6001811015612cf057600080fd5b33600090815260016020526040902054821115612d0c57600080fd5b60008054600160a060020a031681526001602052604090205482810111612d3257600080fd5b3360009081526012602052604090205460ff1615612d4f57600080fd5b612d57612faf565b15612d6157600080fd5b60008054600160a060020a0316815260016020526040902054612d8a908363ffffffff612f7f16565b60008054600160a060020a0316815260016020526040808220929092553381522054612dbc908363ffffffff61105c16565b33600090815260016020526040902055600854612ddf908363ffffffff61105c16565b600855600954612df5908363ffffffff612f7f16565b600955600054604080518481529051600160a060020a03909216913391600080516020613b3c833981519152919081900360200190a3604051339082156108fc029083906000818181858888f19350505050158015611975573d6000803e3d6000fd5b601f60205260009081526040902054600160a060020a031681565b336000908152600160205260409020546a0422ca8b0a00a4250000001115612ed3576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b611f3d7f465245455a450000000000000000000000000000000000000000000000000000838460008560206040519081016040528060008152506020604051908101604052806000815250600061136e565b600054600160a060020a03163314612f3c57600080fd5b611895816139a2565b600054600160a060020a03163314612f5c57600080fd5b601091909155600f55565b601b6020526000908152604090205481565b60085481565b8181018281101561105657fe5b60008054600160a060020a0316331415612fa857506001612fac565b5060005b90565b6000612fba33612ae2565b905090565b336000818152600360209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6000818381151561303257fe5b049392505050565b600160a060020a03831660009081526001602052604081205482111561305f57600080fd5b600160a060020a038416600090815260036020908152604080832033845290915290205482111561308f57600080fd5b600160a060020a03831615156130a457600080fd5b600160a060020a0384166000908152600160205260409020546130cd908363ffffffff61105c16565b600160a060020a038086166000908152600160205260408082209390935590851681522054613102908363ffffffff612f7f16565b600160a060020a038085166000908152600160209081526040808320949094559187168152600382528281203382529091522054613146908363ffffffff61105c16565b600160a060020a0380861660008181526003602090815260408083203384528252918290209490945580518681529051928716939192600080516020613b3c833981519152929181900390910190a35060019392505050565b600160a060020a0382166000908152600160205260409020548111156131c457600080fd5b600160a060020a0382166000908152600160205260409020546131ed908263ffffffff61105c16565b600160a060020a038316600090815260016020526040902055600254613219908263ffffffff61105c16565b600255604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020613b3c8339815191529181900360200190a35050565b6000601e8281548110151561329f57fe5b60009182526020909120600d90910201805460ff1916815560018101549091507f4d494e540000000000000000000000000000000000000000000000000000000014156133b65760048101546002820154600160a060020a03166000908152600160205260409020546133179163ffffffff612f7f16565b6002820154600160a060020a0316600090815260016020526040902055600481015460075461334b9163ffffffff612f7f16565b600755600481015460408051918252513091600091600080516020613b3c8339815191529181900360200190a3600281015460048201546040805191825251600160a060020a03909216913091600080516020613b3c833981519152919081900360200190a361377e565b60018101547f44455354524f590000000000000000000000000000000000000000000000000014156134b05760048101546002820154600160a060020a03166000908152600160205260409020546134139163ffffffff61105c16565b6002820154600160a060020a031660009081526001602052604090205560048101546007546134479163ffffffff61105c16565b6007556002810154600482015460408051918252513092600160a060020a031691600080516020613b3c833981519152919081900360200190a3600481015460408051918252516000913091600080516020613b3c8339815191529181900360200190a361377e565b60018101547f4348414e47454e414d45000000000000000000000000000000000000000000001415613507576006810180546135019160049160026000196101006001841615020190911604613a8c565b5061377e565b60018101547f4348414e474553594d424f4c00000000000000000000000000000000000000001415613558576007810180546135019160059160026000196101006001841615020190911604613a8c565b60018101547f465245455a450000000000000000000000000000000000000000000000000000141561360057600581018054600283018054600160a060020a0390811660009081526020808052604091829020805460ff191660ff9687161515179055925494548151959092168552921615159083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a161377e565b60018101547f4c4f434b000000000000000000000000000000000000000000000000000000001415613682576005810154600282018054600160a060020a039081166000908152601760209081526040808320805460ff191660ff909716151596909617909555600b860154935490921681526018909152919091205561377e565b60018101547f5452414e53000000000000000000000000000000000000000000000000000000141561377e5760048101546002820154600160a060020a03166000908152600160205260409020546136df9163ffffffff61105c16565b6002820154600160a060020a039081166000908152600160205260408082209390935560048401546003850154909216815291909120546137259163ffffffff612f7f16565b600382018054600160a060020a03908116600090815260016020908152604091829020949094559154600285015460048601548451908152935191831694921692600080516020613b3c83398151915292908290030190a35b80601e8381548110151561378e57fe5b600091825260209091208254600d90920201805460ff928316151560ff19918216178255600180850154818401556002808601548185018054600160a060020a0319908116600160a060020a039384161790915560038089015490870180549092169216919091179055600480870154908501556005808701549085018054919096161515931692909217909355600680850180549394613842949286019391929081161561010002600019011604613a8c565b506007820181600701908054600181600116156101000203166002900461386a929190613a8c565b506008820154816008015560098201548160090155600a82015481600a0155600b82015481600b0155600c82015481600c01559050505050565b600160a060020a03166000908152601a602090815260408083204290819055601654601b909352922091019055565b336000908152600160205260408120548211156138ef57600080fd5b600160a060020a038316151561390457600080fd5b33600090815260016020526040902054613924908363ffffffff61105c16565b3360009081526001602052604080822092909255600160a060020a03851681522054613956908363ffffffff612f7f16565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191923392600080516020613b3c8339815191529281900390910190a350600192915050565b600160a060020a03811615156139b757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a5357805160ff1916838001178555613a80565b82800160010185558215613a80579182015b82811115613a80578251825591602001919060010190613a65565b50611029929150613b01565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ac55780548555613a80565b82800160010185558215613a8057600052602060002091601f016020900482015b82811115613a80578254825591600101919060010190613ae6565b612fac91905b808211156110295760008155600101613b0756004a75737420666f722053757065724e6f64657300000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820edc3cbd18ce10c3869fe4a2189fab74f92094d1e5d34620a9971c41a810248750029

Deployed Bytecode

0x6080604052600436106102ff5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041662ebc96e811461036d57806306fdde0314610387578063095ea7b3146104115780630967cff0146104495780630d27172014610461578063149f2fdb1461048b5780631565f12f146104b257806318160ddd1461056e5780631cf1bb72146105835780631d545d09146105a45780632185810b146105b957806323b872dd146105ce578063289799b7146105f8578063308f505b14610610578063313ce56714610625578063417998831461065057806342966c6814610668578063493a7209146106805780634b0e2c90146106955780635a4071fe146106aa5780635a55c1f0146106d35780635b7f415c146108435780635df813301461085857806361aebe59146109cf57806366188463146109e457806370a0823114610a08578063715018a614610a2957806379c6506814610a3e5780637c129c1c14610a6257806388f7c6d614610a7f5780638da5cb5b14610a9e5780639061a6e914610acf57806395bc3bd014610ae757806395d89b4114610b085780639b1ad79214610b1d5780639b69de7914610b415780639bcf735214610b655780639dec365e14610b7f5780639fab73f714610b97578063a4b03f5214610bb8578063a6f2ae3a14610bd9578063a81c3bdf14610be1578063a9059cbb14610bf6578063aff1e0de14610c1a578063b414d4b614610c2f578063b51dfa9d14610c50578063b84c824614610c65578063c47f002714610cbe578063c92015f614610d17578063d622634714610d38578063d73dd62314610d59578063d86f8ccd14610d7d578063d903744114610d9e578063db1366bf14610dbf578063dd62ed3e14610dd4578063df50afa414610dfb578063e28d717b14610e15578063e2fc421d14610e2a578063e4849b3214610e3f578063e6ee3e6414610e57578063e724529c14610e6f578063f2fde38b14610e95578063f55ecf0614610eb6578063f90a902714610ed1578063fa2299ee14610ef2575b600c544290811180156103135750600d5481105b151561031e57600080fd5b600e5460001061032d57600080fd5b610335610f07565b151561034057600080fd5b610367610358600f543461102d90919063ffffffff16565b600e549063ffffffff61105c16565b600e5550005b34801561037957600080fd5b5061038560043561106e565b005b34801561039357600080fd5b5061039c61108a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d65781810151838201526020016103be565b50505050905090810190601f1680156104035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041d57600080fd5b50610435600160a060020a0360043516602435611118565b604080519115158252519081900360200190f35b34801561045557600080fd5b50610385600435611256565b34801561046d57600080fd5b50610435600160a060020a0360043581169060243516604435611272565b34801561049757600080fd5b506104a0611368565b60408051918252519081900360200190f35b3480156104be57600080fd5b50604080516020600460a43581810135601f81018490048402850184019095528484526103859482359460248035600160a060020a039081169660443590911695606435956084351515953695929460c494920191819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750509335945061136e9350505050565b34801561057a57600080fd5b506104a0611690565b34801561058f57600080fd5b506104a0600160a060020a0360043516611696565b3480156105b057600080fd5b506104a061173b565b3480156105c557600080fd5b50610435611741565b3480156105da57600080fd5b50610435600160a060020a0360043581169060243516604435611751565b34801561060457600080fd5b506103856004356117ea565b34801561061c57600080fd5b506104a0611806565b34801561063157600080fd5b5061063a61180c565b6040805160ff9092168252519081900360200190f35b34801561065c57600080fd5b50610385600435611815565b34801561067457600080fd5b5061038560043561188b565b34801561068c57600080fd5b50610435611898565b3480156106a157600080fd5b506104356118a6565b3480156106b657600080fd5b50610385600160a060020a036004351660243515156044356118af565b3480156106df57600080fd5b506106eb60043561197a565b604051808d1515151581526020018c600019166000191681526020018b600160a060020a0316600160a060020a031681526020018a600160a060020a0316600160a060020a03168152602001898152602001881515151581526020018060200180602001878152602001868152602001858152602001848152602001838103835289818151815260200191508051906020019080838360005b8381101561079c578181015183820152602001610784565b50505050905090810190601f1680156107c95780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b838110156107fc5781810151838201526020016107e4565b50505050905090810190601f1680156108295780820380516001836020036101000a031916815260200191505b509e50505050505050505050505050505060405180910390f35b34801561084f57600080fd5b5061063a611b79565b34801561086457600080fd5b50610870600435611b7e565b604051808e1515151581526020018d600019166000191681526020018c600160a060020a0316600160a060020a031681526020018b600160a060020a0316600160a060020a031681526020018a815260200189151515158152602001806020018060200188815260200187815260200186815260200185815260200184815260200183810383528a818151815260200191508051906020019080838360005b8381101561092757818101518382015260200161090f565b50505050905090810190601f1680156109545780820380516001836020036101000a031916815260200191505b5083810382528951815289516020918201918b019080838360005b8381101561098757818101518382015260200161096f565b50505050905090810190601f1680156109b45780820380516001836020036101000a031916815260200191505b509f5050505050505050505050505050505060405180910390f35b3480156109db57600080fd5b50610435611d19565b3480156109f057600080fd5b50610435600160a060020a0360043516602435611d22565b348015610a1457600080fd5b506104a0600160a060020a0360043516611e11565b348015610a3557600080fd5b50610385611e2c565b348015610a4a57600080fd5b50610385600160a060020a0360043516602435611e8b565b348015610a6e57600080fd5b506103856004356024351515611f41565b348015610a8b57600080fd5b50610385600435151560243515156123af565b348015610aaa57600080fd5b50610ab36123e9565b60408051600160a060020a039092168252519081900360200190f35b348015610adb57600080fd5b506103856004356123f8565b348015610af357600080fd5b506104a0600160a060020a036004351661246d565b348015610b1457600080fd5b5061039c61247f565b348015610b2957600080fd5b50610385600160a060020a03600435166024356124da565b348015610b4d57600080fd5b50610385600160a060020a036004351660243561258c565b348015610b7157600080fd5b506103856004351515612721565b348015610b8b57600080fd5b5061038560043561274b565b348015610ba357600080fd5b506104a0600160a060020a0360043516612767565b348015610bc457600080fd5b50610435600160a060020a0360043516612779565b610435610f07565b348015610bed57600080fd5b50610ab361278e565b348015610c0257600080fd5b50610435600160a060020a036004351660243561279d565b348015610c2657600080fd5b506104a06128b8565b348015610c3b57600080fd5b50610435600160a060020a03600435166128be565b348015610c5c57600080fd5b506104a06128d2565b348015610c7157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103859436949293602493928401919081908401838280828437509497506128d89650505050505050565b348015610cca57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261038594369492936024939284019190819084018382808284375094975061297a9650505050505050565b348015610d2357600080fd5b506104a0600160a060020a0360043516612a1c565b348015610d4457600080fd5b506104a0600160a060020a0360043516612a37565b348015610d6557600080fd5b50610435600160a060020a0360043516602435612a49565b348015610d8957600080fd5b50610435600160a060020a0360043516612ae2565b348015610daa57600080fd5b50610385600160a060020a0360043516612b6e565b348015610dcb57600080fd5b506104a0612bbc565b348015610de057600080fd5b506104a0600160a060020a0360043581169060243516612bc2565b348015610e0757600080fd5b506103856004351515612bed565b348015610e2157600080fd5b50610385612c33565b348015610e3657600080fd5b506104a0612ca4565b348015610e4b57600080fd5b50610385600435612caa565b348015610e6357600080fd5b50610ab3600435612e58565b348015610e7b57600080fd5b50610385600160a060020a03600435166024351515612e73565b348015610ea157600080fd5b50610385600160a060020a0360043516612f25565b348015610ec257600080fd5b50610385600435602435612f45565b348015610edd57600080fd5b506104a0600160a060020a0360043516612f67565b348015610efe57600080fd5b506104a0612f79565b600080610f1f600f543461102d90919063ffffffff16565b600b54909150610100900460ff1615610f3757600080fd5b60008054600160a060020a0316815260016020526040902054811115610f5c57600080fd5b60008054600160a060020a0316815260016020526040902054610f85908263ffffffff61105c16565b60008054600160a060020a0316815260016020526040808220929092553381522054610fb7908263ffffffff612f7f16565b33600090815260016020526040902055600854610fda908263ffffffff612f7f16565b600855600a54610ff0908263ffffffff612f7f16565b600a556000546040805183815290513392600160a060020a031691600080516020613b3c833981519152919081900360200190a3600191505b5090565b600082151561103e57506000611056565b5081810281838281151561104e57fe5b041461105657fe5b92915050565b60008282111561106857fe5b50900390565b600054600160a060020a0316331461108557600080fd5b600d55565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156111105780601f106110e557610100808354040283529160200191611110565b820191906000526020600020905b8154815290600101906020018083116110f357829003601f168201915b505050505081565b6000611122612f8c565b15156111c85760115460a060020a900460ff16151561114057600080fd5b3360009081526012602052604090205460ff161561115d57600080fd5b600160a060020a03831660009081526012602052604090205460ff161561118357600080fd5b61118b612faf565b1561119557600080fd5b61119e33611696565b3360009081526019602090815260408083205460019092529091205403018211156111c857600080fd5b6111d133611696565b8210611214576111ff6111e333611696565b336000908152601960205260409020549063ffffffff61105c16565b33600090815260196020526040902055611245565b33600090815260196020526040902054611234908363ffffffff61105c16565b336000908152601960205260409020555b61124f8383612fbf565b9392505050565b600054600160a060020a0316331461126d57600080fd5b600c55565b336000908152600160205260408120546a0422ca8b0a00a42500000011156112d2576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b600160a060020a03831615156112e757600080fd5b600160a060020a03841660009081526001602052604090205482111561130c57600080fd5b61135e7f5452414e53000000000000000000000000000000000000000000000000000000858585600060206040519081016040528060008152506020604051908101604052806000815250600061136e565b5060019392505050565b60105481565b336000908152600160205260408120546a0422ca8b0a00a42500000011156113ce576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b604080516101a081018252600180825260208083018d8152600160a060020a03808e169585019586528c811660608601908152608086018d81528c151560a0880190815260c088018d815260e089018d905260006101008a018190526101208a01819052426101408b01819052601d54016101608b01526101808a018d9052601e8054808b01808355919092528a51600d9092027f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3508101805493151560ff1994851617815598517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3518201559b517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3528d018054918916600160a060020a031992831617905595517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3538d0180549190981696169590951790955591517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3548a0155517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35589018054911515919094161790925590518051949691959492936115b9937f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35690930192910190613a12565b5060e082015180516115d5916007840191602090910190613a12565b5061010082015160088201556101208201516009820155610140820151600a820155610160820151600b82015561018090910151600c90910155036000818152601f60209081526040918290208054600160a060020a0319163390811790915582519081529081018c9052600160a060020a038b16818301526060810189905290519192507f03493f239ae746243bd932fe008aab9958bea99169cc7d73fab2ceef9817b1ba919081900360800190a1505050505050505050565b60075481565b600160a060020a0381166000908152601b602052604081205442106116d45750600160a060020a038116600090815260196020526040902054611736565b600160a060020a038216600090815260196020908152604080832054601554601a909352922054611733926064926117279261171b9142919091039063ffffffff61302516565b9063ffffffff61102d16565b9063ffffffff61302516565b90505b919050565b600d5481565b60115460a060020a900460ff1681565b600061175b612f8c565b15156117d75760115460a060020a900460ff16151561177957600080fd5b600160a060020a03841660009081526012602052604090205460ff161561179f57600080fd5b600160a060020a03831660009081526012602052604090205460ff16156117c557600080fd5b6117cd612faf565b156117d757600080fd5b6117e284848461303a565b949350505050565b600054600160a060020a0316331461180157600080fd5b601555565b60095481565b60065460ff1681565b600054600160a060020a0316331461182c57600080fd5b6000816008540311151561183f57600080fd5b600854611852908263ffffffff61105c16565b6008556040805182815290517ff708844f569f2a630c36e2c8c1422c319aa04d0ef131636d78737df669e89b2f9181900360200190a150565b611895338261319f565b50565b600b54610100900460ff1681565b60135460ff1681565b336000908152600160205260409020546a0422ca8b0a00a425000000111561190f576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b600160a060020a038316151561192457600080fd5b6119757f4c4f434b000000000000000000000000000000000000000000000000000000008485600086602060405190810160405280600081525060206040519081016040528060008152508861136e565b505050565b6000806000806000806060806000806000806000601e8e81548110151561199d57fe5b90600052602060002090600d020190508060000160009054906101000a900460ff1681600101548260020160009054906101000a9004600160a060020a03168360030160009054906101000a9004600160a060020a031684600401548560050160009054906101000a900460ff168660060187600701886008015489600901548a600a01548b600b0154858054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611abc5780601f10611a9157610100808354040283529160200191611abc565b820191906000526020600020905b815481529060010190602001808311611a9f57829003601f168201915b5050885460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959b508a945092508401905082828015611b4a5780601f10611b1f57610100808354040283529160200191611b4a565b820191906000526020600020905b815481529060010190602001808311611b2d57829003601f168201915b505050505094509c509c509c509c509c509c509c509c509c509c509c509c505091939597999b5091939597999b565b601281565b601e805482908110611b8c57fe5b6000918252602091829020600d90910201805460018083015460028085015460038601546004870154600588015460068901805460408051601f6000199b841615610100029b909b01909216979097049889018c90048c0281018c0190965287865260ff9889169b509599600160a060020a039485169993909416979196911694919392830182828015611c615780601f10611c3657610100808354040283529160200191611c61565b820191906000526020600020905b815481529060010190602001808311611c4457829003601f168201915b5050505060078301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015611cf15780601f10611cc657610100808354040283529160200191611cf1565b820191906000526020600020905b815481529060010190602001808311611cd457829003601f168201915b50505050509080600801549080600901549080600a01549080600b01549080600c015490508d565b600b5460ff1681565b336000908152600360209081526040808320600160a060020a0386168452909152812054808310611d7657336000908152600360209081526040808320600160a060020a0388168452909152812055611dab565b611d86818463ffffffff61105c16565b336000908152600360209081526040808320600160a060020a03891684529091529020555b336000818152600360209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526001602052604090205490565b600054600160a060020a03163314611e4357600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a260008054600160a060020a0319169055565b336000908152600160205260409020546a0422ca8b0a00a4250000001115611eeb576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b611f3d7f4d494e5400000000000000000000000000000000000000000000000000000000838484600060206040519081016040528060008152506020604051908101604052806000815250600061136e565b5050565b601c543360009081526001602052604081205490918291670de0b6b3a76400009091021115611fba576040805160e560020a62461bcd02815260206004820152601960248201527f596f7520686176656e277420766f74696e672072696768742e00000000000000604482015290519081900360640190fd5b601e805485908110611fc857fe5b90600052602060002090600d02019150606490508160010154600019167f465245455a45000000000000000000000000000000000000000000000000000014156120145750601e61204c565b60018201547f44455354524f590000000000000000000000000000000000000000000000000014156120485750603361204c565b5060505b81600b015442111561218457815460ff19168255601e80548391908690811061207157fe5b600091825260209091208254600d90920201805460ff928316151560ff19918216178255600180850154818401556002808601548185018054600160a060020a0319908116600160a060020a039384161790915560038089015490870180549092169216919091179055600480870154908501556005808701549085018054919096161515931692909217909355600680850180549394612125949286019391929081161561010002600019011604613a8c565b506007820181600701908054600181600116156101000203166002900461214d929190613a8c565b506008820154816008015560098201548160090155600a82015481600a0155600b82015481600b0155600c82015481600c01559050505b815460ff1615156001146121e2576040805160e560020a62461bcd02815260206004820152600e60248201527f54686520766f746520656e646564000000000000000000000000000000000000604482015290519081900360640190fd5b6001831515141561221b573360009081526001602052604090205460088301546122119163ffffffff612f7f16565b6008830155612245565b33600090815260016020526040902054600983015461223f9163ffffffff612f7f16565b60098301555b60648104600854028260080154101515612267576122628461328e565b6123a9565b6064818103046008540282600901541015156123a957815460ff19168255601e80548391908690811061229657fe5b600091825260209091208254600d90920201805460ff928316151560ff19918216178255600180850154818401556002808601548185018054600160a060020a0319908116600160a060020a03938416179091556003808901549087018054909216921691909117905560048087015490850155600580870154908501805491909616151593169290921790935560068085018054939461234a949286019391929081161561010002600019011604613a8c565b5060078201816007019080546001816001161561010002031660029004612372929190613a8c565b506008820154816008015560098201548160090155600a82015481600a0155600b82015481600b0155600c82015481600c01559050505b50505050565b600054600160a060020a031633146123c657600080fd5b600b805460ff19169215159290921761ff00191661010091151591909102179055565b600054600160a060020a031681565b600054600160a060020a0316331461240f57600080fd5b60075460085482011061242157600080fd5b600854612434908263ffffffff612f7f16565b6008556040805182815290517f03e0d50af85e41e334dc3f5787a0c79260b3d45a70927162c106c45ebf9da6499181900360200190a150565b60196020526000908152604090205481565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156111105780601f106110e557610100808354040283529160200191611110565b336000908152600160205260409020546a0422ca8b0a00a425000000111561253a576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b611f3d7f44455354524f5900000000000000000000000000000000000000000000000000838484600060206040519081016040528060008152506020604051908101604052806000815250600061136e565b336000908152600160205260409020548111156125f3576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420656e6f756768204d5343450000000000000000000000000000000000604482015290519081900360640190fd5b33600090815260016020526040902054612613908263ffffffff61105c16565b3360009081526001602052604080822092909255600160a060020a03841681522054612645908263ffffffff612f7f16565b600160a060020a03831660009081526001602090815260408083209390935560199052205461267a908263ffffffff612f7f16565b600160a060020a03831660009081526019602052604090205561269c826138a4565b604080518281529051600160a060020a038416913391600080516020613b3c8339815191529181900360200190a360165460408051338152600160a060020a0385166020820152808201849052429092016060830152517f0d3d0fd8e1cbfcff61809766ea3ecedfb5f700f84c73829aeeda4835c54a18159181900360800190a15050565b600054600160a060020a0316331461273857600080fd5b6013805460ff1916911515919091179055565b600054600160a060020a0316331461276257600080fd5b600e55565b601a6020526000908152604090205481565b60176020526000908152604090205460ff1681565b601154600160a060020a031681565b60006127a7612f8c565b151561284d5760115460a060020a900460ff1615156127c557600080fd5b3360009081526012602052604090205460ff16156127e257600080fd5b600160a060020a03831660009081526012602052604090205460ff161561280857600080fd5b612810612faf565b1561281a57600080fd5b61282333611696565b33600090815260196020908152604080832054600190925290912054030182111561284d57600080fd5b61285633611696565b821061287d576128686111e333611696565b336000908152601960205260409020556128ae565b3360009081526019602052604090205461289d908363ffffffff61105c16565b336000908152601960205260409020555b61124f83836138d3565b600e5481565b602080526000908152604090205460ff1681565b600a5481565b336000908152600160205260409020546a0422ca8b0a00a4250000001115612938576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b6118957f4348414e474553594d424f4c00000000000000000000000000000000000000003333600080602060405190810160405280600081525087600061136e565b336000908152600160205260409020546a0422ca8b0a00a42500000011156129da576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b6118957f4348414e47454e414d45000000000000000000000000000000000000000000003333600080866020604051908101604052806000815250600061136e565b600160a060020a031660009081526018602052604090205490565b60186020526000908152604090205481565b336000908152600360209081526040808320600160a060020a0386168452909152812054612a7d908363ffffffff612f7f16565b336000818152600360209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60135460009060ff168015612b0f5750600160a060020a03821660009081526017602052604090205460ff165b15612b6657600160a060020a038216600090815260186020526040812054118015612b515750600160a060020a03821660009081526018602052604090205442115b15612b5e57506000611736565b506001611736565b506000919050565b600054600160a060020a03163314612b8557600080fd5b600160a060020a0381161515612b9a57600080fd5b60118054600160a060020a031916600160a060020a0392909216919091179055565b600f5481565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600054600160a060020a03163314612c0457600080fd5b6011805491151560a060020a0274ff000000000000000000000000000000000000000019909216919091179055565b600054600160a060020a03163314612c4a57600080fd5b601154600160a060020a03161515612c6157600080fd5b30311515612c6e57600080fd5b601154604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501515612ca257600080fd5b565b600c5481565b6000612cc16010548361302590919063ffffffff16565b600b5490915060ff1615612cd457600080fd5b3031811115612ce257600080fd5b6001811015612cf057600080fd5b33600090815260016020526040902054821115612d0c57600080fd5b60008054600160a060020a031681526001602052604090205482810111612d3257600080fd5b3360009081526012602052604090205460ff1615612d4f57600080fd5b612d57612faf565b15612d6157600080fd5b60008054600160a060020a0316815260016020526040902054612d8a908363ffffffff612f7f16565b60008054600160a060020a0316815260016020526040808220929092553381522054612dbc908363ffffffff61105c16565b33600090815260016020526040902055600854612ddf908363ffffffff61105c16565b600855600954612df5908363ffffffff612f7f16565b600955600054604080518481529051600160a060020a03909216913391600080516020613b3c833981519152919081900360200190a3604051339082156108fc029083906000818181858888f19350505050158015611975573d6000803e3d6000fd5b601f60205260009081526040902054600160a060020a031681565b336000908152600160205260409020546a0422ca8b0a00a4250000001115612ed3576040805160e560020a62461bcd0281526020600482015260136024820152600080516020613b1c833981519152604482015290519081900360640190fd5b611f3d7f465245455a450000000000000000000000000000000000000000000000000000838460008560206040519081016040528060008152506020604051908101604052806000815250600061136e565b600054600160a060020a03163314612f3c57600080fd5b611895816139a2565b600054600160a060020a03163314612f5c57600080fd5b601091909155600f55565b601b6020526000908152604090205481565b60085481565b8181018281101561105657fe5b60008054600160a060020a0316331415612fa857506001612fac565b5060005b90565b6000612fba33612ae2565b905090565b336000818152600360209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6000818381151561303257fe5b049392505050565b600160a060020a03831660009081526001602052604081205482111561305f57600080fd5b600160a060020a038416600090815260036020908152604080832033845290915290205482111561308f57600080fd5b600160a060020a03831615156130a457600080fd5b600160a060020a0384166000908152600160205260409020546130cd908363ffffffff61105c16565b600160a060020a038086166000908152600160205260408082209390935590851681522054613102908363ffffffff612f7f16565b600160a060020a038085166000908152600160209081526040808320949094559187168152600382528281203382529091522054613146908363ffffffff61105c16565b600160a060020a0380861660008181526003602090815260408083203384528252918290209490945580518681529051928716939192600080516020613b3c833981519152929181900390910190a35060019392505050565b600160a060020a0382166000908152600160205260409020548111156131c457600080fd5b600160a060020a0382166000908152600160205260409020546131ed908263ffffffff61105c16565b600160a060020a038316600090815260016020526040902055600254613219908263ffffffff61105c16565b600255604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020613b3c8339815191529181900360200190a35050565b6000601e8281548110151561329f57fe5b60009182526020909120600d90910201805460ff1916815560018101549091507f4d494e540000000000000000000000000000000000000000000000000000000014156133b65760048101546002820154600160a060020a03166000908152600160205260409020546133179163ffffffff612f7f16565b6002820154600160a060020a0316600090815260016020526040902055600481015460075461334b9163ffffffff612f7f16565b600755600481015460408051918252513091600091600080516020613b3c8339815191529181900360200190a3600281015460048201546040805191825251600160a060020a03909216913091600080516020613b3c833981519152919081900360200190a361377e565b60018101547f44455354524f590000000000000000000000000000000000000000000000000014156134b05760048101546002820154600160a060020a03166000908152600160205260409020546134139163ffffffff61105c16565b6002820154600160a060020a031660009081526001602052604090205560048101546007546134479163ffffffff61105c16565b6007556002810154600482015460408051918252513092600160a060020a031691600080516020613b3c833981519152919081900360200190a3600481015460408051918252516000913091600080516020613b3c8339815191529181900360200190a361377e565b60018101547f4348414e47454e414d45000000000000000000000000000000000000000000001415613507576006810180546135019160049160026000196101006001841615020190911604613a8c565b5061377e565b60018101547f4348414e474553594d424f4c00000000000000000000000000000000000000001415613558576007810180546135019160059160026000196101006001841615020190911604613a8c565b60018101547f465245455a450000000000000000000000000000000000000000000000000000141561360057600581018054600283018054600160a060020a0390811660009081526020808052604091829020805460ff191660ff9687161515179055925494548151959092168552921615159083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a161377e565b60018101547f4c4f434b000000000000000000000000000000000000000000000000000000001415613682576005810154600282018054600160a060020a039081166000908152601760209081526040808320805460ff191660ff909716151596909617909555600b860154935490921681526018909152919091205561377e565b60018101547f5452414e53000000000000000000000000000000000000000000000000000000141561377e5760048101546002820154600160a060020a03166000908152600160205260409020546136df9163ffffffff61105c16565b6002820154600160a060020a039081166000908152600160205260408082209390935560048401546003850154909216815291909120546137259163ffffffff612f7f16565b600382018054600160a060020a03908116600090815260016020908152604091829020949094559154600285015460048601548451908152935191831694921692600080516020613b3c83398151915292908290030190a35b80601e8381548110151561378e57fe5b600091825260209091208254600d90920201805460ff928316151560ff19918216178255600180850154818401556002808601548185018054600160a060020a0319908116600160a060020a039384161790915560038089015490870180549092169216919091179055600480870154908501556005808701549085018054919096161515931692909217909355600680850180549394613842949286019391929081161561010002600019011604613a8c565b506007820181600701908054600181600116156101000203166002900461386a929190613a8c565b506008820154816008015560098201548160090155600a82015481600a0155600b82015481600b0155600c82015481600c01559050505050565b600160a060020a03166000908152601a602090815260408083204290819055601654601b909352922091019055565b336000908152600160205260408120548211156138ef57600080fd5b600160a060020a038316151561390457600080fd5b33600090815260016020526040902054613924908363ffffffff61105c16565b3360009081526001602052604080822092909255600160a060020a03851681522054613956908363ffffffff612f7f16565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191923392600080516020613b3c8339815191529281900390910190a350600192915050565b600160a060020a03811615156139b757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613a5357805160ff1916838001178555613a80565b82800160010185558215613a80579182015b82811115613a80578251825591602001919060010190613a65565b50611029929150613b01565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ac55780548555613a80565b82800160010185558215613a8057600052602060002091601f016020900482015b82811115613a80578254825591600101919060010190613ae6565b612fac91905b808211156110295760008155600101613b0756004a75737420666f722053757065724e6f64657300000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820edc3cbd18ce10c3869fe4a2189fab74f92094d1e5d34620a9971c41a810248750029

Swarm Source

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