ETH Price: $3,354.44 (+0.41%)
 

Overview

Max Total Supply

1,000,000,000 SERO

Holders

154

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000016339 SERO

Value
$0.00
0x51Ae21D4326635998b351984102AdD8aa1b33507
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:
SEROToken

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-08
*/

pragma solidity ^0.4.24;

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

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

    uint256 c = a * b;
    require(c / a == b);

    return c;
  }
  
  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0); // Solidity only automatically asserts when dividing by 0
    uint256 c = a / b;
 
    return c;
  }
  
  /**
  * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    uint256 c = a - b;

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

    return c;
  }
}

library FrozenChecker {
  using SafeMath for uint256;
  
  /**
   * Rule for each address
   */
  struct Rule {
    uint256 timeT;
    uint8 initPercent;
    uint256[] periods;
    uint8[] percents;
  }
  
  function check(Rule storage self, uint256 totalFrozenValue) internal view returns(uint256) {
    if (totalFrozenValue == uint256(0)) {
      return 0;
    }
    if (self.timeT == uint256(0) || self.timeT > now) {
      return totalFrozenValue.sub(totalFrozenValue.mul(self.initPercent).div(100));
    }
    for (uint256 i = 0; i < self.periods.length.sub(1); i = i.add(1)) {
      if (now >= self.timeT.add(self.periods[i]) && now < self.timeT.add(self.periods[i.add(1)])) {
        return totalFrozenValue.sub(totalFrozenValue.mul(self.percents[i]).div(100));
      }
    }
    if (now >= self.timeT.add(self.periods[self.periods.length.sub(1)])) {
      return totalFrozenValue.sub(totalFrozenValue.mul(self.percents[self.periods.length.sub(1)]).div(100));
    }
  }
}

library FrozenValidator {
    
  using SafeMath for uint256;
  using FrozenChecker for FrozenChecker.Rule;

  struct Validator {
    mapping(address => IndexValue) data;
    KeyFlag[] keys;
    uint256 size;
  }

  struct IndexValue {
    uint256 keyIndex; 
    FrozenChecker.Rule rule;
    mapping (address => uint256) frozenBalances;
  }

  struct KeyFlag { 
    address key; 
    bool deleted; 
  }

  function addRule(Validator storage self, address key, uint8 initPercent, uint256[] periods, uint8[] percents) internal returns (bool replaced) {
    require(key != address(0));
    require(periods.length == percents.length);
    require(periods.length > 0);
    require(periods[0] == uint256(0));
    require(initPercent <= percents[0]);
    for (uint256 i = 1; i < periods.length; i = i.add(1)) {
      require(periods[i.sub(1)] < periods[i]);
      require(percents[i.sub(1)] <= percents[i]);
    }
    require(percents[percents.length.sub(1)] == 100);
    FrozenChecker.Rule memory rule = FrozenChecker.Rule(0, initPercent, periods, percents);
    uint256 keyIndex = self.data[key].keyIndex;
    self.data[key].rule = rule;
    if (keyIndex > 0) {
      return false;
    } else {
      keyIndex = self.keys.length++;
      self.data[key].keyIndex = keyIndex.add(1);
      self.keys[keyIndex].key = key;
      self.size++;
      return true;
    }
  }

  function removeRule(Validator storage self, address key) internal returns (bool success) {
    uint256 keyIndex = self.data[key].keyIndex;
    if (keyIndex == 0) {
      return false;
    }
    delete self.data[key];
    self.keys[keyIndex.sub(1)].deleted = true;
    self.size--;
    return true;
  }

  function containRule(Validator storage self, address key) internal view returns (bool) {
    return self.data[key].keyIndex > 0;
  }

  function addTimeT(Validator storage self, address addr, uint256 timeT) internal returns (bool) {
    require(timeT > now);
    self.data[addr].rule.timeT = timeT;
    return true;
  }

  function addFrozenBalance(Validator storage self, address from, address to, uint256 value) internal returns (uint256) {
    self.data[from].frozenBalances[to] = self.data[from].frozenBalances[to].add(value);
    return self.data[from].frozenBalances[to];
  }

  function validate(Validator storage self, address addr) internal returns (uint256) {
    uint256 frozenTotal = 0;
    for (uint256 i = iterateStart(self); iterateValid(self, i); i = iterateNext(self, i)) {
      address ruleaddr = iterateGet(self, i);
      FrozenChecker.Rule storage rule = self.data[ruleaddr].rule;
      frozenTotal = frozenTotal.add(rule.check(self.data[ruleaddr].frozenBalances[addr]));
    }
    return frozenTotal;
  }

  function iterateStart(Validator storage self) internal view returns (uint256 keyIndex) {
    return iterateNext(self, uint256(-1));
  }

  function iterateValid(Validator storage self, uint256 keyIndex) internal view returns (bool) {
    return keyIndex < self.keys.length;
  }

  function iterateNext(Validator storage self, uint256 keyIndex) internal view returns (uint256) {
    keyIndex++;
    while (keyIndex < self.keys.length && self.keys[keyIndex].deleted) {
      keyIndex++;
    }
    return keyIndex;
  }

  function iterateGet(Validator storage self, uint256 keyIndex) internal view returns (address) {
    return self.keys[keyIndex].key;
  }
}


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


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


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


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


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event PausePublic(bool newState);
  event PauseOwnerAdmin(bool newState);

  bool public pausedPublic = true;
  bool public pausedOwnerAdmin = false;

  address public admin;

  /**
   * @dev Modifier to make a function callable based on pause states.
   */
  modifier whenNotPaused() {
    if(pausedPublic) {
      if(!pausedOwnerAdmin) {
        require(msg.sender == admin || msg.sender == owner);
      } else {
        revert();
      }
    }
    _;
  }

  /**
   * @dev called by the owner to set new pause flags
   * pausedPublic can't be false while pausedOwnerAdmin is true
   */
  function pause(bool newPausedPublic, bool newPausedOwnerAdmin) onlyOwner public {
    require(!(newPausedPublic == false && newPausedOwnerAdmin == true));

    pausedPublic = newPausedPublic;
    pausedOwnerAdmin = newPausedOwnerAdmin;

    PausePublic(newPausedPublic);
    PauseOwnerAdmin(newPausedOwnerAdmin);
  }
}

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

contract SEROToken is Pausable {
  using SafeMath for uint256;
  using FrozenValidator for FrozenValidator.Validator;
  
  string public name;
  string public symbol;
  uint8 public decimals = 9;
  uint256 public totalSupply;
  
  // Create array of all balances
  mapping (address => uint256) internal balances;
  mapping (address => mapping (address => uint256)) internal allowed;
  
  // Create array of freeze account
  mapping (address => bool) frozenAccount;       // Indefinite frozen account
  mapping (address => uint256) frozenTimestamp;  // Timelimit frozen account
  
  // Freeze account using rule
  FrozenValidator.Validator validator;
  
  event Approval(address indexed owner, address indexed spender, uint256 value);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event AdminTransferred(address indexed previousAdmin, address indexed newAdmin);
  
  constructor(string tokenName, string tokenSymbol, uint256 totalTokenSupply ) public {
     
    name = tokenName;
    symbol = tokenSymbol;
    totalSupply = totalTokenSupply * 10 ** uint256(decimals);
    admin = msg.sender;
    balances[msg.sender] = totalSupply;
    emit Transfer(0x0, msg.sender, totalSupply);
  }
  
  
  // Change admin
  function changeAdmin(address newAdmin) public onlyOwner returns (bool)  {
    // require(msg.sender == admin);
    require(newAdmin != address(0));
    // uint256 balAdmin = balances[admin];
    // balances[newAdmin] = balances[newAdmin].add(balAdmin);
    // balances[admin] = 0;
    admin = newAdmin;
    emit AdminTransferred(admin, newAdmin);
    return true;
  }
  
  // Get account frozen timestamp
  function getFrozenTimestamp(address _target) public view returns (uint256) {
    return frozenTimestamp[_target];
  }
  
  // Check if the account is freezed indefinitely 
  function getFrozenAccount(address _target) public view returns (bool) {
    return frozenAccount[_target];
  }
  
  // Indefinite freeze account or unfreeze account(set _freeze to true)
  function freeze(address _target, bool _freeze) public returns (bool) {
    require(msg.sender == admin);
    require(_target != admin);
    frozenAccount[_target] = _freeze;
    return true;
  }
  
  // Timelimit freeze account or unfreeze account(set _timestamp to 0x0)
  function freezeWithTimestamp(address _target, uint256 _timestamp) public returns (bool) {
    require(msg.sender == admin);
    require(_target != admin);
    frozenTimestamp[_target] = _timestamp;
    return true;
  }
  
  // Batch indefinite freeze account or unfreeze account
  function multiFreeze(address[] _targets, bool[] _freezes) public returns (bool) {
    require(msg.sender == admin);
    require(_targets.length == _freezes.length);
    uint256 len = _targets.length;
    require(len > 0);
    for (uint256 i = 0; i < len; i = i.add(1)) {
      address _target = _targets[i];
      require(_target != admin);
      bool _freeze = _freezes[i];
      frozenAccount[_target] = _freeze;
    }
    return true;
  }
  
  // Batch timelimit freeze account or unfreeze account
  function multiFreezeWithTimestamp(address[] _targets, uint256[] _timestamps) public returns (bool) {
    require(msg.sender == admin);
    require(_targets.length == _timestamps.length);
    uint256 len = _targets.length;
    require(len > 0);
    for (uint256 i = 0; i < len; i = i.add(1)) {
      address _target = _targets[i];
      require(_target != admin);
      uint256 _timestamp = _timestamps[i];
      frozenTimestamp[_target] = _timestamp;
    }
    return true;
  }
  
  /* Freeze or unfreeze account using rules */
  
  function addRule(address addr, uint8 initPercent, uint256[] periods, uint8[] percents) public returns (bool) {
    require(msg.sender == admin);
    return validator.addRule(addr, initPercent, periods, percents);
  }

  function addTimeT(address addr, uint256 timeT) public returns (bool) {
    require(msg.sender == admin);
    return validator.addTimeT(addr, timeT);
  }
  
  function removeRule(address addr) public returns (bool) {
    require(msg.sender == admin);
    return validator.removeRule(addr);
  }
  
  function validate(address addr) public view returns (uint256) {
    require(msg.sender == admin);
    return validator.validate(addr);
  }

    
  function queryRule(address addr) public view returns (uint256,uint8,uint256[],uint8[]) {
    require(msg.sender == admin);
    return (validator.data[addr].rule.timeT,validator.data[addr].rule.initPercent,validator.data[addr].rule.periods,validator.data[addr].rule.percents);
  }
  
  /* ERC20 interface */
  function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
    _transfer(_to, _value);
    return true;
  }
  
  function _transfer(address _to, uint256 _value) internal whenNotPaused {
    require(_to != 0x0);
    require(!frozenAccount[msg.sender]);
    require(now > frozenTimestamp[msg.sender]);
    require(balances[msg.sender].sub(_value) >= validator.validate(msg.sender));

    if (validator.containRule(msg.sender) && msg.sender != _to) {
        validator.addFrozenBalance(msg.sender, _to, _value);
    }
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);

    emit Transfer(msg.sender, _to, _value);
  }
 
  function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
    require(_to != 0x0);
    require(!frozenAccount[_from]);
    require(now > frozenTimestamp[_from]);
    require(_value <= balances[_from].sub(validator.validate(_from)));
    require(_value <= allowed[_from][msg.sender]);

    if (validator.containRule(_from) && _from != _to) {
      validator.addFrozenBalance(_from, _to, _value);
    }

    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;
  }
  
  function multiTransfer(address[] _tos, uint256[] _values) public whenNotPaused returns (bool) {
    require(!frozenAccount[msg.sender]);
    require(now > frozenTimestamp[msg.sender]);
    require(_tos.length == _values.length);
    uint256 len = _tos.length;
    require(len > 0);
    uint256 amount = 0;
    for (uint256 i = 0; i < len; i = i.add(1)) {
      amount = amount.add(_values[i]);
    }
    require(amount <= balances[msg.sender].sub(validator.validate(msg.sender)));
    for (uint256 j = 0; j < len; j = j.add(1)) {
      address _to = _tos[j];
      require(_to != 0x0);
      if (validator.containRule(msg.sender) && msg.sender != _to) {
        validator.addFrozenBalance(msg.sender, _to, _values[j]);
      }
      balances[_to] = balances[_to].add(_values[j]);
      balances[msg.sender] = balances[msg.sender].sub(_values[j]);
      emit Transfer(msg.sender, _to, _values[j]);
    }
    return true;
  }
  
  function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {
    allowed[msg.sender][_spender] = _value;

    emit Approval(msg.sender, _spender, _value);
    return true;
  }
  
  function approveAndCall(address _spender, uint256 _value, bytes _extraData) public whenNotPaused returns (bool success) {

    require(_spender != 0x0);
    require(!frozenAccount[msg.sender]);
    require(now > frozenTimestamp[msg.sender]);
    require(_value <= balances[msg.sender].sub(validator.validate(msg.sender)));

    if (validator.containRule(msg.sender) && msg.sender != _spender) {
      validator.addFrozenBalance(msg.sender, _spender, _value);
    }

    tokenRecipient spender = tokenRecipient(_spender);
    if (approve(_spender, _value)) {
      spender.receiveApproval(msg.sender, _value, this, _extraData);
      return true;
    }
  }
  
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }
  
  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner]; //.sub(validator.validate(_owner));
  }
  
  function kill() public {
    require(msg.sender == admin);
    selfdestruct(admin);
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tos","type":"address[]"},{"name":"_values","type":"uint256[]"}],"name":"multiTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"validate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pausedPublic","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"queryRule","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint8"},{"name":"","type":"uint256[]"},{"name":"","type":"uint8[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pausedOwnerAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"initPercent","type":"uint8"},{"name":"periods","type":"uint256[]"},{"name":"percents","type":"uint8[]"}],"name":"addRule","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"timeT","type":"uint256"}],"name":"addTimeT","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_freeze","type":"bool"}],"name":"freeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"getFrozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_targets","type":"address[]"},{"name":"_freezes","type":"bool[]"}],"name":"multiFreeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_timestamp","type":"uint256"}],"name":"freezeWithTimestamp","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_targets","type":"address[]"},{"name":"_timestamps","type":"uint256[]"}],"name":"multiFreezeWithTimestamp","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"newPausedPublic","type":"bool"},{"name":"newPausedOwnerAdmin","type":"bool"}],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"removeRule","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"getFrozenTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"tokenName","type":"string"},{"name":"tokenSymbol","type":"string"},{"name":"totalTokenSupply","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":"previousAdmin","type":"address"},{"indexed":true,"name":"newAdmin","type":"address"}],"name":"AdminTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newState","type":"bool"}],"name":"PausePublic","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newState","type":"bool"}],"name":"PauseOwnerAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526001600060146101000a81548160ff02191690831515021790555060008060156101000a81548160ff0219169083151502179055506009600460006101000a81548160ff021916908360ff1602179055503480156200006257600080fd5b506040516200487438038062004874833981018060405281019080805182019291906020018051820192919060200180519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260029080519060200190620000f692919062000210565b5081600390805190602001906200010f92919062000210565b50600460009054906101000a900460ff1660ff16600a0a810260058190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040518082815260200191505060405180910390a3505050620002bf565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025357805160ff191683800117855562000284565b8280016001018555821562000284579182015b828111156200028357825182559160200191906001019062000266565b5b50905062000293919062000297565b5090565b620002bc91905b80821115620002b85760008160009055506001016200029e565b5090565b90565b6145a580620002cf6000396000f300608060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610185578063095ea7b31461021557806318160ddd1461027a5780631e89d545146102a5578063207c64fb1461036657806323b872dd146103bd57806324bb7c2614610442578063313ce5671461047157806335cd64ee146104a257806341c0e1b51461059657806364779ad7146105ad57806370a08231146105dc5780638da5cb5b146106335780638f2839701461068a57806395d89b41146106e557806399f9b55e14610775578063a2c8a92714610863578063a9059cbb146108c8578063bf120ae51461092d578063c497780714610994578063c878dad9146109ef578063cae9ca5114610ab0578063d70907b014610b5b578063d950c43214610bc0578063dd62ed3e14610c81578063ddeb509414610cf8578063df21950f14610d33578063e6ad5bc714610d8e578063f2fde38b14610de5578063f851a44014610e28575b600080fd5b34801561019157600080fd5b5061019a610e7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101da5780820151818401526020810190506101bf565b50505050905090810190601f1680156102075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022157600080fd5b50610260600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1d565b604051808215151515815260200191505060405180910390f35b34801561028657600080fd5b5061028f6110f7565b6040518082815260200191505060405180910390f35b3480156102b157600080fd5b5061034c60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506110fd565b604051808215151515815260200191505060405180910390f35b34801561037257600080fd5b506103a7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611650565b6040518082815260200191505060405180910390f35b3480156103c957600080fd5b50610428600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116c9565b604051808215151515815260200191505060405180910390f35b34801561044e57600080fd5b50610457611c91565b604051808215151515815260200191505060405180910390f35b34801561047d57600080fd5b50610486611ca4565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ae57600080fd5b506104e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cb7565b604051808581526020018460ff1660ff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561053c578082015181840152602081019050610521565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561057e578082015181840152602081019050610563565b50505050905001965050505050505060405180910390f35b3480156105a257600080fd5b506105ab611f21565b005b3480156105b957600080fd5b506105c2611fb8565b604051808215151515815260200191505060405180910390f35b3480156105e857600080fd5b5061061d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fcb565b6040518082815260200191505060405180910390f35b34801561063f57600080fd5b50610648612014565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069657600080fd5b506106cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612039565b604051808215151515815260200191505060405180910390f35b3480156106f157600080fd5b506106fa612198565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561073a57808201518184015260208101905061071f565b50505050905090810190601f1680156107675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561078157600080fd5b50610849600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612236565b604051808215151515815260200191505060405180910390f35b34801561086f57600080fd5b506108ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122b8565b604051808215151515815260200191505060405180910390f35b3480156108d457600080fd5b50610913600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612334565b604051808215151515815260200191505060405180910390f35b34801561093957600080fd5b5061097a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612432565b604051808215151515815260200191505060405180910390f35b3480156109a057600080fd5b506109d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061254e565b604051808215151515815260200191505060405180910390f35b3480156109fb57600080fd5b50610a9660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506125a4565b604051808215151515815260200191505060405180910390f35b348015610abc57600080fd5b50610b41600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612749565b604051808215151515815260200191505060405180910390f35b348015610b6757600080fd5b50610ba6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b5f565b604051808215151515815260200191505060405180910390f35b348015610bcc57600080fd5b50610c676004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612c68565b604051808215151515815260200191505060405180910390f35b348015610c8d57600080fd5b50610ce2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfa565b6040518082815260200191505060405180910390f35b348015610d0457600080fd5b50610d31600480360381019080803515159060200190929190803515159060200190929190505050612e81565b005b348015610d3f57600080fd5b50610d74600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fae565b604051808215151515815260200191505060405180910390f35b348015610d9a57600080fd5b50610dcf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613027565b6040518082815260200191505060405180910390f35b348015610df157600080fd5b50610e26600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613070565b005b348015610e3457600080fd5b50610e3d6131c5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b505050505081565b60008060149054906101000a900460ff161561100757600060159054906101000a900460ff16151561100157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ff157506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ffc57600080fd5b611006565b600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60055481565b600080600080600080600060149054906101000a900460ff16156111ef57600060159054906101000a900460ff1615156111e957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111d957506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156111e457600080fd5b6111ee565b600080fd5b5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561124857600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561129557600080fd5b865188511415156112a557600080fd5b875194506000851115156112b857600080fd5b60009350600092505b84831015611310576112f387848151811015156112da57fe5b90602001906020020151856131eb90919063ffffffff16565b93506113096001846131eb90919063ffffffff16565b92506112c1565b61137561132733600a61320c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b841115151561138357600080fd5b600091505b8482101561164157878281518110151561139e57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156113d057600080fd5b6113e433600a61336b90919063ffffffff16565b801561141c57508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611452576114503382898581518110151561143457fe5b90602001906020020151600a6133bc909392919063ffffffff16565b505b6114bb878381518110151561146357fe5b90602001906020020151600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611567878381518110151561150f57fe5b90602001906020020151600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef898581518110151561160757fe5b906020019060200201516040518082815260200191505060405180910390a361163a6001836131eb90919063ffffffff16565b9150611388565b60019550505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116ae57600080fd5b6116c282600a61320c90919063ffffffff16565b9050919050565b60008060149054906101000a900460ff16156117b357600060159054906101000a900460ff1615156117ad57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061179d57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156117a857600080fd5b6117b2565b600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff16141515156117d957600080fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561183257600080fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561187f57600080fd5b6118e461189685600a61320c90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b82111515156118f257600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561197d57600080fd5b61199184600a61336b90919063ffffffff16565b80156119c957508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e8576119e6848484600a6133bc909392919063ffffffff16565b505b611a3a82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611acf82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ba182600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600060149054906101000a900460ff1681565b600460009054906101000a900460ff1681565b600080606080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d1957600080fd5b600a60000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000154600a60000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010160009054906101000a900460ff16600a60000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600201600a60000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160030181805480602002602001604051908101604052809291908181526020018280548015611e9357602002820191906000526020600020905b815481526020019060010190808311611e7f575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015611f0b57602002820191906000526020600020906000905b82829054906101000a900460ff1660ff1681526020019060010190602082600001049283019260010382029150808411611ed45790505b5050505050905093509350935093509193509193565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7d57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600060159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156120d257600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360019050919050565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561222e5780601f106122035761010080835404028352916020019161222e565b820191906000526020600020905b81548152906001019060200180831161221157829003601f168201915b505050505081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561229457600080fd5b6122ae85858585600a61356390949392919063ffffffff16565b9050949350505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561231657600080fd5b61232c8383600a61394e9092919063ffffffff16565b905092915050565b60008060149054906101000a900460ff161561241e57600060159054906101000a900460ff16151561241857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061240857506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561241357600080fd5b61241d565b600080fd5b5b61242883836139b5565b6001905092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561249057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156124ed57600080fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260857600080fd5b8551875114151561261857600080fd5b8651935060008411151561262b57600080fd5b600092505b8383101561273b57868381518110151561264657fe5b906020019060200201519150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156126af57600080fd5b85838151811015156126bd57fe5b90602001906020020151905080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506127346001846131eb90919063ffffffff16565b9250612630565b600194505050505092915050565b600080600060149054906101000a900460ff161561283557600060159054906101000a900460ff16151561282f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061281f57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561282a57600080fd5b612834565b600080fd5b5b60008573ffffffffffffffffffffffffffffffffffffffff161415151561285b57600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156128b457600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561290157600080fd5b61296661291833600a61320c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b841115151561297457600080fd5b61298833600a61336b90919063ffffffff16565b80156129c057508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156129df576129dd338686600a6133bc909392919063ffffffff16565b505b8490506129ec8585610f1d565b15612b56578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ae6578082015181840152602081019050612acb565b50505050905090810190601f168015612b135780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612b3557600080fd5b505af1158015612b49573d6000803e3d6000fd5b5050505060019150612b57565b5b509392505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612bbd57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612c1a57600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ccc57600080fd5b85518751141515612cdc57600080fd5b86519350600084111515612cef57600080fd5b600092505b83831015612dec578683815181101515612d0a57fe5b906020019060200201519150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612d7357600080fd5b8583815181101515612d8157fe5b90602001906020020151905080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612de56001846131eb90919063ffffffff16565b9250612cf4565b600194505050505092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612edc57600080fd5b60001515821515148015612ef4575060011515811515145b151515612f0057600080fd5b81600060146101000a81548160ff02191690831515021790555080600060156101000a81548160ff0219169083151502179055507fa14d191ca4f53bfcf003c65d429362010a2d3d68bc0c50cce4bdc0fccf661fb082604051808215151515815260200191505060405180910390a17fc77636fc4a62a1fa193ef538c0b7993a1313a0d9c0a9173058cebcd3239ef7b581604051808215151515815260200191505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561300c57600080fd5b61302082600a613ddb90919063ffffffff16565b9050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561310757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015151561320257600080fd5b8091505092915050565b600080600080600080935061322087613f31565b92505b61322d8784613f64565b1561333d5761323c8784613f78565b91508660000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905061332a61331b8860000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613fc190919063ffffffff16565b856131eb90919063ffffffff16565b93506133368784614269565b9250613223565b8394505050505092915050565b60008083831115151561335c57600080fd5b82840390508091505092915050565b6000808360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411905092915050565b6000613452828660000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b8560000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508460000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050949350505050565b60008061356e614335565b60008073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141515156135ab57600080fd5b845186511415156135bb57600080fd5b600086511115156135cb57600080fd5b60008660008151811015156135dc57fe5b906020019060200201511415156135f257600080fd5b84600081518110151561360157fe5b9060200190602002015160ff168760ff161115151561361f57600080fd5b600192505b85518310156136ed57858381518110151561363b57fe5b906020019060200201518661365a60018661334a90919063ffffffff16565b81518110151561366657fe5b9060200190602002015110151561367c57600080fd5b848381518110151561368a57fe5b9060200190602002015160ff16856136ac60018661334a90919063ffffffff16565b8151811015156136b857fe5b9060200190602002015160ff16111515156136d257600080fd5b6136e66001846131eb90919063ffffffff16565b9250613624565b6064856137056001885161334a90919063ffffffff16565b81518110151561371157fe5b9060200190602002015160ff1614151561372a57600080fd5b608060405190810160405280600081526020018860ff1681526020018781526020018681525091508860000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050818960000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000820151816000015560208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002019080519060200190613825929190614361565b5060608201518160030190805190602001906138429291906143ae565b5090505060008111156138585760009350613942565b88600101805480919060010161386e9190614455565b90506138846001826131eb90919063ffffffff16565b8960000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508789600101828154811015156138de57fe5b9060005260206000200160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860020160008154809291906001019190505550600193505b50505095945050505050565b6000428211151561395e57600080fd5b818460000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000181905550600190509392505050565b600060149054906101000a900460ff1615613a9e57600060159054906101000a900460ff161515613a9857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613a8857506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515613a9357600080fd5b613a9d565b600080fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515613ac457600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515613b1d57600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442111515613b6a57600080fd5b613b7e33600a61320c90919063ffffffff16565b613bd082600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b10151515613bdd57600080fd5b613bf133600a61336b90919063ffffffff16565b8015613c2957508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15613c4857613c46338383600a6133bc909392919063ffffffff16565b505b613c9a81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2f81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000811415613e375760009150613f2a565b8360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000808201600090556001820160006101000a81549060ff0219169055600282016000613eb29190614481565b600382016000613ec291906144a2565b50505050600184600101613ee060018461334a90919063ffffffff16565b815481101515613eec57fe5b9060005260206000200160000160146101000a81548160ff021916908315150217905550836002016000815480929190600190039190505550600191505b5092915050565b6000613f5d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614269565b9050919050565b600082600101805490508210905092915050565b60008260010182815481101515613f8b57fe5b9060005260206000200160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6000806000831415613fd65760009150614262565b600084600001541480613fec5750428460000154115b156140445761403d61402e60646140208760010160009054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b600090505b6140646001856002018054905061334a90919063ffffffff16565b8110156141815761409d846002018281548110151561407f57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b42101580156140ef57506140ec846002016140c26001846131eb90919063ffffffff16565b8154811015156140ce57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b42105b156141665761415f6141506064614142876003018581548110151561411057fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b61417a6001826131eb90919063ffffffff16565b9050614049565b6141cd846002016141a36001876002018054905061334a90919063ffffffff16565b8154811015156141af57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b421015156142615761425a61424b606461423d876003016141ff60018a6002018054905061334a90919063ffffffff16565b81548110151561420b57fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b5b5092915050565b600081806001019250505b8260010180549050821080156142b25750826001018281548110151561429657fe5b9060005260206000200160000160149054906101000a900460ff165b156142c4578180600101925050614274565b81905092915050565b60008060008414156142e25760009150614304565b82840290508284828115156142f357fe5b0414151561430057600080fd5b8091505b5092915050565b60008060008311151561431d57600080fd5b828481151561432857fe5b0490508091505092915050565b60806040519081016040528060008152602001600060ff16815260200160608152602001606081525090565b82805482825590600052602060002090810192821561439d579160200282015b8281111561439c578251825591602001919060010190614381565b5b5090506143aa91906144ca565b5090565b82805482825590600052602060002090601f016020900481019282156144445791602002820160005b8382111561441557835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026143d7565b80156144425782816101000a81549060ff0219169055600101602081600001049283019260010302614415565b505b50905061445191906144ef565b5090565b81548183558181111561447c5781836000526020600020918201910161447b919061451f565b5b505050565b508054600082559060005260206000209081019061449f91906144ca565b50565b50805460008255601f0160209004906000526020600020908101906144c791906144ca565b50565b6144ec91905b808211156144e85760008160009055506001016144d0565b5090565b90565b61451c91905b8082111561451857600081816101000a81549060ff0219169055506001016144f5565b5090565b90565b61457691905b8082111561457257600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905550600101614525565b5090565b905600a165627a7a723058202c383ac2912097d988e6fe7b5d2cb5273ab42361d2e8411e82eae98323c9dfd20029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000095345524f546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045345524f00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610185578063095ea7b31461021557806318160ddd1461027a5780631e89d545146102a5578063207c64fb1461036657806323b872dd146103bd57806324bb7c2614610442578063313ce5671461047157806335cd64ee146104a257806341c0e1b51461059657806364779ad7146105ad57806370a08231146105dc5780638da5cb5b146106335780638f2839701461068a57806395d89b41146106e557806399f9b55e14610775578063a2c8a92714610863578063a9059cbb146108c8578063bf120ae51461092d578063c497780714610994578063c878dad9146109ef578063cae9ca5114610ab0578063d70907b014610b5b578063d950c43214610bc0578063dd62ed3e14610c81578063ddeb509414610cf8578063df21950f14610d33578063e6ad5bc714610d8e578063f2fde38b14610de5578063f851a44014610e28575b600080fd5b34801561019157600080fd5b5061019a610e7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101da5780820151818401526020810190506101bf565b50505050905090810190601f1680156102075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022157600080fd5b50610260600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f1d565b604051808215151515815260200191505060405180910390f35b34801561028657600080fd5b5061028f6110f7565b6040518082815260200191505060405180910390f35b3480156102b157600080fd5b5061034c60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506110fd565b604051808215151515815260200191505060405180910390f35b34801561037257600080fd5b506103a7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611650565b6040518082815260200191505060405180910390f35b3480156103c957600080fd5b50610428600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116c9565b604051808215151515815260200191505060405180910390f35b34801561044e57600080fd5b50610457611c91565b604051808215151515815260200191505060405180910390f35b34801561047d57600080fd5b50610486611ca4565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ae57600080fd5b506104e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cb7565b604051808581526020018460ff1660ff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561053c578082015181840152602081019050610521565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561057e578082015181840152602081019050610563565b50505050905001965050505050505060405180910390f35b3480156105a257600080fd5b506105ab611f21565b005b3480156105b957600080fd5b506105c2611fb8565b604051808215151515815260200191505060405180910390f35b3480156105e857600080fd5b5061061d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fcb565b6040518082815260200191505060405180910390f35b34801561063f57600080fd5b50610648612014565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069657600080fd5b506106cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612039565b604051808215151515815260200191505060405180910390f35b3480156106f157600080fd5b506106fa612198565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561073a57808201518184015260208101905061071f565b50505050905090810190601f1680156107675780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561078157600080fd5b50610849600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612236565b604051808215151515815260200191505060405180910390f35b34801561086f57600080fd5b506108ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122b8565b604051808215151515815260200191505060405180910390f35b3480156108d457600080fd5b50610913600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612334565b604051808215151515815260200191505060405180910390f35b34801561093957600080fd5b5061097a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612432565b604051808215151515815260200191505060405180910390f35b3480156109a057600080fd5b506109d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061254e565b604051808215151515815260200191505060405180910390f35b3480156109fb57600080fd5b50610a9660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506125a4565b604051808215151515815260200191505060405180910390f35b348015610abc57600080fd5b50610b41600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612749565b604051808215151515815260200191505060405180910390f35b348015610b6757600080fd5b50610ba6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b5f565b604051808215151515815260200191505060405180910390f35b348015610bcc57600080fd5b50610c676004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612c68565b604051808215151515815260200191505060405180910390f35b348015610c8d57600080fd5b50610ce2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfa565b6040518082815260200191505060405180910390f35b348015610d0457600080fd5b50610d31600480360381019080803515159060200190929190803515159060200190929190505050612e81565b005b348015610d3f57600080fd5b50610d74600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fae565b604051808215151515815260200191505060405180910390f35b348015610d9a57600080fd5b50610dcf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613027565b6040518082815260200191505060405180910390f35b348015610df157600080fd5b50610e26600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613070565b005b348015610e3457600080fd5b50610e3d6131c5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b505050505081565b60008060149054906101000a900460ff161561100757600060159054906101000a900460ff16151561100157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610ff157506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610ffc57600080fd5b611006565b600080fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60055481565b600080600080600080600060149054906101000a900460ff16156111ef57600060159054906101000a900460ff1615156111e957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111d957506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156111e457600080fd5b6111ee565b600080fd5b5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561124857600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561129557600080fd5b865188511415156112a557600080fd5b875194506000851115156112b857600080fd5b60009350600092505b84831015611310576112f387848151811015156112da57fe5b90602001906020020151856131eb90919063ffffffff16565b93506113096001846131eb90919063ffffffff16565b92506112c1565b61137561132733600a61320c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b841115151561138357600080fd5b600091505b8482101561164157878281518110151561139e57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156113d057600080fd5b6113e433600a61336b90919063ffffffff16565b801561141c57508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611452576114503382898581518110151561143457fe5b90602001906020020151600a6133bc909392919063ffffffff16565b505b6114bb878381518110151561146357fe5b90602001906020020151600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611567878381518110151561150f57fe5b90602001906020020151600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef898581518110151561160757fe5b906020019060200201516040518082815260200191505060405180910390a361163a6001836131eb90919063ffffffff16565b9150611388565b60019550505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116ae57600080fd5b6116c282600a61320c90919063ffffffff16565b9050919050565b60008060149054906101000a900460ff16156117b357600060159054906101000a900460ff1615156117ad57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061179d57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156117a857600080fd5b6117b2565b600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff16141515156117d957600080fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561183257600080fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561187f57600080fd5b6118e461189685600a61320c90919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b82111515156118f257600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561197d57600080fd5b61199184600a61336b90919063ffffffff16565b80156119c957508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e8576119e6848484600a6133bc909392919063ffffffff16565b505b611a3a82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611acf82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ba182600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600060149054906101000a900460ff1681565b600460009054906101000a900460ff1681565b600080606080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d1957600080fd5b600a60000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000154600a60000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010160009054906101000a900460ff16600a60000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600201600a60000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160030181805480602002602001604051908101604052809291908181526020018280548015611e9357602002820191906000526020600020905b815481526020019060010190808311611e7f575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015611f0b57602002820191906000526020600020906000905b82829054906101000a900460ff1660ff1681526020019060010190602082600001049283019260010382029150808411611ed45790505b5050505050905093509350935093509193509193565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7d57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600060159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156120d257600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec660405160405180910390a360019050919050565b60038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561222e5780601f106122035761010080835404028352916020019161222e565b820191906000526020600020905b81548152906001019060200180831161221157829003601f168201915b505050505081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561229457600080fd5b6122ae85858585600a61356390949392919063ffffffff16565b9050949350505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561231657600080fd5b61232c8383600a61394e9092919063ffffffff16565b905092915050565b60008060149054906101000a900460ff161561241e57600060159054906101000a900460ff16151561241857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061240857506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561241357600080fd5b61241d565b600080fd5b5b61242883836139b5565b6001905092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561249057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156124ed57600080fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260857600080fd5b8551875114151561261857600080fd5b8651935060008411151561262b57600080fd5b600092505b8383101561273b57868381518110151561264657fe5b906020019060200201519150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156126af57600080fd5b85838151811015156126bd57fe5b90602001906020020151905080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506127346001846131eb90919063ffffffff16565b9250612630565b600194505050505092915050565b600080600060149054906101000a900460ff161561283557600060159054906101000a900460ff16151561282f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061281f57506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561282a57600080fd5b612834565b600080fd5b5b60008573ffffffffffffffffffffffffffffffffffffffff161415151561285b57600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156128b457600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544211151561290157600080fd5b61296661291833600a61320c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b841115151561297457600080fd5b61298833600a61336b90919063ffffffff16565b80156129c057508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156129df576129dd338686600a6133bc909392919063ffffffff16565b505b8490506129ec8585610f1d565b15612b56578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ae6578082015181840152602081019050612acb565b50505050905090810190601f168015612b135780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612b3557600080fd5b505af1158015612b49573d6000803e3d6000fd5b5050505060019150612b57565b5b509392505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612bbd57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612c1a57600080fd5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ccc57600080fd5b85518751141515612cdc57600080fd5b86519350600084111515612cef57600080fd5b600092505b83831015612dec578683815181101515612d0a57fe5b906020019060200201519150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612d7357600080fd5b8583815181101515612d8157fe5b90602001906020020151905080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612de56001846131eb90919063ffffffff16565b9250612cf4565b600194505050505092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612edc57600080fd5b60001515821515148015612ef4575060011515811515145b151515612f0057600080fd5b81600060146101000a81548160ff02191690831515021790555080600060156101000a81548160ff0219169083151502179055507fa14d191ca4f53bfcf003c65d429362010a2d3d68bc0c50cce4bdc0fccf661fb082604051808215151515815260200191505060405180910390a17fc77636fc4a62a1fa193ef538c0b7993a1313a0d9c0a9173058cebcd3239ef7b581604051808215151515815260200191505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561300c57600080fd5b61302082600a613ddb90919063ffffffff16565b9050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156130cb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561310757600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015151561320257600080fd5b8091505092915050565b600080600080600080935061322087613f31565b92505b61322d8784613f64565b1561333d5761323c8784613f78565b91508660000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905061332a61331b8860000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613fc190919063ffffffff16565b856131eb90919063ffffffff16565b93506133368784614269565b9250613223565b8394505050505092915050565b60008083831115151561335c57600080fd5b82840390508091505092915050565b6000808360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411905092915050565b6000613452828660000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b8560000160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508460000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050949350505050565b60008061356e614335565b60008073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141515156135ab57600080fd5b845186511415156135bb57600080fd5b600086511115156135cb57600080fd5b60008660008151811015156135dc57fe5b906020019060200201511415156135f257600080fd5b84600081518110151561360157fe5b9060200190602002015160ff168760ff161115151561361f57600080fd5b600192505b85518310156136ed57858381518110151561363b57fe5b906020019060200201518661365a60018661334a90919063ffffffff16565b81518110151561366657fe5b9060200190602002015110151561367c57600080fd5b848381518110151561368a57fe5b9060200190602002015160ff16856136ac60018661334a90919063ffffffff16565b8151811015156136b857fe5b9060200190602002015160ff16111515156136d257600080fd5b6136e66001846131eb90919063ffffffff16565b9250613624565b6064856137056001885161334a90919063ffffffff16565b81518110151561371157fe5b9060200190602002015160ff1614151561372a57600080fd5b608060405190810160405280600081526020018860ff1681526020018781526020018681525091508860000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050818960000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000820151816000015560208201518160010160006101000a81548160ff021916908360ff1602179055506040820151816002019080519060200190613825929190614361565b5060608201518160030190805190602001906138429291906143ae565b5090505060008111156138585760009350613942565b88600101805480919060010161386e9190614455565b90506138846001826131eb90919063ffffffff16565b8960000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508789600101828154811015156138de57fe5b9060005260206000200160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860020160008154809291906001019190505550600193505b50505095945050505050565b6000428211151561395e57600080fd5b818460000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000181905550600190509392505050565b600060149054906101000a900460ff1615613a9e57600060159054906101000a900460ff161515613a9857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480613a8857506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515613a9357600080fd5b613a9d565b600080fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515613ac457600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515613b1d57600080fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442111515613b6a57600080fd5b613b7e33600a61320c90919063ffffffff16565b613bd082600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b10151515613bdd57600080fd5b613bf133600a61336b90919063ffffffff16565b8015613c2957508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15613c4857613c46338383600a6133bc909392919063ffffffff16565b505b613c9a81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461334a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d2f81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000811415613e375760009150613f2a565b8360000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000808201600090556001820160006101000a81549060ff0219169055600282016000613eb29190614481565b600382016000613ec291906144a2565b50505050600184600101613ee060018461334a90919063ffffffff16565b815481101515613eec57fe5b9060005260206000200160000160146101000a81548160ff021916908315150217905550836002016000815480929190600190039190505550600191505b5092915050565b6000613f5d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614269565b9050919050565b600082600101805490508210905092915050565b60008260010182815481101515613f8b57fe5b9060005260206000200160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6000806000831415613fd65760009150614262565b600084600001541480613fec5750428460000154115b156140445761403d61402e60646140208760010160009054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b600090505b6140646001856002018054905061334a90919063ffffffff16565b8110156141815761409d846002018281548110151561407f57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b42101580156140ef57506140ec846002016140c26001846131eb90919063ffffffff16565b8154811015156140ce57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b42105b156141665761415f6141506064614142876003018581548110151561411057fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b61417a6001826131eb90919063ffffffff16565b9050614049565b6141cd846002016141a36001876002018054905061334a90919063ffffffff16565b8154811015156141af57fe5b906000526020600020015485600001546131eb90919063ffffffff16565b421015156142615761425a61424b606461423d876003016141ff60018a6002018054905061334a90919063ffffffff16565b81548110151561420b57fe5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16876142cd90919063ffffffff16565b61430b90919063ffffffff16565b8461334a90919063ffffffff16565b9150614262565b5b5092915050565b600081806001019250505b8260010180549050821080156142b25750826001018281548110151561429657fe5b9060005260206000200160000160149054906101000a900460ff165b156142c4578180600101925050614274565b81905092915050565b60008060008414156142e25760009150614304565b82840290508284828115156142f357fe5b0414151561430057600080fd5b8091505b5092915050565b60008060008311151561431d57600080fd5b828481151561432857fe5b0490508091505092915050565b60806040519081016040528060008152602001600060ff16815260200160608152602001606081525090565b82805482825590600052602060002090810192821561439d579160200282015b8281111561439c578251825591602001919060010190614381565b5b5090506143aa91906144ca565b5090565b82805482825590600052602060002090601f016020900481019282156144445791602002820160005b8382111561441557835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026143d7565b80156144425782816101000a81549060ff0219169055600101602081600001049283019260010302614415565b505b50905061445191906144ef565b5090565b81548183558181111561447c5781836000526020600020918201910161447b919061451f565b5b505050565b508054600082559060005260206000209081019061449f91906144ca565b50565b50805460008255601f0160209004906000526020600020908101906144c791906144ca565b50565b6144ec91905b808211156144e85760008160009055506001016144d0565b5090565b90565b61451c91905b8082111561451857600081816101000a81549060ff0219169055506001016144f5565b5090565b90565b61457691905b8082111561457257600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905550600101614525565b5090565b905600a165627a7a723058202c383ac2912097d988e6fe7b5d2cb5273ab42361d2e8411e82eae98323c9dfd20029

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000095345524f546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045345524f00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenName (string): SEROToken
Arg [1] : tokenSymbol (string): SERO
Arg [2] : totalTokenSupply (uint256): 1000000000

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [4] : 5345524f546f6b656e0000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 5345524f00000000000000000000000000000000000000000000000000000000


Swarm Source

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