ETH Price: $3,159.72 (+1.03%)
Gas: 9 Gwei

Token

KPC8 (KPC8)
 

Overview

Max Total Supply

390,000,000 KPC8

Holders

662

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
KPC8

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.4.24;


interface IERC20 {
  function totalSupply() external view returns (uint256);

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

  function allowance(address owner, address spender)
    external view returns (uint256);

  function transfer(address to, uint256 value) external returns (bool);

  function approve(address spender, uint256 value)
    external returns (bool);

  function transferFrom(address from, address to, uint256 value)
    external returns (bool);

  event Transfer(
    address indexed from,
    address indexed to,
    uint256 value
  );

  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

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;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    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;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

contract ERC20 is IERC20 {
  using SafeMath for uint256;

  mapping (address => uint256) private _balances;

  mapping (address => mapping (address => uint256)) private _allowed;

  uint256 private _totalSupply;

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

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

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

  /**
  * @dev Transfer token for a specified address
  * @param to The address to transfer to.
  * @param value The amount to be transferred.
  */
  function transfer(address to, uint256 value) public returns (bool) {
    _transfer(msg.sender, to, value);
    return true;
  }

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

    _allowed[msg.sender][spender] = value;
    emit Approval(msg.sender, spender, value);
    return true;
  }

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

    _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
    _transfer(from, to, value);
    return true;
  }

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

    _allowed[msg.sender][spender] = (
      _allowed[msg.sender][spender].add(addedValue));
    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed_[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param spender The address which will spend the funds.
   * @param subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseAllowance(
    address spender,
    uint256 subtractedValue
  )
    public
    returns (bool)
  {
    require(spender != address(0));

    _allowed[msg.sender][spender] = (
      _allowed[msg.sender][spender].sub(subtractedValue));
    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
    return true;
  }

  /**
  * @dev Transfer token for a specified addresses
  * @param from The address to transfer from.
  * @param to The address to transfer to.
  * @param value The amount to be transferred.
  */
  function _transfer(address from, address to, uint256 value) internal {
    require(value <= _balances[from]);
    require(to != address(0));

    _balances[from] = _balances[from].sub(value);
    _balances[to] = _balances[to].add(value);
    emit Transfer(from, to, value);
  }

  /**
   * @dev Internal function that mints an amount of the token and assigns it to
   * an account. This encapsulates the modification of balances such that the
   * proper events are emitted.
   * @param account The account that will receive the created tokens.
   * @param value The amount that will be created.
   */
  function _mint(address account, uint256 value) internal {
    require(account != 0);
    _totalSupply = _totalSupply.add(value);
    _balances[account] = _balances[account].add(value);
    emit Transfer(address(0), account, value);
  }

  /**
   * @dev Internal function that burns an amount of the token of a given
   * account.
   * @param account The account whose tokens will be burnt.
   * @param value The amount that will be burnt.
   */
  function _burn(address account, uint256 value) internal {
    require(account != 0);
    require(value <= _balances[account]);

    _totalSupply = _totalSupply.sub(value);
    _balances[account] = _balances[account].sub(value);
    emit Transfer(account, address(0), value);
  }

  /**
   * @dev Internal function that burns an amount of the token of a given
   * account, deducting from the sender's allowance for said account. Uses the
   * internal burn function.
   * @param account The account whose tokens will be burnt.
   * @param value The amount that will be burnt.
   */
  function _burnFrom(address account, uint256 value) internal {
    require(value <= _allowed[account][msg.sender]);

    // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted,
    // this function needs to emit an event with the updated approval.
    _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(
      value);
    _burn(account, value);
  }
}

library Roles {
  struct Role {
    mapping (address => bool) bearer;
  }

  /**
   * @dev give an account access to this role
   */
  function add(Role storage role, address account) internal {
    require(account != address(0));
    require(!has(role, account));

    role.bearer[account] = true;
  }

  /**
   * @dev remove an account's access to this role
   */
  function remove(Role storage role, address account) internal {
    require(account != address(0));
    require(has(role, account));

    role.bearer[account] = false;
  }

  /**
   * @dev check if an account has this role
   * @return bool
   */
  function has(Role storage role, address account)
    internal
    view
    returns (bool)
  {
    require(account != address(0));
    return role.bearer[account];
  }
}

contract BurnerRole {
  using Roles for Roles.Role;

  event BurnerAdded(address indexed account);
  event BurnerRemoved(address indexed account);

  Roles.Role private burners;

  constructor() internal {
    _addBurner(msg.sender);
  }

  modifier onlyBurner() {
    require(isBurner(msg.sender));
    _;
  }

  function isBurner(address account) public view returns (bool) {
    return burners.has(account);
  }

  function addBurner(address account) public onlyBurner {
    _addBurner(account);
  }

  function renounceBurner() public {
    _removeBurner(msg.sender);
  }

  function _addBurner(address account) internal {
    burners.add(account);
    emit BurnerAdded(account);
  }

  function _removeBurner(address account) internal {
    burners.remove(account);
    emit BurnerRemoved(account);
  }
}

contract ERC20Burnable is ERC20, BurnerRole {

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

}

contract MinterRole {
  using Roles for Roles.Role;

  event MinterAdded(address indexed account);
  event MinterRemoved(address indexed account);

  Roles.Role private minters;

  constructor() internal {
    _addMinter(msg.sender);
  }

  modifier onlyMinter() {
    require(isMinter(msg.sender));
    _;
  }

  function isMinter(address account) public view returns (bool) {
    return minters.has(account);
  }

  function addMinter(address account) public onlyMinter {
    _addMinter(account);
  }

  function renounceMinter() public {
    _removeMinter(msg.sender);
  }

  function _addMinter(address account) internal {
    minters.add(account);
    emit MinterAdded(account);
  }

  function _removeMinter(address account) internal {
    minters.remove(account);
    emit MinterRemoved(account);
  }
}

contract ERC20Mintable is ERC20, MinterRole {
  /**
   * @dev Function to mint tokens
   * @param to The address that will receive the minted tokens.
   * @param value The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(
    address to,
    uint256 value
  )
    public
    onlyMinter
    returns (bool)
  {
    _mint(to, value);
    return true;
  }
}

contract Ownable {
  address private _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() internal {
    _owner = msg.sender;
    emit OwnershipTransferred(address(0), _owner);
  }

  /**
   * @return the address of the owner.
   */
  function owner() public view returns(address) {
    return _owner;
  }

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

  /**
   * @return true if `msg.sender` is the owner of the contract.
   */
  function isOwner() public view returns(bool) {
    return msg.sender == _owner;
  }

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

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

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

contract KPC8 is ERC20, ERC20Mintable, ERC20Burnable, Ownable {
    string public name = "KPC8";
    string public symbol = "KPC8";
    uint8 public decimals = 18;
    uint public INITIAL_SUPPLY = 3000000000 * 10 ** uint(decimals);

    constructor() public {
        _mint(msg.sender, INITIAL_SUPPLY);
    }
}

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":"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":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isBurner","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":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","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":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceBurner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addBurner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"BurnerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"BurnerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526040805190810160405280600481526020017f4b504338000000000000000000000000000000000000000000000000000000008152506006908051906020019062000051929190620005ab565b506040805190810160405280600481526020017f4b50433800000000000000000000000000000000000000000000000000000000815250600790805190602001906200009f929190620005ab565b506012600860006101000a81548160ff021916908360ff160217905550600860009054906101000a900460ff1660ff16600a0a63b2d05e0002600955348015620000e857600080fd5b506200010333620001fe640100000000026401000000009004565b6200011d3362000268640100000000026401000000009004565b33600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620001f833600954620002d2640100000000026401000000009004565b6200065a565b62000222816003620004316401000000000262001cab179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6200028c816004620004316401000000000262001cab179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456060405160405180910390a250565b60008273ffffffffffffffffffffffffffffffffffffffff1614151515620002f957600080fd5b6200031e81600254620004f464010000000002620016c9179091906401000000009004565b60028190555062000385816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620004f464010000000002620016c9179091906401000000009004565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200046e57600080fd5b62000489828262000516640100000000026401000000009004565b1515156200049657600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008082840190508381101515156200050c57600080fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200055457600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005ee57805160ff19168380011785556200061f565b828001600101855582156200061f579182015b828111156200061e57825182559160200191906001019062000601565b5b5090506200062e919062000632565b5090565b6200065791905b808211156200065357600081600090555060010162000639565b5090565b90565b611e36806200066a6000396000f30060806040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610143578063095ea7b3146101d357806318160ddd1461023857806323b872dd146102635780632ff2e9dc146102e8578063313ce56714610313578063395093511461034457806340c10f19146103a957806342966c681461040e5780634334614a1461043b57806370a0823114610496578063715018a6146104ed5780638da5cb5b146105045780638f32d59b1461055b57806395d89b411461058a578063983b2d561461061a578063986502751461065d578063a457c2d714610674578063a9059cbb146106d9578063aa271e1a1461073e578063dd62ed3e14610799578063e9ec9e8b14610810578063f2fde38b14610827578063f44637ba1461086a575b600080fd5b34801561014f57600080fd5b506101586108ad565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019857808201518184015260208101905061017d565b50505050905090810190601f1680156101c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101df57600080fd5b5061021e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061094b565b604051808215151515815260200191505060405180910390f35b34801561024457600080fd5b5061024d610a78565b6040518082815260200191505060405180910390f35b34801561026f57600080fd5b506102ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a82565b604051808215151515815260200191505060405180910390f35b3480156102f457600080fd5b506102fd610c34565b6040518082815260200191505060405180910390f35b34801561031f57600080fd5b50610328610c3a565b604051808260ff1660ff16815260200191505060405180910390f35b34801561035057600080fd5b5061038f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c4d565b604051808215151515815260200191505060405180910390f35b3480156103b557600080fd5b506103f4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e84565b604051808215151515815260200191505060405180910390f35b34801561041a57600080fd5b5061043960048036038101908080359060200190929190505050610eae565b005b34801561044757600080fd5b5061047c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ecf565b604051808215151515815260200191505060405180910390f35b3480156104a257600080fd5b506104d7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eec565b6040518082815260200191505060405180910390f35b3480156104f957600080fd5b50610502610f34565b005b34801561051057600080fd5b50610519611008565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056757600080fd5b50610570611032565b604051808215151515815260200191505060405180910390f35b34801561059657600080fd5b5061059f61108a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105df5780820151818401526020810190506105c4565b50505050905090810190601f16801561060c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561062657600080fd5b5061065b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611128565b005b34801561066957600080fd5b50610672611148565b005b34801561068057600080fd5b506106bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611153565b604051808215151515815260200191505060405180910390f35b3480156106e557600080fd5b50610724600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061138a565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b5061077f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a1565b604051808215151515815260200191505060405180910390f35b3480156107a557600080fd5b506107fa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113be565b6040518082815260200191505060405180910390f35b34801561081c57600080fd5b50610825611445565b005b34801561083357600080fd5b50610868600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611450565b005b34801561087657600080fd5b506108ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061146f565b005b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109435780601f1061091857610100808354040283529160200191610943565b820191906000526020600020905b81548152906001019060200180831161092657829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561098857600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610b0f57600080fd5b610b9e82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148f90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c298484846114b0565b600190509392505050565b60095481565b600860009054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c8a57600080fd5b610d1982600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610e8f336113a1565b1515610e9a57600080fd5b610ea483836116ea565b6001905092915050565b610eb733610ecf565b1515610ec257600080fd5b610ecc3382611828565b50565b6000610ee58260046119b390919063ffffffff16565b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f3c611032565b1515610f4757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111205780601f106110f557610100808354040283529160200191611120565b820191906000526020600020905b81548152906001019060200180831161110357829003601f168201915b505050505081565b611131336113a1565b151561113c57600080fd5b61114581611a47565b50565b61115133611aa1565b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561119057600080fd5b61121f82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148f90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60006113973384846114b0565b6001905092915050565b60006113b78260036119b390919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61144e33611afb565b565b611458611032565b151561146357600080fd5b61146c81611b55565b50565b61147833610ecf565b151561148357600080fd5b61148c81611c51565b50565b6000808383111515156114a157600080fd5b82840390508091505092915050565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111515156114fd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561153957600080fd5b61158a816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148f90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061161d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082840190508381101515156116e057600080fd5b8091505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff161415151561171057600080fd5b611725816002546116c990919063ffffffff16565b60028190555061177c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008273ffffffffffffffffffffffffffffffffffffffff161415151561184e57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561189b57600080fd5b6118b08160025461148f90919063ffffffff16565b600281905550611907816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156119f057600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a5b816003611cab90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611ab5816003611d5b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b611b0f816004611d5b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f90eabbc0c667db2a5029ed6bc0f5fe9f356d11684a4ca9fcfaec0e53f12b9c8e60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611b9157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c65816004611cab90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456060405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ce757600080fd5b611cf182826119b3565b151515611cfd57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d9757600080fd5b611da182826119b3565b1515611dac57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505600a165627a7a72305820b1bc58c5aaf548751553e21467dfef36e579d14398a9e29ce65cbcf92913975c0029

Deployed Bytecode

0x60806040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610143578063095ea7b3146101d357806318160ddd1461023857806323b872dd146102635780632ff2e9dc146102e8578063313ce56714610313578063395093511461034457806340c10f19146103a957806342966c681461040e5780634334614a1461043b57806370a0823114610496578063715018a6146104ed5780638da5cb5b146105045780638f32d59b1461055b57806395d89b411461058a578063983b2d561461061a578063986502751461065d578063a457c2d714610674578063a9059cbb146106d9578063aa271e1a1461073e578063dd62ed3e14610799578063e9ec9e8b14610810578063f2fde38b14610827578063f44637ba1461086a575b600080fd5b34801561014f57600080fd5b506101586108ad565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019857808201518184015260208101905061017d565b50505050905090810190601f1680156101c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101df57600080fd5b5061021e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061094b565b604051808215151515815260200191505060405180910390f35b34801561024457600080fd5b5061024d610a78565b6040518082815260200191505060405180910390f35b34801561026f57600080fd5b506102ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a82565b604051808215151515815260200191505060405180910390f35b3480156102f457600080fd5b506102fd610c34565b6040518082815260200191505060405180910390f35b34801561031f57600080fd5b50610328610c3a565b604051808260ff1660ff16815260200191505060405180910390f35b34801561035057600080fd5b5061038f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c4d565b604051808215151515815260200191505060405180910390f35b3480156103b557600080fd5b506103f4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e84565b604051808215151515815260200191505060405180910390f35b34801561041a57600080fd5b5061043960048036038101908080359060200190929190505050610eae565b005b34801561044757600080fd5b5061047c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ecf565b604051808215151515815260200191505060405180910390f35b3480156104a257600080fd5b506104d7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eec565b6040518082815260200191505060405180910390f35b3480156104f957600080fd5b50610502610f34565b005b34801561051057600080fd5b50610519611008565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056757600080fd5b50610570611032565b604051808215151515815260200191505060405180910390f35b34801561059657600080fd5b5061059f61108a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105df5780820151818401526020810190506105c4565b50505050905090810190601f16801561060c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561062657600080fd5b5061065b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611128565b005b34801561066957600080fd5b50610672611148565b005b34801561068057600080fd5b506106bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611153565b604051808215151515815260200191505060405180910390f35b3480156106e557600080fd5b50610724600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061138a565b604051808215151515815260200191505060405180910390f35b34801561074a57600080fd5b5061077f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a1565b604051808215151515815260200191505060405180910390f35b3480156107a557600080fd5b506107fa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113be565b6040518082815260200191505060405180910390f35b34801561081c57600080fd5b50610825611445565b005b34801561083357600080fd5b50610868600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611450565b005b34801561087657600080fd5b506108ab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061146f565b005b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109435780601f1061091857610100808354040283529160200191610943565b820191906000526020600020905b81548152906001019060200180831161092657829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561098857600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600254905090565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610b0f57600080fd5b610b9e82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148f90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c298484846114b0565b600190509392505050565b60095481565b600860009054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610c8a57600080fd5b610d1982600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c990919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000610e8f336113a1565b1515610e9a57600080fd5b610ea483836116ea565b6001905092915050565b610eb733610ecf565b1515610ec257600080fd5b610ecc3382611828565b50565b6000610ee58260046119b390919063ffffffff16565b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f3c611032565b1515610f4757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111205780601f106110f557610100808354040283529160200191611120565b820191906000526020600020905b81548152906001019060200180831161110357829003601f168201915b505050505081565b611131336113a1565b151561113c57600080fd5b61114581611a47565b50565b61115133611aa1565b565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561119057600080fd5b61121f82600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148f90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60006113973384846114b0565b6001905092915050565b60006113b78260036119b390919063ffffffff16565b9050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61144e33611afb565b565b611458611032565b151561146357600080fd5b61146c81611b55565b50565b61147833610ecf565b151561148357600080fd5b61148c81611c51565b50565b6000808383111515156114a157600080fd5b82840390508091505092915050565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111515156114fd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561153957600080fd5b61158a816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148f90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061161d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008082840190508381101515156116e057600080fd5b8091505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff161415151561171057600080fd5b611725816002546116c990919063ffffffff16565b60028190555061177c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116c990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008273ffffffffffffffffffffffffffffffffffffffff161415151561184e57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561189b57600080fd5b6118b08160025461148f90919063ffffffff16565b600281905550611907816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461148f90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156119f057600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a5b816003611cab90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611ab5816003611d5b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b611b0f816004611d5b90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f90eabbc0c667db2a5029ed6bc0f5fe9f356d11684a4ca9fcfaec0e53f12b9c8e60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611b9157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c65816004611cab90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b9456060405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ce757600080fd5b611cf182826119b3565b151515611cfd57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611d9757600080fd5b611da182826119b3565b1515611dac57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505600a165627a7a72305820b1bc58c5aaf548751553e21467dfef36e579d14398a9e29ce65cbcf92913975c0029

Deployed Bytecode Sourcemap

14178:319:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14247:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14247:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14247:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4402:226;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4402:226:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2613:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2613:85:0;;;;;;;;;;;;;;;;;;;;;;;4908:301;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4908:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14350:62;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14350:62:0;;;;;;;;;;;;;;;;;;;;;;;14317:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14317:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5671:343;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5671:343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12195:154;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12195:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10967:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10967:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;10283:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10283:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2902:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2902:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13458:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13458:130:0;;;;;;12799:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12799:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13101:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13101:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14281:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14281:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14281:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11499:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11499:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11591:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11591:71:0;;;;;;6481:353;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6481:353:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3645:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3645:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11391:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11391:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3327:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3327:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10483:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10483:71:0;;;;;;13755:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13755:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10391:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10391:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14247:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4402:226::-;4467:4;4507:1;4488:21;;:7;:21;;;;4480:30;;;;;;;;4551:5;4519:8;:20;4528:10;4519:20;;;;;;;;;;;;;;;:29;4540:7;4519:29;;;;;;;;;;;;;;;:37;;;;4589:7;4568:36;;4577:10;4568:36;;;4598:5;4568:36;;;;;;;;;;;;;;;;;;4618:4;4611:11;;4402:226;;;;:::o;2613:85::-;2657:7;2680:12;;2673:19;;2613:85;:::o;4908:301::-;5017:4;5050:8;:14;5059:4;5050:14;;;;;;;;;;;;;;;:26;5065:10;5050:26;;;;;;;;;;;;;;;;5041:5;:35;;5033:44;;;;;;;;5115:37;5146:5;5115:8;:14;5124:4;5115:14;;;;;;;;;;;;;;;:26;5130:10;5115:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;5086:8;:14;5095:4;5086:14;;;;;;;;;;;;;;;:26;5101:10;5086:26;;;;;;;;;;;;;;;:66;;;;5159:26;5169:4;5175:2;5179:5;5159:9;:26::i;:::-;5199:4;5192:11;;4908:301;;;;;:::o;14350:62::-;;;;:::o;14317:26::-;;;;;;;;;;;;;:::o;5671:343::-;5776:4;5819:1;5800:21;;:7;:21;;;;5792:30;;;;;;;;5872:45;5906:10;5872:8;:20;5881:10;5872:20;;;;;;;;;;;;;;;:29;5893:7;5872:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;5831:8;:20;5840:10;5831:20;;;;;;;;;;;;;;;:29;5852:7;5831:29;;;;;;;;;;;;;;;:87;;;;5951:7;5930:60;;5939:10;5930:60;;;5960:8;:20;5969:10;5960:20;;;;;;;;;;;;;;;:29;5981:7;5960:29;;;;;;;;;;;;;;;;5930:60;;;;;;;;;;;;;;;;;;6004:4;5997:11;;5671:343;;;;:::o;12195:154::-;12293:4;11350:20;11359:10;11350:8;:20::i;:::-;11342:29;;;;;;;;12309:16;12315:2;12319:5;12309;:16::i;:::-;12339:4;12332:11;;12195:154;;;;:::o;10967:84::-;10242:20;10251:10;10242:8;:20::i;:::-;10234:29;;;;;;;;11021:24;11027:10;11039:5;11021;:24::i;:::-;10967:84;:::o;10283:102::-;10339:4;10359:20;10371:7;10359;:11;;:20;;;;:::i;:::-;10352:27;;10283:102;;;:::o;2902:100::-;2957:7;2980:9;:16;2990:5;2980:16;;;;;;;;;;;;;;;;2973:23;;2902:100;;;:::o;13458:130::-;12992:9;:7;:9::i;:::-;12984:18;;;;;;;;13553:1;13516:40;;13537:6;;;;;;;;;;;13516:40;;;;;;;;;;;;13580:1;13563:6;;:19;;;;;;;;;;;;;;;;;;13458:130::o;12799:72::-;12836:7;12859:6;;;;;;;;;;;12852:13;;12799:72;:::o;13101:85::-;13140:4;13174:6;;;;;;;;;;;13160:20;;:10;:20;;;13153:27;;13101:85;:::o;14281:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11499:86::-;11350:20;11359:10;11350:8;:20::i;:::-;11342:29;;;;;;;;11560:19;11571:7;11560:10;:19::i;:::-;11499:86;:::o;11591:71::-;11631:25;11645:10;11631:13;:25::i;:::-;11591:71::o;6481:353::-;6591:4;6634:1;6615:21;;:7;:21;;;;6607:30;;;;;;;;6687:50;6721:15;6687:8;:20;6696:10;6687:20;;;;;;;;;;;;;;;:29;6708:7;6687:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;6646:8;:20;6655:10;6646:20;;;;;;;;;;;;;;;:29;6667:7;6646:29;;;;;;;;;;;;;;;:92;;;;6771:7;6750:60;;6759:10;6750:60;;;6780:8;:20;6789:10;6780:20;;;;;;;;;;;;;;;:29;6801:7;6780:29;;;;;;;;;;;;;;;;6750:60;;;;;;;;;;;;;;;;;;6824:4;6817:11;;6481:353;;;;:::o;3645:130::-;3706:4;3719:32;3729:10;3741:2;3745:5;3719:9;:32::i;:::-;3765:4;3758:11;;3645:130;;;;:::o;11391:102::-;11447:4;11467:20;11479:7;11467;:11;;:20;;;;:::i;:::-;11460:27;;11391:102;;;:::o;3327:159::-;3430:7;3456:8;:15;3465:5;3456:15;;;;;;;;;;;;;;;:24;3472:7;3456:24;;;;;;;;;;;;;;;;3449:31;;3327:159;;;;:::o;10483:71::-;10523:25;10537:10;10523:13;:25::i;:::-;10483:71::o;13755:103::-;12992:9;:7;:9::i;:::-;12984:18;;;;;;;;13824:28;13843:8;13824:18;:28::i;:::-;13755:103;:::o;10391:86::-;10242:20;10251:10;10242:8;:20::i;:::-;10234:29;;;;;;;;10452:19;10463:7;10452:10;:19::i;:::-;10391:86;:::o;1731:136::-;1789:7;1827:9;1818:1;1813;:6;;1805:15;;;;;;;;1843:1;1839;:5;1827:17;;1860:1;1853:8;;1731:136;;;;;:::o;7042:284::-;7135:9;:15;7145:4;7135:15;;;;;;;;;;;;;;;;7126:5;:24;;7118:33;;;;;;;;7180:1;7166:16;;:2;:16;;;;7158:25;;;;;;;;7210:26;7230:5;7210:9;:15;7220:4;7210:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;7192:9;:15;7202:4;7192:15;;;;;;;;;;;;;;;:44;;;;7259:24;7277:5;7259:9;:13;7269:2;7259:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;7243:9;:13;7253:2;7243:13;;;;;;;;;;;;;;;:40;;;;7310:2;7295:25;;7304:4;7295:25;;;7314:5;7295:25;;;;;;;;;;;;;;;;;;7042:284;;;:::o;1935:136::-;1993:7;2009:9;2025:1;2021;:5;2009:17;;2046:1;2041;:6;;2033:15;;;;;;;;2064:1;2057:8;;1935:136;;;;;:::o;7662:240::-;7744:1;7733:7;:12;;;;7725:21;;;;;;;;7768:23;7785:5;7768:12;;:16;;:23;;;;:::i;:::-;7753:12;:38;;;;7819:29;7842:5;7819:9;:18;7829:7;7819:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;7798:9;:18;7808:7;7798:18;;;;;;;;;;;;;;;:50;;;;7881:7;7860:36;;7877:1;7860:36;;;7890:5;7860:36;;;;;;;;;;;;;;;;;;7662:240;;:::o;8122:285::-;8204:1;8193:7;:12;;;;8185:21;;;;;;;;8230:9;:18;8240:7;8230:18;;;;;;;;;;;;;;;;8221:5;:27;;8213:36;;;;;;;;8273:23;8290:5;8273:12;;:16;;:23;;;;:::i;:::-;8258:12;:38;;;;8324:29;8347:5;8324:9;:18;8334:7;8324:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;8303:9;:18;8313:7;8303:18;;;;;;;;;;;;;;;:50;;;;8391:1;8365:36;;8374:7;8365:36;;;8395:5;8365:36;;;;;;;;;;;;;;;;;;8122:285;;:::o;9772:173::-;9859:4;9902:1;9883:21;;:7;:21;;;;9875:30;;;;;;;;9919:4;:11;;:20;9931:7;9919:20;;;;;;;;;;;;;;;;;;;;;;;;;9912:27;;9772:173;;;;:::o;11668:111::-;11721:20;11733:7;11721;:11;;:20;;;;:::i;:::-;11765:7;11753:20;;;;;;;;;;;;11668:111;:::o;11785:119::-;11841:23;11856:7;11841;:14;;:23;;;;:::i;:::-;11890:7;11876:22;;;;;;;;;;;;11785:119;:::o;10677:::-;10733:23;10748:7;10733;:14;;:23;;;;:::i;:::-;10782:7;10768:22;;;;;;;;;;;;10677:119;:::o;13998:173::-;14088:1;14068:22;;:8;:22;;;;14060:31;;;;;;;;14132:8;14103:38;;14124:6;;;;;;;;;;;14103:38;;;;;;;;;;;;14157:8;14148:6;;:17;;;;;;;;;;;;;;;;;;13998:173;:::o;10560:111::-;10613:20;10625:7;10613;:11;;:20;;;;:::i;:::-;10657:7;10645:20;;;;;;;;;;;;10560:111;:::o;9270:172::-;9362:1;9343:21;;:7;:21;;;;9335:30;;;;;;;;9381:18;9385:4;9391:7;9381:3;:18::i;:::-;9380:19;9372:28;;;;;;;;9432:4;9409;:11;;:20;9421:7;9409:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;9270:172;;:::o;9513:175::-;9608:1;9589:21;;:7;:21;;;;9581:30;;;;;;;;9626:18;9630:4;9636:7;9626:3;:18::i;:::-;9618:27;;;;;;;;9677:5;9654:4;:11;;:20;9666:7;9654:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;9513:175;;:::o

Swarm Source

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